Skip to content

Factions #1505

Merged
merged 34 commits into from Oct 1, 2012

6 participants

@fluffyfreak

This is the result of work I originally discussed in issue #1266.

This is a preliminary pull request to get feedback and ideas from fellow developers about the things they love, like, dislike and loathe about the implementation so far... also there is the outside hope that it's already good enough ;)

Data

It's reached the stage where factions can be defined in Lua files that are currently located in the "data/factions" folder and I have supplied 4 so far:
00_default.lua
01_federation.lua
02_CIS.lua
03_red.lua

The StarSystems' use a very simple distance test to determine which Faction they belong to and which is only limited in scope by a radius defined using the date they were founded and a rate of expansion.

Outside of any of the factions defined within the Lua files the game will still create random systems based on the older Polit code although it has been modified slightly.

Known issues

  1. The year used to calculate the radius of a factions volume is hard coded to the year 3200.
    • the reason for this is that on loading a saved game the game object is not yet accessible when the star systems are recreated.
  2. Goods prices are not uniquely priced across different factions.
    • I imagine in future a system could work like the legal/illegal goods system where a base price is overloaded on a per item basis.
  3. Independent systems (light pink) have no illegal goods - an unlikely situation.
  4. There is no translation route for a factions descriptions or names (police, military, etc).

There are a number of parameters stored on a Faction that are not in use at the moment such as the police and military names, also the descriptions for a faction are not shown anywhere.
It might be wise to have the ships log that records crimes to also show more information about each faction that you can have a crime against display information about that faction. Suggestions are welcome!

fluffyfreak added some commits Sep 2, 2012
@fluffyfreak fluffyfreak Bring the factions00 setup over. Nothing fancy so far.
It creates the basic factions data but nothing uses it.
437e50b
@fluffyfreak fluffyfreak Give each faction a spurious founding year. 962a4f2
@fluffyfreak fluffyfreak Add Factions to the pch.
Add utility function to extract the current year.
have the polit use the factions.
Add method to get the nearest faction to a SystemPath.
e6516e9
@fluffyfreak fluffyfreak Update factions definitions with differing expansion rates.
Change RED empires start date to balance it's expansion rate relative to the players game start time.
Fix the current date calculation when getting the nearest faction.
Early out of nearest faction test if the homeworld matches current sector.
ba044b3
@fluffyfreak fluffyfreak Bring the factions00 setup over. Nothing fancy so far.
It creates the basic factions data but nothing uses it.
2c65c23
@fluffyfreak fluffyfreak Give each faction a spurious founding year. 3da9d38
@fluffyfreak fluffyfreak Add Factions to the pch.
Add utility function to extract the current year.
have the polit use the factions.
Add method to get the nearest faction to a SystemPath.
b2b5628
@fluffyfreak fluffyfreak Update factions definitions with differing expansion rates.
Change RED empires start date to balance it's expansion rate relative to the players game start time.
Fix the current date calculation when getting the nearest faction.
Early out of nearest faction test if the homeworld matches current sector.
57d11ea
@fluffyfreak fluffyfreak Merge branch 'factions01' of github.com:fluffyfreak/pioneer into fact…
…ions01
242ef74
@fluffyfreak fluffyfreak Add Factions files to project and filters 9696ee2
@fluffyfreak fluffyfreak Remove the get_year utility function. 591fdbb
@fluffyfreak fluffyfreak Add the CIS faction.
Add a new string for FACTION.
Change when and where I go finding the nearest faction.
Store what faction (index) a StarSystem belongs to.
Display the faction below allegiance, temporary, in SystemInfoView.
7a9f4ea
@fluffyfreak fluffyfreak A work-in-progress attempt to associate the tracking of crimes across…
… political blocks with the new factions system.

Removes the hardcoded political blocs.
Needs some serious rethinking of all this, there currently multiple routes to getting faction info or political association. This is not a good thing.
79c0873
@fluffyfreak fluffyfreak Merge branch 'master' into factions01
Conflicts:
	win32/vc2010/pioneer.vcxproj.filters
496b1fa
@fluffyfreak fluffyfreak Deprecated the GetFactionName from StarSystem.
Removed call to GetFactionName from SystemInfoView.
Added Equip::Type legality map and pair.
Added Lua function to Faction to set equipment legality.
Setup the legal data for each of the factions.
c59422d
@fluffyfreak fluffyfreak Make the default govType initialisation for a CustomSystem be GOV_INV…
…ALID thus forcing the Polit system to try and find it one if the scripts don't set on up. Was GOV_NONE previously which is the valid default type for unpopulated systems.
6f25e66
@fluffyfreak fluffyfreak Render each star system based on it's associated faction colour.
Add the colour to the factions class and to the faction lua files.
f5f723c
@fluffyfreak fluffyfreak Deleted some dead commented code.
Made a parameter const in Polit.
5681b0a
@fluffyfreak fluffyfreak Made Independent faction have light pink text!
Correct the distance calculation.
Also fix a crash I'd missed earlier.
33927d8
@walterar

[...]

CXX enum_table.o
CXX LuaModelViewer.o
CXXLD pioneer
CXXLD modelviewer
Pi.o: In function Pi::Init()':
Pi.cpp:(.text+0xd6c): undefined reference to
Faction::Init()'
Polit.o: In function Polit::Init()':
Polit.cpp:(.text+0x28): undefined reference to
Faction::GetNumFactions()'
Polit.cpp:(.text+0xc9): undefined reference to Faction::GetFaction(unsigned int)'
Polit.o: In function
Polit::GetSysPolitStarSystem(StarSystem const, fixedf<32>, SysPolit&)':
Polit.cpp:(.text+0xa11): undefined reference to Faction::GetFaction(unsigned int)'
Polit.o: In function
Polit::IsCommodityLegal(StarSystem const
, Equip::Type)':
Polit.cpp:(.text+0xc14): undefined reference to Faction::GetFaction(unsigned int)'
Polit.o: In function
SysPolit::GetAllegianceDesc() const':
Polit.cpp:(.text+0xe62): undefined reference to Faction::GetFaction(unsigned int)'
galaxy/libgalaxy.a(StarSystem.o): In function
StarSystem::GetFactionColour() const':
StarSystem.cpp:(.text+0x8cc0): undefined reference to Faction::GetFaction(unsigned int)'
galaxy/libgalaxy.a(StarSystem.o): In function
StarSystem::Populate(bool)':
StarSystem.cpp:(.text+0x8f0f): undefined reference to `Faction::GetNearestFactionIndex(SystemPath const&)'
collect2: ld returned 1 exit status
make[2]: *** [pioneer] Error 1

@robn
Pioneer Space Sim member
robn commented Sep 12, 2012

I've updated this to master, added Linux/autotools build stuff and fixed a bunch of build errors on robn/factions.

@walterar

robn/factions Merges seamlessly with master and compiles without error. Testing.

@fluffyfreak

Yeah I don't have a Linux build to play (anymore) with so my commits are VS2010 only :)

@walterar

@fluffyfreak In the opinion of Tomm (and others), you are still in the "dark side". :)

@fluffyfreak

Does anyone have a solution for the hard coding of the "current year" issue I mentioned?
It's something that I'd quite liked to have gotten in but didn't get my head around.

@walterar

From the standpoint of the player.
Something little that should be see is that labels are too dark (barely visible), when out of range hyperspace. I changed labelColor.a = 0.65f (before .25f) in SectorView.cpp and now this ok for my tired eyes. Note that, when we seek the best route between systems, we have not loaded fuel yet. This could be configurable (as the colors) in the future?

@robn
Pioneer Space Sim member
robn commented Sep 17, 2012

Just so you know this hasn't been forgotten. I'm intending to review it this week, hopefully starting tomorrow morning.

@fluffyfreak

No worries, there's ~25 other commits waiting too :) I just wanted to get my branch back up to date to deal with any feedback or solutions to problems.

@fluffyfreak fluffyfreak Increase the alpha value for inhabited systems. Still trying to keep …
…it dark enough to be visually distinct but bright enough to be visible. Tricky when the colour is blue!
1265371
@Ae-2222
Ae-2222 commented Sep 18, 2012

Great work:)

From a first view it's pretty much as discussed before, and lays the foundations well.

I'll look at some initial generation of some of the faction state procedurally/animating the factions procedurally, over the next few weeks, assuming I get time (these things are a bit investigative/algorithmic so can't say when exactly).

@robn robn Merge branch 'master' into factions
Conflicts:
	src/SystemInfoView.cpp
e36ce43
@robn
Pioneer Space Sim member
robn commented Sep 19, 2012

Ok, I've done a read-through. How much feedback are you looking for right now? I can talk about crappy stuff like formatting and naming, or more structural stuff, or whatever. I don't think there's anything hugely wrong with the concept though.

With the year thing, if I'm reading this right, it looks like the problem is that you're calling GetNearestFaction during system generation in StarSystem::Populate, but you don't actually need its data there. What you could do is call it and set it in GetFactionColour if its not already set. That's not going to be called until much later, when Pi::Game already exists.

That said, I think this is structurally incorrect. I don't see why StarSystem should know anything about factions, since they can be determined entirely from the system location. I'd prefer that they don't get entangled with each other - StarSystem does not need any more baggage.

@fluffyfreak

@robn
All feedback welcome, even if you decide we can leave bits until a later commit/branch it's helpful to discuss them here :)

Structurally, I gave StarSystem the faction index because it means it's only generated once and then referred too repeatedly elsewhere and couldn't see where else to put it. Finding the faction a StarSystem belongs too is fairly cheap right now, but if it's done for a few tens of StarSystems and if there are eventually a few tens of factions then it becomes a burden to do it on each access. GetNearestFaction isn't cheap enough to be called for, for example, each StarSystem that needs rendering per-frame in the SectorView.

That said I will have a look and see if I can find a better way of doing it, or, a better place/way to store it without the repeat cost of finding which faction etc.

@Ae-2222
Ae-2222 commented Sep 20, 2012

Finding the faction a StarSystem belongs too is fairly cheap right now, but if it's done for a few tens of StarSystems and if there are eventually a few tens of factions then it becomes a burden to do it on each access

When factions occupy different non-contiguous areas due to colonisation/war or when numerous small factions are automatically generated, it will be worse.

We can set up a tree to divide up the 'inhabited volume' when that happens (bintree division of angle on the galactic plane relative to a center at sol, quadtree on the galactic plane, or octtree if there's interesting vertical features etc.). It's possible to store faction identity in terms of regions made up of individual sectors, systems, or 'radial volume definitions (possibly with weightings)' in the terminating leaves of the tree which are tested against the current system/sector. Also it's possible to use a tree with variable boundary points, set up iteratively during init, according to distribution of leaves falling under each branch, using medians.


a better place/way to store it without the repeat cost of finding which faction etc.

Until we actually get a lot of faction regions, a list should suffice..

  • Taking the quickest option, faction ids/radii/centers could be kept in a std::vector somewhere and updated periodically (about the time it takes for the fastest faction to expand a sector ~8ly). Then it's just a matter of testing the square of the distance from the faction center against the square of the bounding radius (avoiding the unnecessary iterative sqrt) for a fast comparison. Possible to do 4 comparisons at a time using sse intrinsics, but overkill for now.
@fluffyfreak

AH HA! now I remember why StarSystem has to know about factions, I knew that wasn't the only reason for putting it there! :)

Prices for trade goods and legality of items is also controlled via StarSystem and since the factions can control the legality of items - and eventually prices differences of trade goods - it needs to access the factions to find that data.

I can also see a time when people might want to have certain colonisation tendencies like favouring space stations and moons over rocky worlds etc or vice versa and all of that setup is done within the "StarSystem::Populate" method which means that's where it has to know which faction an inhabited system belongs to.

Which is why it's not just the colour that matters and why I can't do a lazy evaluation when it's first queried, it's also why I had to add a dependency on factions to StarSystem.

Unless anyone can see a way of keeping those abilities whilst still removing the dependency and/or fixing the "year" issue from above?

@fluffyfreak

That does however highlight that I should probably move the factions.cpp/h into the galaxy subfolder and move it to the galaxy project/lib.

@robn
Pioneer Space Sim member
robn commented Sep 20, 2012

At this point I'm probably going to have to shrug.

The plan for the sysgen is to disentangle it and turn it into a layered thing. At Pioneer start we will load the base systems, including custom stars and whatever. At game start/load we will apply changes to this base galaxy, adding stations, removing planets, renaming things, whatever has to happen. We keep those changes as a list of ops and save them when we save the game. And in-game events will be able to trigger these things too, so a mission could create a space station or blow up a moon or whatever.

So I'd expect that factions would have some kind of mainloop that periodically acquired a planet, built a station, or whatever.

Unfortunately the sysgen really needs to be redesigned and rebuilt to do anything like that. I spent a couple of weeks on it recently and the current set of algorithms really can't be structured in a way that will support this. Right now the choice of planets influences the population, which influences the creation of starports. Its too complex to explain right here.

So I wonder if its perhaps too early to effectively model faction growth?

@Brianetta

or blow up a moon or whatever.

Let's not get completely carried away... even if you managed to scrape together the energy to do this, the bits would probably clump together and form, er...

...a moon.

@robn
Pioneer Space Sim member
robn commented Sep 20, 2012

Lord Moon is dead, long live Lord Moon.

@fluffyfreak

@robn
Ok so it's too early to enable faction growth, but is the rest of it ok or does adding stuff to StarSystem rule it out?

You mentioned some naming convention stuff and I'm guess there's also some structural stuff that isn't optimal.

I'll trying to get things done on all this as fast as possible once I know of anything that needs changing.

@robn
Pioneer Space Sim member
robn commented Sep 21, 2012

So I've had a good think about this and chatted to a couple of people as well.

Personally my constant battle is between not wanting to pile more mess onto something that's already a mess, and getting useful features out there for testing and experimenting (and wanting to keep a motivated programmer happy!).

With factions, there's been loads of ideas being thrown around for months, but no clear direction on what we want. We're not game designers, I guess.

So with all that uncertainty, here's the plan for this pull request:

  • It will be merged, warts and all, touching StarSystem and whatever else. It may not be the right way long term, but that code is already a difficult mess to clean up and its not fair to you or useful to the project as a whole to delay this indefinitely.
  • There are some basic points of style that need to be fixed (naming, spacing, etc) but that's easy enough to take care of, and I'll probably just do that tonight rather than try to explain it all (can't do it now, I'm at work)
  • We have backstory that defines a few factions from @Thargoid already (on the old wiki, still needs to be moved to the new wiki). Again, in the interests of moving this forward, I'm going to tentatively bless it into canon and say that this PR should include those factions as a baseline. Moving that backstory into the wiki and getting it into the game is something I'm willing to work on, and will make an attempt at this week. Obviously if anyone wants to work on it they're free to and that would help a lot, but I'll do it if not.

I think we'll have to consider this experimental, and it might all be ripped out, but that's par for the course around here. Hopefully we'll get some good feedback on how some of this stuff should work.

Does that all sound reasonable? I hope it makes sense.

@fluffyfreak

People confuse game design with story writing ;)
The difference is actually pretty simple;

  • Game Design is about the creating the systems that leads to the player creating their own story through gameplay,
  • Story Writing is about describing the world where the player will create their own story.

That all sounds perfectly reasonable, it is experimental and I expect that one day it will either have been replaced by the-new-hotness or it will have been refactored beyond all recognition!

@robn
Pioneer Space Sim member
robn commented Sep 24, 2012

robn/factions has a bunch of cleanup. Codewise I'm happy* for this to be merged. I do need to go over the @Thargoid's backstory and hook it up, but I'm inclined to say we should just take-this as-is as placeholder factions.

*General confusion as described above notwithstanding.

@fluffyfreak

I expect that once it's in and people can start playing around adding factions in their favourite colours we'll start to get requests for various new features.

I couldn't decide where I'd want the factions to do so I'm hoping that kind of group attack on it will reveal what people might want ;)

@johnbartholomew

I'm afraid I've got review comments as well (actually, just one):

The way illegal goods probability is handled seems really weird to me. Is there a particular reason for doing it this way? I would've expected illegal_goods_probability to just take a single probability value (or integer percentage if you want to avoid floating point here).

I'll leave wider thoughts about factions for the mailing list.

@fluffyfreak

@johnbartholomew I just kept it the same but with a different interface so that you could control it from Lua rather than having the values hardcoded.

I thought it was weird too but didn't want to mess with a known working system.

@johnbartholomew

I thought it was weird too but didn't want to mess with a known working system.

I'm not sure I'd call what we have at the moment a "known working system".

I don't think it's practical for us to lock down the galaxy yet (though we'll have to do that eventually), so I'd rather have the faction definitions make more sense and accept a change to current behaviour. It shouldn't be difficult to keep (close to) the current probabilities anyway, if you want to; e.g., rand.Int32(n) == 0 is true with a probability of (1/n).

@fluffyfreak

rand.Int32(n) == 0 is true with a probability of (1/n).

Yes but with that the closest you can get to a rare exclusion is 50% after that it gets worse because it's always 1/n. Whereas rand.Int32(n) != 0 gives you the chance to have 9/10 or 90% probability that something is illegal but with just a glimmer of hope that you find somewhere that legally sells for example: battle weapons.

Dunno, I can change it obviously but how do we account for that case?

@johnbartholomew

Dunno, I can change it obviously but how do we account for that case?

Given a probability p from 0 to 1, you can just do rand.Double() < p, or if you want to avoid potential rounding problems with floating point (which you probably should) then, something like:

int legal_p; // probability out of 10000
bool legal = (rand.Int32(10000) < legal_p);

rand.Int32(n) == 0 is equivalent to legal_p = 10000 / n. The inverted test rand.Int32(n) != 0 is equivalent to legal_p = 10000 - (10000 / n).

@johnbartholomew

To clarify, my concern is that parameters of the illegal_goods_probability function are difficult to understand (and therefore difficult to use). I think it's simpler if that function just takes a single probability value. So, if you want a 90% probability that BATTLE_WEAPONS is illegal you just have f:illegal_goods_probability('BATTLE_WEAPONS', 90) (or 9000 if it's out of 10000, or 0.9 if it's a floating point, or whatever -- but something that directly represents "90%"). The existing probability values can be converted into that form quite simply.

@fluffyfreak

Ah I see, ok yeah then I'll see about making that change in a minute :) Cheers John.

Is there anything else obviously wrong? Or just stuff that you dislike about the system?

@johnbartholomew

Is there anything else obviously wrong? Or just stuff that you dislike about the system?

Nothing else obviously wrong (maybe some subtle things that I haven't noticed :P). It's not very nice specifying homeworld with system index + body index, but we don't have any other way to specify it so that's the the only way to do it for now.

For the system as a whole, my difficulty with it stems from not knowing what I want the thing to look like long term. I'm not sure what specific implementable features I want. As a player I'm much more interested in seeing factions through consistent backstory and style of writing in missions, system descriptions, news/journal articles (like FFE) and so on than I am in seeing "Faction: RED" labels on systems. Unfortunately, building the backstory for an entire galaxy and showing it through all the writing in the game is a much longer term project that we haven't really got geared up for yet. It's not something that can be done in just a couple of pull requests.

I don't deny that we need specific features (not just writing within the existing framework) to help generate and manage our galactic world building, but I'm not sure exactly what those features should be because I don't have enough of the picture built in my head yet. That makes it hard to give good comments except for basic quality-of-implementation feedback.

@fluffyfreak

For the system as a whole, my difficulty with it stems from not knowing what I want the thing to look like long term. I'm not sure what specific implementable features I want.

I don't deny that we need specific features (not just writing within the existing framework) to help generate and manage our galactic world building, but I'm not sure exactly what those features should be because I don't have enough of the picture built in my head yet.

This is part of why I wanted to do this in the way I have, no-one has a fully formed idea for it, and no-one is willing to try stuff out with it. Storylines are interesting things that describe what has happened but I'm not interested in the fabricated stories that others have written about various galactic empires. I'm interested in using factions and warring powers to provide gameplay.

The system that provides that might not look like the one I've written, but if we don't try to explore the possibilities and flesh out what we can do and what we want to do then I don't think we'll ever figure out what we do finally want.

Hence the "RED" faction actually, I was going to call it "The Empire" and decided to play on the RED vs BLUE joke from first person shooter games instead :)

edit: spelling and grammar errors abound I think I'll leave making those change until tomorrow!

@fluffyfreak fluffyfreak Change the legality of goods to use an integer percentage based test.
A bit tired so need to check these tomorrow but committing them for now.
c21bce4
@johnbartholomew

It looks like illegal_goods_probability is being given the probability that the item is legal, not the probability that it's illegal. Could we rename it to make that clearer? Or alternatively invert the test.

Other than that, are you happy with this yourself? (Your commit message says "A bit tired so need to check these tomorrow but committing them for now.", so I thought I'd better ask).

@fluffyfreak fluffyfreak Invert the legality test to represent the probability that something …
…is illegal rather than legal. Hopefully reduce confusion a bit.

Also made the percentage into an unsigned int.
43b260f
@fluffyfreak

Ok, hopefully cleared that up.

I was knackered that evening, so working out what the percentages should be was about my mental limit :)

I think I'm happy with it now but since the actual values are placeholder anyway I expect that both the values and the illegal items themselves will be changed to match the designs that @Thargoid has done.

@fluffyfreak

Somehow missed one of my changes, just pushed it now.

@johnbartholomew

I think this should be rand.Int32(100) >= per, right? Otherwise it's 1% off, 'cause rand.Int32(100) gives you a number from 0 to 99 inclusive. I don't think the special case for per == 0 is actually needed.

@Ae-2222
Ae-2222 commented Sep 30, 2012

and no-one is willing to try stuff out with it.

Part of the problem is that there is an enormous mountain of to-do things, in other areas, right in front of anyone's nose and a finite amount of time. Any contributor's to-do list it would run into hundreds of items:). A little like choosing between work on a propulsion/navigation system or work on a planetary descent system - both are needed and can be worked on simultaneously, but there is a natural inclination to solve the propulsion/navigation problem first, unless someone took a special interest. On the other hand breadth of gameplay is one of the things that makes frontier stand out, and helpful to the project's growth, so it would have been given priority sooner rather than later.
Some people do have ideas and have thought about it, but are often in the middle of other areas.

Another part is that people have learnt the theory and specialised in various areas and they need to weigh up the benefits of continuing in that area against changing tack.

For instance robn made a quick in-system FTL prototype following a lot of discussion which, among a lot of other things, precipitated that various prototypes would be needed..but people just gravitated back to their mountain of tasks.

Similarly, Brianetta and I started on an economy piratepad to serve as stimulus/starting-point when ever we get around to looking at it in force - outlining the design considerations (gaming hasn't really got much further than a trivial buy low/sell high mechanic as far as creating the interesting/exciting life of a trader in space adventure sims goes:), probably as a result of running out of time after implementing the other features) , the essentials of determining prices/trade activity/piracy, and distilling a minimal starting solution similar to your faction work..but I then got distracted by immediate tasks:). (I should to get back to finishing the write-up sometime)

I'm talking about things until now, there's nothing stopping others from taking a special interest and working on an area. Once work does start, like with factions, people will become motivated/stimulated and do related things.. people also tend to give priority to things which support others to continue.

Longish explanation, but just so you can see why things might have transpired.

This is part of why I wanted to do this in the way I have
but if we don't try to explore the possibilities and flesh out what we can do and what we want to do then I don't think we'll ever figure out what we do finally want.

Iteration is an essential part of opensource dev and one of it's strengths - since there are no deadlines we don't have to wait until a sequel to iterate seriously. What you've done is excellent, and needed..basically introducing an abstract entity called a faction, to expand on in any way we want.

@fluffyfreak

@Ae-2222 I only mean that people aren't willing to try things out in the area of factions. I've been involved with the project for more than a year and no-one seems to be doing the simple things with it (NB: factions).

What I do see is a lot of ideas about how cool a dynamic-RTS style system would be, or growing the factions, and discussions about story. None of those actually bring much gameplay to the "game" though. They're designs which don't really effect(/affect?) the players day-to-day actions or decisions in the game. Back stories are inert, mission based story arcs are limited to what's been designed and although some dynamic galaxy wide RTS might be interesting it's also complicated and good be very annoying for the player a some of the time whilst also being beyond their control.

Yet this kind of idea isn't a minor thing, people have been asking about it for years and we've actually got a series of releases labelled "alpha", which in my experience means "feature complete with known bugs", yet a system for handling factions has been missing all this time. It's really strange.

So all this is meant to be is a simple basis for future work but it's already taken 19 days of discussion to get this nearly agreed to go in.

@fluffyfreak

So all this is meant to be is a simple basis for future work but it's already taken 19 days of discussion to get this nearly agreed to go in.

Or to put it another way, there are things I'd like to do to extend this further already like:

  • I'd like to expose faction info via Lua for example so that it can be used in scripts to create new faction dependent missions,
  • prices of trade goods should be configurable per-faction & per-economy type,
  • a faction info page needs to be created to show the description and other data for each faction - possibly in the ship view pages,

...and there's probably a dozen more, in fact once this goes if (if this goes in) then I hope that people will suggest more things so that I can implement them.

Right now though I'm not touching the code except to deal with style and other bits because I don't want to jeopardise the chances of it getting merged.

@Ae-2222
Ae-2222 commented Oct 1, 2012

I only mean that people aren't willing to try things out in the area of factions
It's really strange

I just thought to explain the situation above as I thought there might be some element of you feeling frustrated/mystified:).

To sum it up:
The specific contributors were heavily involved in other areas. Tech with regards to building the physical world and on enabling technology like lua-ui/lua-equipment needed to support things. People like JohnJ who had some plans had a huge amount of other things on their plate. People work best when they 'scratch an itch' (feel some inspiration). The fact they had a lot of things they could directly implement and there was a desire to work on foundations first, combined with pure chance that the individuals involved really felt an itch to devote the minimum time to implement, resulted in.Brianetta did attempt an lua solution but ran into some technical problems and it fell by the wayside. Things might have been different if at least one person had got a start:)

Another similar area that would have a lot of visible impact is city gen (there's been a lot of research/thought but it's just chance that no one has yet to devote the minimum-ish block of time to implement a solid solution).

taken 19 days of discussion to get this nearly agreed to go in.

Reading up they were the usual code/structure things with regards to PRs (over it's effect on sysgen which is a source of issues and under a paused refactor). The concept had been regarded as excellent in the last faction discussion and people were awaiting an implementation, as I recall.

What I do see is a lot of ideas about how cool a dynamic-RTS style system would be, or growing the factions
None of those actually bring much gameplay to the "game" though. They're designs which don't really effect(/affect?) the players day-to-day actions or decisions in the game.

The general idea behind dynamic faction/economic stuff is to provide a frame work for things that do affect gameplay, a background of constantly changing opportunities (through things like expandable events generating missions/happenings, the reactions of persistent characters to events) as well as change in the man made physical universe. This all goes back to the player being involved in a simulated universe where they have to observe, understand and predict things..instead of essentially walking through a 3d still-life painting with pirates shooting at you - since we create things procedurally we can be 4d and not 3d (something I started to outline in that not-completed ancient design piratepad).

I agree that pretty much all elements that will affect players decisions like prices/trade laws/pirate gang states can be done statically first and then animated later.

and discussions about story

From reading above, this seems mostly to do with Thargoid not receiving a lot of feedback from the majority of the community, and needing prototypes so players can better visualise the factions and their inter-relationships and give feedback on the different aspects of the setting (see the last few posts of his faction issue). Nothing to do with your PR per se other than including his faction stuff while we were at it.

@johnbartholomew

...and there's probably a dozen more, in fact once this goes if (if this goes in) then I hope that people will suggest more things so that I can implement them.

Right now though I'm not touching the code except to deal with style and other bits because I don't want to jeopardise the chances of it getting merged.

It will go in. I'm only waiting for probability fix noted in my comment on the diff, or for you to tell me that I'm wrong and the code is correct as it is. I could fix it myself, but then someone would have to check my change.

I'm sorry this is taking so long to get in, but sometimes that happens.

@johnbartholomew

I've decided I'm being too careful with this one. In the interests of getting shit done, I'm merging now.

@johnbartholomew johnbartholomew merged commit b1fe3cf into pioneerspacesim:master Oct 1, 2012
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.