MMORPG
Moderators: winston, another_commander
-
- Quite Grand Sub-Admiral
- Posts: 364
- Joined: Tue Aug 17, 2004 7:05 am
- Location: Orange, NSW, Australia
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.
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.
Regards,
David Taylor.
David Taylor.
Nice idea, but I don't do Objective C. It'll only happen in conjunction with the current Oolite maintainers.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.
Use of the economy server is optional, exactly as an OXP is.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.
Very perceptive! I hadn't seen that.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.
Why does Oolite have non-instantanious hyperspace jumps? the original games seems instantanious. Did the novella indicate time passed?
- winston
- Pirate
- Posts: 731
- Joined: Mon Sep 27, 2004 10:21 pm
- Location: Port St. Mary, Isle of Man
- Contact:
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.ramon wrote:Also, and I know I keep harping on about this, but I really want to be able to land on the planets!
- Gareth3377
- Deadly
- Posts: 136
- Joined: Sat Feb 17, 2007 11:46 pm
- Location: Worcester
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...
Though if it could be done I wouldn't complain...
- LittleBear
- ---- E L I T E ----
- Posts: 2882
- Joined: Tue Apr 04, 2006 7:02 pm
- Location: On a survey mission for GalCop. Ship: Cobra Corvette: Hidden Dragon Rated: Deadly.
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.
OXPS : The Assassins Guild, Asteroid Storm, The Bank of the Black Monks, Random Hits, The Galactic Almanac, Renegade Pirates can be downloaded from the Elite Wiki here.
It's much, much, much harder than you first think to produce even a passable economic simulation.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),
There are two advantages;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.
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
The two servers are quite different in terms of the challenges they present, the technical problems that have to be solved.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.
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.
- LittleBear
- ---- E L I T E ----
- Posts: 2882
- Joined: Tue Apr 04, 2006 7:02 pm
- Location: On a survey mission for GalCop. Ship: Cobra Corvette: Hidden Dragon Rated: Deadly.
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.
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.
OXPS : The Assassins Guild, Asteroid Storm, The Bank of the Black Monks, Random Hits, The Galactic Almanac, Renegade Pirates can be downloaded from the Elite Wiki here.
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: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.
This is a very good point and one I'd not seen.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.
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.
Very true.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.
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?
- Commander McLane
- ---- E L I T E ----
- Posts: 9520
- Joined: Thu Dec 14, 2006 9:08 am
- Location: a Hacker Outpost in a moderately remote area
- Contact:
@ 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.
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.
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.
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.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
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.
- LittleBear
- ---- E L I T E ----
- Posts: 2882
- Joined: Tue Apr 04, 2006 7:02 pm
- Location: On a survey mission for GalCop. Ship: Cobra Corvette: Hidden Dragon Rated: Deadly.
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:-
(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.
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";
};
}
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.
Code: Select all
OXPS : The Assassins Guild, Asteroid Storm, The Bank of the Black Monks, Random Hits, The Galactic Almanac, Renegade Pirates can be downloaded from the Elite Wiki here.
- JensAyton
- Grand Admiral Emeritus
- Posts: 6657
- Joined: Sat Apr 02, 2005 2:43 pm
- Location: Sweden
- Contact:
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).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.
E-mail: [email protected]
- Commander McLane
- ---- E L I T E ----
- Posts: 9520
- Joined: Thu Dec 14, 2006 9:08 am
- Location: a Hacker Outpost in a moderately remote area
- Contact:
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?
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?