How to define a galaxy... #2132
Replies: 11 comments 1 reply
-
First things first: I don't know how anyone else would do this but I would suggest the simplest system is a development or first time Naev is run set of algorythms that create a base galaxy that is then overridden by the actual files we authors provide (i.e. the sys and spob files). This galaxy is defined by hyperparameters based on the history of the Naev galaxy and starts primarily with population and is modified by faction files (which I don't think have the right information in them yet), system files (ditto) and then by spob files (have too much and not necessarily the right info. Beyond thisI don't think it will be very necessary to mess with individual things unless you want to introduce specific weirdness and that other systems can be built on this base. So I would envision a system that is created by history and population with systems and large-scale galactic phenomena providing a modifying influence with each faction at any period of time providing the basis for this... for example: Below is a slightly complicated image and a second graph that is also probably obvious (I hope so or else this will not likely be simple enough sigh) Zeroth time point: Sol is in the centre of the image with all the population (P on the graph - T is time). First time point: The first wave of expansion from Sol is in Dark Blue (the ships that left earth for fixed destinations that now only exist in the Frontier (etc.) This is a fixed population per system (but see later). Second time point: The Second wave (jump gates) is the red expansion (this is an exponential line from Sol based on system distance from earth, for simplicity - see graph). Third time point: The Incident causes a hard cutoff of population in the Cyan area. (Both map and Graph) - We can even decide if some people had time to leave after the Incident started but before it finished by adding small amounts of population overflow to what already exists (I would suggest a fixed percentage to all systems outside the Nebula + short distance (since people would not necessarily know where the line was. This gives us the basis of the population for all systems surrounding Sol assuming nothing untoward. This is where Galactic problems might be added in to divert population but since we have systems defined where people are already why worry about it, we just say that anywhere where there is not a defined system people can't have gone - this means that we have a way to work out the base population of systems that have yet to be added to Naev! :) Now is when factions come in - here we need to add a few things to the Faction files: centre point (this could be government (eg Empire), homeworld (Za'Lek), religious centre (eg Sirius) or simply origin (eg Soromid) - if we are being ambitious we could have the ability to have multiple centre points and either average them or go whole hog and define an area with them and have things work outwards from the nearest point. Fourth time point: The other colours on the Map (not noted on the graph as it's too complicated for a simple graph because... see below) These expansions are of population under the control of a faction's government at the point they start to exist with new waves contuning from that point until the present based on new factions appearing and general population increase (post disaster human populations often, though not always, experience large population growth so we can assume that there is still population growth at this point...) over time - having said that this would be measured in generations... So currently we have the following things; centrepoints for each faction (including Sol) and equations for the amount of population these centrepoints add (two for Sol, one linear, the other exponential and one for each of the Major factions - Soromid, Sirius, Empire, Dvaered, Za'Lek - percentage increase in population vs distance from Faction centre), we can also have ones for any other groups we want, eg Collective, and another new one for the Frontier which inherits the population values from the first wave expansion and then adds its own growth since then with Dawn (I think) as the centrepoint. Back to the original point of this... to calculate population (although this same set of equations could also be used to calculate influence / prescence but it might be better to do that once we have populations to work with (though it is maybe a passable/quick first pass). ). We now have the poplation of any system or spob anywhere within reach of Sol but we haven't taken into account spobs and how viable for life they are... so. To handle this exactly is maybe too much and also unrealistic given our assumptions are already broad (even expansion etc.) so I suggest:
We now have the potential population of all systems in the known galaxy and can work it out for unknown systems of the galaxy if we also know their history. This potential population should probably be set approximately such that it is the maximal population on a perfect M class world with no terraforming necessary. Each planetary class is given a viability index - how likely people are to live on the planet - this should take into account potential industry... minable worlds (eg metalic worlds, gas giants) should increase viability. I suggest that every class that has no/corrosive atmosphere or land (eg Oceanic) have their viability halved due ot the difficulty of building air/watertight habitations. I would suggest that gas giant and station classes have their viability halved once everything else is taken into account since the effort of building a space station is so much greater than one on a surface. This means that space stations and gas giants would have the quarter of the viability of an equal class where there was non-toxic atmosphere and land to build. It might even make more sense to recreate the class system with metaparameters that could make this and other systems more simple e.g. type of atmosphere, type of land, has water?, has plentiful metals?, has plentiful minerals? etc. I would suggest that the class includes a definition for how far from a sun it would be found, approximately (though this also depends on the colour/size of the star but we don't have control over that at present?) Each system description should include either the spob's unique name (from which its class can be found) or the name "Class X" (where X is the class of the spob - see below). The potential population of a system is reduced by a set amount for each "problem" in the system e.g. plasma storms, interference etc.
At this point we don't actually need any other information for for spobs with minimal population since they can be named automatically (eg closest to furthest from star, star_name+roman_numeral), eterior shots can be matched to spob class and basic services set - this would reduce the number of spob files and the need to maintain them at the same time as allowing new systems to be set up relatively quickly and easily and the use of spob files could be used to just override where wanted or necessary (faction can be assumed fairly easily in a lot of cases and edge cases can be independant and, anyway, overridden with a spob file). At this point all Soromid faction worlds could be given bonus population and have extra colonies added to less viable worlds given their hardiness. Once we have population and planetary class we can work out advantages of the spob vs others around them by, for example, distance from faction centre (closer more likely to be more advanced in tech and trade, close and far more likely to have greater military presence, has lots of minerals / metals - has mining industry therefore more likely to be poor - needs to build atmospheric domes, poorer, less "urban") and we can also add factional differences here, more advanced tech on a Soromid world means more likely to be a medicinal world, more population means it is more likely to be a Dvaered warlord homeworld, more wealth is more likely on a government, urban, trade world which means more likely to be touristic and, in Sirius space, have higher level castes and so more academic economic / religious leanings, Za'Lek worlds closer to Radaon (sp?) have higher development overall compared to their edge worlds except in terms of military. Shipbuilding spobs require raw materials and good tech worlds nearby to supply materials and people, ditto spacestation construction. So a lot of things can fall out of this without needing to explicitly create this data but if we have spob files override these defaults we can apply the spob files after we just have population and class and then calculate on that basis. How easy this would be to calculate if there were unidiff changes might be okay depending on how extensive those changes were but it would mean that unidiff changes would need to be less extensive but would also show greater impact if a recalculation was done after their application (though I guess this could be optionally specified in the unidiff?) Annnnd... I'm out of time... please feel free to comment on parts or the whole of this and I'm sorry it is so long and also that I feel like there is no way I can manage almost any of this but that I'm kinda rewriting large parts of the Naev system with it (despite the fact that many of the systems fixable by this seemed to be up for improving anyway...) |
Beta Was this translation helpful? Give feedback.
-
Wow, that's a long text. Let me start of by giving a sort of high-level comment on the core idea.
While it would be cool to redo the entire universe from scratch, using a mixture of procedurally generated content with lots of modifications, I do think this is an enormous undertaking and probably not the best thing to do atm. The main question I think would be, "What would be the minimum set of changes to make the universe feel like the Naev timeline makes sense and the player gets the impressions we are trying to make?" To answer that we can sort of think of what we want the player to feel. I can think of the following (heavily inspired by your text above):
I think this can be done mainly by moving around things and adding more systems in the current universe. Most of the issues will be in changing flavour texts and making more sparse young areas with everything feeling less crowded. I think most of the change would probably have to happen around the Nebula with derelicts/inert stuff on the border, while lots of crowded and densely populated systems just out of there. It is also important to note that the Incident doesn't affect all factions equally. I guess places like Za'lek and Soromid are far enough to not be too affected, while Empire, Dvaered, and Sirius would need more changes. Finally, when I mentioned parametrizing stuff, I was thinking at much lower level. Basically, how to locally parametrize spobs and the connections between them to automatically generate safe lanes. Not so much of "how to procedurally define and create a universe", although I do think it's a very good intellectual exercise and even if not implemented, the thought process can be used to try to improve what we have. :) |
Beta Was this translation helpful? Give feedback.
-
So, from before I read @bobbens comment: history -> old I think that research / medical / shipbuilding have to be author implemented the amount of tech above defines tech_level |
Beta Was this translation helpful? Give feedback.
-
I feel like, as an author, that I would like to have kinda heat maps or something like this to help me implement the handmade galaxy because I find it difficult to know how muhc a large population is or a small one. It is also tedious to keep creating lots of spobs that are for uninhabited worlds so even just a script that could autogenerate these for me and then store them somewhere different or mark them in their name as autogenerted would help in their creation and maintenance - of course if they could essentially be defined in the system file by giving their class there (and I feel that not being able to use the name "Class" for a spob is a small loss for this) and autogenerating everything else would benefit from many fewer spobs (and therefore trade lane calculations as well as a smaller spob table for all the things that depend on that eg creating most of the repeating missions that require generated destinations). For autogenerated uninhabited spobs all that is needed is a keyword in the system xml file that contains the class of the object - the class can be used to generate position and image file to use. That's pretty minimal. The history of the galaxy is what is needed for a population heatmap. Population movements are I think the biggest thing though... I think we could do this more easily if populations were actually able to move from one planet to the next and if there was a clear "direction of travel" by ships... away from the nebula and over-populated worlds... An example of something that could be set by tags that I really think should be already is the landing bribary thing since we have tags for military / restricted / rich / poor already so I feel like that is an easy win (of course I wouldn't have the old landing stuff removed since maybe an authoir would want to override the default that the tags would put in place... |
Beta Was this translation helpful? Give feedback.
-
Looking through so many spobs I really do feel this is where some love and attention could do with being devoted because it is really difficult to get a feel for where a spob is outside of the Frontier worlds in terms of distance from the nebula and I think this is partly due to the difficulty of knowing what sort of population or trade or anything should be set wihtout someone going through all of them and creating a consistant feeling, which is difficult with over a thousand spobs! Yes, this is probably me having spent a lot (too much?) time with spobs recently! ;) |
Beta Was this translation helpful? Give feedback.
-
List of ways to make things seem more dynamic (and maybe interesting)... this is not a wish list just a brain storming: Have spobs orbit and therefore move within a system, this needn't be very fast - it would mean that spobs would have to be changed from positional to at a distance from the sun and they would move relative to each other but this would likely have the player give more allowance for systems where the spobs are all clustered on one side and could be done relatively easily as I understand most things are realtive to spobs rather than positionally fixed... it would require the change of pobs positions but then again their distance from the sun could be calculated from that and added with a script. It would also make some of the slightly odd shaped trade lanes make more sense and become better over time. Have trade ships never turn around when they hit a jump point and travel back the way they came... in fact I'd argue that trade ships and the like should always jump at jump point with only patrols turning around (or maybe I imagined this as a problem?) Have dynamic tags that change depending on player input... for example have a space station where there is overpopulation, the player arrives with a thousand tons of industrial equipment and ores, after a set time there is no overpopulation but now there is a need for more food, player delivers and next time things have stabilised... equally the player could arrive with too much food and the station refuse to buy it (due to space constraints - a thousand tonnes of water is a lot to store on a station housing 100 people, for example), this might lead to spobs asking the player to take things away... or maybe the player could transport refugees to larger spobs... A tractor beam that lets the player drag derelict to the nearest spob have there be a definite direction to the way ships move across the galaxy... trade ships towards the nebula bringing materials to overpopulated worlds and aid to refugees and old and cheap ships heading the other way - the trade ships should have escorts and the old ships of refugees should not... the pirates should also avoid attackig the refugee ships - some traders going the same way as the refugee ships (away from the nebula) should tractor beam derelicts behind them - this would require tractored ships to be able to jump due to their lead vessel so this might be anti-lore). have the worlds further away from the nebula be largely independant or with some allied to "The New Frontier" - this New Frontier would be opposed to the Empire seeing them as the cause of all the grief and trouble for them - refugees who have had to travel all the way thorugh their space and keep getting moved on until they find new worlds. missions to tractor beam/ and or establish new stations (refuel opr small mining colonies) - on top of a much more general shift of trade prices near the nebula being high for medicine, water, luxuries and systems away from the nebula and towards the edge having much higher prices for ores, industrial, food, building materials, esssnetially, for new colonies. One of the limits I'm trying to work within is the player not really being able to change things but the problem with that limitationis that it reduces how dynamic we can make the galaxy feel - it's hard ot have things different and changing when the player can't really do much about that unless we use unidiffs to keep adding new colonies over time? Maybe this can even happen without player intereaction but then that is a lot of unidioffs and I thought we were suppose to limit those? I feel like all the above are relatively low effort but the ask is relatively big and I'm trying to avoid the transcendance trap of having players be able to completely mess up thier galaxy... my only playthrough the trial I wasn't able to trade with anyone any more because they refused to buy stuff I have sold them so much stuff, there were half as many stations and colonies because I had destroyed so many - seems a little excessive to be able to destroy a whole station wihtout almost any resistance but hey there you go and due to the destroyed spobs spawning of enemies was massively reduced and everything became rather stagnant and due to fuel and energy being a constantly depleating source andhaving run out of many sources of generating revenue this whole trial of the game was likely to be over in less than a hundred hours of play, probably less than fifty, because the entire game was exhausted and I could no longer fly my ship. On the other hand it was extremely dynamic and there was a clear flow to the game - though I'd have said it was not nearly explicit enough that you could not experience all play styles and game content in one playthrough meaning that I did badly in some places because I was trying to be too completionist in one runthorough. To contrast, Naev has many more hours of content and most, is doable in one playthrough - I don't know if we want to keep that try? I guess I feel like there should be a balance between the two in both handcrafting and automation.... but then maybe it can be helped with more automation that helps authors write more handcrafted stuff... hence feeling the ideas above are helpful even if they are only used as guides or scripts to create a base set of information that an author can use to create their own work and then make more unique.... it's kinda why I added the "unique_selling_point" stuff in the tag generation stuff later but still above! :) Anwya, too much typing... hope to hear more ideas and maybe we can build some concensus out of this, even if it is that I'm wrong and should go back to handcrafting all the tags and techs :P ;) |
Beta Was this translation helpful? Give feedback.
-
Yes, it would be nice to have more tools to help out. The in-game editor has a lot of new view modes for stuff like that. You can visualize the presence of a certain faction easily. Also list other things like what techs are available, and asteroids. It can be improved more, but it would be also complementary to add some guidelines and helper maps to do that sort of stuff.
I find the hardest part of creating uninhabited spobs to be choosing names. We should try to get a random name generator.
It should be possible to visualize the safe lane values. Or are you thinking of something more?
I actually want to redo that with the new spob Lua stuff, just haven't gotten around to it. Should be able to make it much nicer, while also redoing the comm window and having it make sense. The bribe should depend on your ship, so a dingy llama won't have issues but a fully armed carrier would have to pay much more.
Honestly I don't think this adds much other than complexity. It'll also be harder to define spobs.
This is something we should fix, but it's because the AI doesn't really plan anything atm. It just chooses X random places to go to before leaving the system. It should be possible to make them actually have more logical and natural behaviours.
This can be done with unidiffs, but they can't be done dynamically. The main issue is that it can lead to incoherent universe states if we change how stuff is implemented. I would try to stay away from doing pure dynamic things and just try to use the unidiff system when applicable to make things less likely to catch on fire.
Could be cool if done well.
Yeah, as mentioned above, if the AI actually has natural behaviours that are defined by the safe lane generation internal values, we would get this sort of natural movement automagically and tune as needed.
Yes, that would be totally cool. I mentioned that a bit above with the older systems near the nebula and newer ones away from there.
There's an issue on having dynamic pirate stations. If that is implemented, it would be trivial to extend it to small mining stations or refueling stations that are dynamically created and the player can save on.
I would keep things somewhat discrete. Like with the hypergates, I plan to add at least 5 stages:
This system can be extended here and there. I would really stay away from a truly dynamic universe, as mentioned above, this leads to lots of compatibility / saving issues and has the potential to mess lots of things u.
I think the lack of dynamism will mainly be solved with the chapter system. For example, in a Za'lek playthrough some changes that will happen are:
That is just the major campaign stuff, with lots more minor things, but things like the big explosion in Za'lek space are triggered by the player. Naev development has mainly focused on adding features and smaller campaigns, and hasn't really tackled really major things yet. Although I was hoping to outsource some of that stuff, that changed a bit as I started brainstorming and working on the Za'lek main campaign last year. As more and more major story content gets added, I think there will be much more dynamism to the universe. However, I don't think we have to go too far and have all the player's actions influence things. That can just lead to things breaking as you gave an example, while not really improving the player's game experience imho.
I agree. Which is why I think we have to create more development tools to help out. I've been improving significantly the universe editor to add support for asteroids and such when I redid them a while ago. Also added more tools to look at presences and work with them. It can still be improved more if you have ideas. It would make sense to, for example, write a small python library to load the Naev data universe files and allow that to run queries or do computations. It could potentially allow for visualizing population and movement among other things. However, I am fairly skeptical of algorithmically created contents, and prefer to do things the "old fashioned way" when possible, while relying on lots of algorithms to provide insights on what is being done. |
Beta Was this translation helpful? Give feedback.
-
So there is a lot here but, to be honest, my reply to all of it is "Yes" and "Sounds Good" (and occassional "cool, more stuff I wasn't aware of but is good to know!" :) - we seem to be on broadly the same wavelength. One expanded response though: Trade lane visualisation - yes, that'd be great! It'd help when craeting a new system to be able to know what the trade lanes were going to be so that things could be changed so the trade lanes are more to my liking ;) - this presumes that they will continue to be autogenerated rather being definable in the system file.) The five stage thing, I guess, means we've a lot more time to play with in showing a dynamic galaxy so maybe it is just because Naev is still in the early stage that it seems laking in dynamism... |
Beta Was this translation helpful? Give feedback.
-
While tagging and thinking about Naev history I wonder if it would make sense to change "new" and "old" to being more fixed ages... without meaning to steal the nomenclature... could we have: zeroth age - pre interstellar flight - only applies to Sol system. |
Beta Was this translation helpful? Give feedback.
-
This does change things a lot. Some short feedback:
|
Beta Was this translation helpful? Give feedback.
-
Sorry for the late response. New semester and all that.
Keeping it simple is good.
Sounds good. It should also be flexible enough to handle more complicated cases like second+third or whatever.
Yeah, having it more explicit and simple should make it easier to have a consistent lore. This does make me want to try to implement #1865 (in-game information hub), so we can organize things more easily and have more consistent lore. It would be great to have the building style and even the clothes of the civilians to reflect the spob details, however, this may be a bit too unrealistic to do in the short term. That said, with the information hub, we could potentially add more lore about planets and the likes (maybe even with interactive maps!) to really flesh out things.
That's similar to something I want to do for faction-specific GUI. However, for landing interface, I do think it would be best to keep things consistent placement-wise, and instead just change some cosmetics or smaller details. Things like renaming the spaceport bar tab, or even adding an additional tab could be interesting.
Possible in several different ways:
|
Beta Was this translation helpful? Give feedback.
-
The basic suggestion from @bobbens is to create a set of hyperparameters that can be used to define the galaxy... and we seem to keep arriving at this for every problem we're having with defining a whole bunch of stuff so I'm creating this discussion and then going to link any discussions I find that tie into it to here; this is a current list I know of potentially relevant discussions:
Trade: #2127
Techs: #2128
Population and guilds: #2088
Contraband: #2089
Rewards for missions: #2106
New (uninhabited) systems: #1866
I'm now going to post this discussion to link to it and then add some potential ideas to solve it and how to handle the transition from now to it gracefully... maybe ;)
Beta Was this translation helpful? Give feedback.
All reactions