Page 7 of 11
Posted: Fri Mar 09, 2007 5:22 am
by dajt
Callas, I think your ideas are pretty interesting and the simplistic trading model in Oolite bugs me a bit too.
Perhaps a better way to drive this conversation is to say you're going to use the Oolite code as base for YOUR space trading game that allows players to play in a universe where the trading is more involved than it is in Oolite.
What you really want from Oolite is the flight model and rendering code. Then you can hoik out all the current trading stuff and replace it with your own ideas. This way people can stop being upset that you are suggesting irrepairable damage to Oolite itself.
You'll need to make some substantial changes to the game's UI. Be warned this might not be as simple as you hope although Winston added a new loading screen without going mad.
There is a big problem with the fact that hyperspace jumps are not instantaneous so I think you'll need to change this too. If I'm sitting in the station at Lave and you leave and jump to Zaonce, from my point of view you won't be there for days, whereas from your point of view it takes about 20 seconds. The market simulator can't account for this for both of us.
I wouldn't go asking for other people's opinions. The code has always been free for the taking, so get it and make your changes. If it turns out cool people will play it. If not, you'll at least have a game you enjoy more than plain old Oolite.
Posted: Fri Mar 09, 2007 10:49 am
by ramon
I agree with dajt. If there was a better trading part to Oolite then there would be more reason to buy some of the bigger ships like the Anaconda or Boa.
Also, and I know I keep harping on about this, but I really want to be able to land on the planets!
Posted: Fri Mar 09, 2007 1:53 pm
by Callas
dajt wrote:Perhaps a better way to drive this conversation is to say you're going to use the Oolite code as base for YOUR space trading game that allows players to play in a universe where the trading is more involved than it is in Oolite.
Nice idea, but I don't do Objective C. It'll only happen in conjunction with the current Oolite maintainers.
dajt wrote:What you really want from Oolite is the flight model and rendering code. Then you can hoik out all the current trading stuff and replace it with your own ideas. This way people can stop being upset that you are suggesting irrepairable damage to Oolite itself.
Use of the economy server is optional, exactly as an OXP is.
dajt wrote:There is a big problem with the fact that hyperspace jumps are not instantaneous so I think you'll need to change this too. If I'm sitting in the station at Lave and you leave and jump to Zaonce, from my point of view you won't be there for days, whereas from your point of view it takes about 20 seconds. The market simulator can't account for this for both of us.
Very perceptive! I hadn't seen that.
Why does Oolite have non-instantanious hyperspace jumps? the original games seems instantanious. Did the novella indicate time passed?
Posted: Fri Mar 09, 2007 2:12 pm
by winston
ramon wrote:
Also, and I know I keep harping on about this, but I really want to be able to land on the planets!
Unfortunately, this falls into the "moon on a stick" requirements bucket. Having stations on the planets with anything like acceptable rendering of local terrain is alone probably a bigger job than the rest of Oolite put together.
Posted: Fri Mar 09, 2007 2:14 pm
by TGHC
IMHO Oolite meets Hardwars would be the ultimate game, but it will never happen!
Posted: Fri Mar 09, 2007 6:28 pm
by Gareth3377
Not too bothered about landing on planets to be honest. It would be nice, but then if you refer to The Dark Wheel - planet's are not for tourists, they provide protection everything old earth was (a bit of paraphrasing there heh heh). Quite happy with this explanation why you cannot land on planets.
Though if it could be done I wouldn't complain...
Posted: Fri Mar 09, 2007 7:22 pm
by LittleBear
I quite like the idea of a more dynamic stock market. BUT it really does seem like a sledgehammer to crack a nut. Player impact would be minimal and it doesn't add much to the game play. A changing stock market could be done with an OXP (variables counting the players actions reducing the price of furs say if the market is flooded), random events "Due to solar flares causing EMP damage the price of computers in XXX has rocketed" etc, random chances to simulate NPC behavior. My point is this would be nice, but an on-line server passing this information around is a lot of work to produce the same efffect as a faily simple OXP hack. If you're gonna go to all the trouble of setting up a server that passes information between games, why not go for a Deathmatch System? Its the same info that needs to be passed about, but a LOT more fun and really would add to the gameplay.
Posted: Fri Mar 09, 2007 7:45 pm
by Callas
LittleBear wrote:I quite like the idea of a more dynamic stock market. BUT it really does seem like a sledgehammer to crack a nut. Player impact would be minimal and it doesn't add much to the game play. A changing stock market could be done with an OXP (variables counting the players actions reducing the price of furs say if the market is flooded),
It's much, much, much harder than you first think to produce even a passable economic simulation.
LittleBear wrote:random events "Due to solar flares causing EMP damage the price of computers in XXX has rocketed" etc, random chances to simulate NPC behavior. My point is this would be nice, but an on-line server passing this information around is a lot of work to produce the same efffect as a faily simple OXP hack.
There are two advantages;
1. use of player behaviour to generate realistic market behaviour
- which includes competition to get trades done quickly, because if you don't other players will use up the good prices
2. the knowledge that everyone else playing is in the same universe as you and experiencing the same effects at the same time
LittleBear wrote:If you're gonna go to all the trouble of setting up a server that passes information between games, why not go for a Deathmatch System? Its the same info that needs to be passed about, but a LOT more fun and really would add to the gameplay.
The two servers are quite different in terms of the challenges they present, the technical problems that have to be solved.
A deathmatch server in hard in that it requires handling latency issues.
An economy server is hard in that it requires a realistic simulation, but using player behaviour makes this straightforward.
Posted: Fri Mar 09, 2007 8:11 pm
by LittleBear
Hhmm. You may well be right if you wanted a full simulation of the real world market, but I think a pretty good effect can be produced by random numbers. I've poked around Oolite quite a bit writing OXPs and the variety for populating systems and even ship AIs use chance quite a lot. The reason it feels realistic (lots of pirates in anachies, police patrols in corperate states, pirates attacking othe ships, traders running, somtimes fighting etc etc) is cleaver use of random numbers and having lots of variables interacting.
Don't want to discorage you (the idea of the actions of another player effects the price I get when I sell my 'puters is interesting), but I don't think there would be enough players trading in the same area for any difference to really be noticed. Oolite is popular, even if you say 100 players are playing somewhere in the world at any one time, the trouble is that only the "noobs" are likley to be trading much. Players tend to focus on doing missions and building up their Elite rating after getting enough cash to get a good ship. With an Iron Ass, you can make a lot more money by piracy, doing assassinations, bounty hunting renegades or doing missions generally than by trading. So Trading stops being a worthwhile task faily early on in the Commanders carrer. There are over 2,000 systems in the game, so the smallish number of active traders are spread very thinly (or are all in G1). Even with a really cunning code to act on players actions, I just fear their woudn't be enough "input" to effect the game much, and you would have to resort to simulation NPC behaviour with dice roles, AIs and so on to get an effect.
It's just a factor of Oolite / Elite Gameplay. With 400,000C you can buy one of the most powerful ships in the game and fully equip it with another 100,000. After than there is nothing else to buy. Unlike in the real world (sadly) to most Competant Commanders and above, money doesn't really matter anymore. If you want to better equipment you have to earn it by missions.
Posted: Sat Mar 10, 2007 12:36 am
by Callas
LittleBear wrote:Hhmm. You may well be right if you wanted a full simulation of the real world market, but I think a pretty good effect can be produced by random numbers. I've poked around Oolite quite a bit writing OXPs and the variety for populating systems and even ship AIs use chance quite a lot. The reason it feels realistic (lots of pirates in anachies, police patrols in corperate states, pirates attacking othe ships, traders running, somtimes fighting etc etc) is cleaver use of random numbers and having lots of variables interacting.
I haven't thought it through thoroughly, but I'm still inclined to believe that an economy sim is much harder than the simulated behaviours you've described here. There are many more factors involved.
LittleBear wrote:Don't want to discorage you (the idea of the actions of another player effects the price I get when I sell my 'puters is interesting), but I don't think there would be enough players trading in the same area for any difference to really be noticed. Oolite is popular, even if you say 100 players are playing somewhere in the world at any one time, the trouble is that only the "noobs" are likley to be trading much. Players tend to focus on doing missions and building up their Elite rating after getting enough cash to get a good ship. With an Iron Ass, you can make a lot more money by piracy, doing assassinations, bounty hunting renegades or doing missions generally than by trading. So Trading stops being a worthwhile task faily early on in the Commanders carrer. There are over 2,000 systems in the game, so the smallish number of active traders are spread very thinly (or are all in G1). Even with a really cunning code to act on players actions, I just fear their woudn't be enough "input" to effect the game much, and you would have to resort to simulation NPC behaviour with dice roles, AIs and so on to get an effect.
This is a very good point and one I'd not seen.
However, don't forget, one of the reasons people don't trade much once they don't have to IS because it's so one-dimensional. If trading becomes much more interesting in its own right, it will inherently be more popular.
LittleBear wrote:It's just a factor of Oolite / Elite Gameplay. With 400,000C you can buy one of the most powerful ships in the game and fully equip it with another 100,000. After than there is nothing else to buy. Unlike in the real world (sadly) to most Competant Commanders and above, money doesn't really matter anymore. If you want to better equipment you have to earn it by missions.
Very true.
Posted: Sat Mar 10, 2007 10:44 am
by lolwhites
Littlebear makes a very valid point. Once you've got the best ship you can buy and kitted it out, credits just become numbers. OK, so you need to keep a float to repair damaged equipment, but unless maintenance overhauls become a lot more expensive and frequent, or people think of other uses for credits (such as missions where you have to pay for clues and other important information), where's the incentive to trade once your ship is maxed out?
Posted: Sat Mar 10, 2007 12:27 pm
by Commander McLane
@ LittleBear: I am just trying to influence the trade market by an OXP, and I can tell you: This is not at all a trivial undertaking. Have a look at the
wiki about commodities.plist.
First issue: In the original distribution there are three different variants of the list: "default", "rockhermit" and "none" (not sure what the last is for). You can of course script your own list in an OXP. But the names of the original ones reveal an important information: "rockhermit" is a role, and a role only. That means you can create a new commodities-list for all entities with a specific role
only, so let's say for a new kind of station, or e.g. all dodec-stations. Anywhere else the values of the "default"-list are used (which of course could also be replaced by another "default" in an OXP.
Second issue: From that point it becomes clear that--as far as main stations are concerned, and that's what we are talking about here, not adding an OXP-station with a specific role--you have two possibilities: You can change the "default" for
all stations, or at least a group of stations with the same role, or for
none. Currently I don't see a way to raise or drop the prices in one station only, due to a disaster or whatever.
wiki wrote:// calculate the local price
price = (MARKET_BASE_PRICE + (MARKET_RND & MARKET_MASK_PRICE) + (economy * MARKET_ECO_ADJUST_PRICE)) & 255
...
// price in credits is the final price x 0.4
price *= 0.4
Third issue: The final prices of commodities are calculated
by the game-engine according to the formula given in the above quotation and explained in the wiki. That means that there is no way to change the formula without
reprogramming the engine. So in an OXP you can't add other variables like information about the player or NPC into the formula.
Fourth issue: Together with that the current formula calculates prices in such a way that 102 credits (= 255 * 0.4) is the absolute maximum price
any commodity could cost anywhere. There is absolutely
no way to make anything more expensive than that, due to the final "& 255" in the formula, which is a logical binary AND 255 (256 & 255 = 0, 257 & 255 = 1 and so on; I believe that's the reason why sometimes narcotics are so cheap (1.2 cr), they are really meant to be 103.2 cr, but the formula just resets the 102 cr to 0 if the price is higher, so only 1.2 cr are left; I can be wrong on this one, though). And this IMO does limit very much the possibility to influence prices with an OXP, at least as far as highly inflational prices caused by disasters or "acts of God" are concerned.
However by playing with the variables in the "default" set it should be relatively easy to make the markets more volatile (or more stable), if one would want that. The element of surprise and of player/NPC-influence on prices is not OXP'able, as far as I can see now.
Posted: Sat Mar 10, 2007 1:02 pm
by LittleBear
Nice Idea's commander. I'm sure it would be a complex task to OXP, but must be easier than writting a whole new version of the game and passing loads of variables over a server.
Just an idea, but I was thinking of doing it somthing like this:-
1) A mission screen comes up (say when you have more than 1000C in the bank), asking you if you'd like to subscibe to the "Glaxactic Which Goods?" bullitin service. If you chose yes, then you a charged a small fee (and maybe have to pay a subscription cost once a month or whatever - using your timer method). Saying yes sets all the variables in the mission to certain values and sets the tradernews_mission to running.
2) At every docking whilst you are subscribed, their is a chance (say 10%) of reciving a random news bullitin. Dice to pick a chance of it comming up and then another dice roll to pick which one.
3) We have a lot say (30) of little bullitins pre-written in mission_text "Eg: Due to a bumber havest in the Lave System food prices have collapsed". If the dice pick this one we set out changesystem variable to 7. (PN for Lave).
4) On exiting witchspace we have a check of if changesystem = 1 and PN = 1 do, if changesystem = 2 do and PN=2 do.
5) if the conditions are met, we change the station with a station = "changesystem1". We define each station as a like_ship of the normal one (so the player notices no difference), but as it has a sepcial role we can attached a commodaties to it, so make the market match whats is meant to be happening.
The mainstation at a particular system can be set like this:-
Code: Select all
{
"0 55" = {
"description" = "The planet Leesti is reasonably fabled for Zero-G cricket and Leestiian evil juice, but cursed by deadly asteroid storms.";
"station" = "aststat";
};
}
(Here adding a bit to the description as well, so it matches whats meant to be happening in the Ooniverse).
If we add as conditions that this only happens when the mission variable is set to change it, we can replace the normal station with a custom one, to which a commodaties can be attached.
6) When the player docks at the changed system, the dice are rolled again. If the hit (say a 20%) chance the a back to normal brief appears "trader news report: Trade prices in the [H%] System appear to be returning to normal". This sets the changesystem to 0. The market will still be abnormal for the player on this docking, but the next time he comes back, Oolite will just put the normal station in the system, so the market will be normal again (as the changesystem condition wouldn't be at a number that adds a different station).
True, this would mean limiting the broadcasts to one Galaxy (probabley 1) as we'd need to pre-plan the events. But with enough "cards in the deck" it should give the illusion of a dynamic stock market.
Posted: Sat Mar 10, 2007 1:19 pm
by JensAyton
Commander McLane wrote:Third issue: The final prices of commodities are calculated by the game-engine according to the formula given in the above quotation and explained in the wiki. That means that there is no way to change the formula without reprogramming the engine.
Moving this kind of stuff out into scripts might be a viable medium-term project after the Javascript branch is merged into the trunk (assuming this goes smoothly).
Posted: Sat Mar 10, 2007 1:29 pm
by Commander McLane
Hi, LittleBear, it's always a pleasure to exchange ideas with you!
I actually was trying a little (not too much effort yet due to the other projects) to script an "acts of God"-oxp, but got stuck when I ran out of ideas on how to influence the market prices.
Here some comments on your ideas:
1) good
2) yes
3) Isn't it possible to randomize even more? We can roll a dice to decide which planet shall be influenced by a price-change and store the d100-number in the changesystem variable. There are these %p-commands we could use to insert it's name into the mission_text, which else must be pre-written.
4) yes
5) Can we do that? Change the station? Didn't know that, but I have to admit that I hadn't thought of this way.
6) I wouldn't do that with a dice, but with a disaster_timer. Every time the player chooses to do such a mission the timer starts. If he arrives at the destination planet within let's say 7 days the station is replaced as you wrote in 5). If he comes too late the station is replaced with another clone instead where the market has gone into the opposite direction: So many traders have tried to buy at the collapsed market that the market is completely drained and prices have jumped. Or so many help has arrived in a disaster area that the market has collapsed, the player's commodities are worth nothing.
If we can add the randomization according to 3) we don't need to confine ourselves on Galaxy 1. And we don't need to completely rewrite the planetinfo. There can just one sentence be added, referring to the special current circumstances. The Constrictor-script does that.
The disaster_timer would mean that the player wouldn't be offered another mission like this until he has finished the current one.
So, what say you?