Contributing to VS

Discuss the Wing Commander Series and find the latest information on the Wing Commander Universe privateer mod as well as the standalone mod Wasteland Incident project.
Post Reply
jfbenck
Explorer
Explorer
Posts: 10
Joined: Mon Sep 05, 2005 10:31 pm

Contributing to VS

Post by jfbenck »

Hi,

I've been playing VS for some time now and I really like the game. I think i can manage to have some spare time in which I'd like to contribute. I've a bachelor in computer science and a major in artificial intelligence. OpenGL programming knownledge I unfortunally don't posses. Perhaps contributing code to the higher level game parts (economics/AI e.g.) is a possibility?

In the Contributor Help & Internal How-Tos forum, I was told to contact spiritplumber in this topic. Any pointers where I could start and what could be done?
chuck_starchaser
Elite
Elite
Posts: 8014
Joined: Fri Sep 05, 2003 4:03 am
Location: Montreal
Contact:

Post by chuck_starchaser »

This is the WCU (Wing Commander Universe) mod forum. If you want to help with WCU, there's plenty to do; but otherwise you can post to the Vegastrike 'Features Requests' or 'Contributors' forums. There's a serious need for AI work, BTW.
Last edited by chuck_starchaser on Tue Sep 06, 2005 6:17 pm, edited 1 time in total.
klauss
Elite
Elite
Posts: 7243
Joined: Mon Apr 18, 2005 2:40 pm
Location: LS87, Buenos Aires, República Argentina

Post by klauss »

Yes, but spirit knows a lot about the AI stuff... she could give jfbenck some pointers.
Oíd mortales, el grito sagrado...
Call me "Menes, lord of Cats"
Wing Commander Universe
chuck_starchaser
Elite
Elite
Posts: 8014
Joined: Fri Sep 05, 2003 4:03 am
Location: Montreal
Contact:

Post by chuck_starchaser »

True.
I just thought he posted here by mistake, tho.
jfbenck
Explorer
Explorer
Posts: 10
Joined: Mon Sep 05, 2005 10:31 pm

Post by jfbenck »

Nope, I trying to contact spirit
spiritplumber
Developer
Developer
Posts: 1831
Joined: Mon Mar 07, 2005 10:33 pm
Contact:

Post by spiritplumber »

hi!


well, any engine change in WCU should benefit VS as a whole too... As for AI, how can I help? ^-^ You probably know more than me anyway.
My Moral Code:
- The only sin is to treat people as if they were things.
- Rules were made for people, not the other way around.
- Don't deceive. Real life is complicated enough.
- If all else fails, smash stuff.
jfbenck
Explorer
Explorer
Posts: 10
Joined: Mon Sep 05, 2005 10:31 pm

Post by jfbenck »

Well, you could help by pointing me to the parts in the source code responsible for the AI. I'm not familiar with the VS code, so looking it up might some work.. Besides that, perhaps a discussion could be started which parts of the AI should be improved first, a priority list perhaps, altough I doubt this is the right topic for such a discussion...
chuck_starchaser
Elite
Elite
Posts: 8014
Joined: Fri Sep 05, 2003 4:03 am
Location: Montreal
Contact:

Post by chuck_starchaser »

jf, take a look at the thread "What engine changes do we need for the story line?"; we are discussing things that are related to future AI needs there.
I know this doesn't address your question, but for something to do while spirit gets around to answering your post.
Just for an example:
We need to simulate economies, but for economies to be self-balanced there needs to be offer and demand, and for there to be offer and demand there have to be units that have goals, and look for ways to fulfill them. Say an industrial planet has some types of industries. As the population increases some entreprenurial AI has to notice the fact that labor cost is cheap, and the elements are in place for some type of industry that isn't there yet. And for an economy to be *really* stable, there should be ways an industry can borrow during a rough period... so there should be lender AI's perhaps.
For another:
Could a "squadron leader" AI help simplify fleet-level commands by taking context into account?
And yet another:
Right now, most of the AI is "scripted", ad-hoc; I had this idea a while ago we could somehow use a genetic algorithm, set up a PC that plays a dynamic universe 24/7 where AI's get better by random mutation and natural selection. The trick is making those AI's have failings, like the human difficulty in "thinking about more than one thing at a time", and perceptual limitations or aberrations similar to human ones (for simulating human AI's only, of course).
jfbenck
Explorer
Explorer
Posts: 10
Joined: Mon Sep 05, 2005 10:31 pm

Post by jfbenck »

The economy of VS is indeed something I was thinking about to improve. It will be a very large system and I think the main concern will be to find a way to create a believeable economy while not taking to much time from the CPU as the 3D world and that gameplay is of a primary concern.

You thought of using a genetic algorithm is a possibility although I don't think it'll be the "right" approach. Creating such an algorithm will take a LOT (and a mean really a LOT) of time to compute as the economy is really complex. Breaking this up in piece (1 algo for planet economy, 1 for trading by mercenarcies, etc) might be an option. The problem with genetic algorithms is that the result can be right, but there is no guarantee. Furthermore you'll have to design a measurement scale on which the algorithms can be tested. Then you'll have to design a way to represent different algorithms (the structure of the "genes") which is quite complicated with this size. Finally you'll have the disadvantage of a genetic algorithm that the results are very hard to interpret....

Al in all I think this is an approach which can be pursued as a side project, and long term option. The main concern for the short term will probably be to design an infrastructure in which we can experiment with different models. Creating an AI is often about constantly adding even smarter pieces. The genetic algorithm can be such a smarter piece. For now, I think creating this structure and thinking about the performance is the number one priority. This isn't really hard to create by the way. There are standard design patterns for this. A nice architecture will propably be the subsumption architecture. In this architecture one can add smarter (often slower) algorithms which can override dumber but faster algorithms if needed.

An other thing that has to be created is a list of different goods which can be created on different planets/bases/etc with different costs (factors). These will have to be use to calculate the real cost where e.g. the population of a planet is taken into account. However starting with static costs is a good starting point I think. This can always be extended in the future as this will rely on input from story/system/universe creators which may not be available right away.
jfbenck
Explorer
Explorer
Posts: 10
Joined: Mon Sep 05, 2005 10:31 pm

Post by jfbenck »

Oh and by the way, adding "human" errors to the AI isn't probably that hard (depending on the system) as this can be implemented quite often by supllying the AI only with a limitted amount of information. In that case you'll have a system just like AI chess players which can't calculate the best move as this takes to much time, but have to make an educated guess. Time constraints will probably cause this anyway so it might be possible to supply an AI with all information but not giving it enough time to compute the best possibilities. The options to reduce the performance of an AI are numerous, creating a good AI first which can be reduced is quite hard OTOH.
spiritplumber
Developer
Developer
Posts: 1831
Joined: Mon Mar 07, 2005 10:33 pm
Contact:

Post by spiritplumber »

can you IM me? i'm spirit_plumber on YM.
My Moral Code:
- The only sin is to treat people as if they were things.
- Rules were made for people, not the other way around.
- Don't deceive. Real life is complicated enough.
- If all else fails, smash stuff.
chuck_starchaser
Elite
Elite
Posts: 8014
Joined: Fri Sep 05, 2003 4:03 am
Location: Montreal
Contact:

Post by chuck_starchaser »

jfbenck wrote:The economy of VS is indeed something I was thinking about to improve. It will be a very large system and I think the main concern will be to find a way to create a believeable economy while not taking to much time from the CPU as the 3D world and that gameplay is of a primary concern.
Exactly; but I don't think you need to worry too much about performance; I don't think there's a pressing issue with performance, atm. Besides, if we're talking about economies at bases, then there's no performance issues at all. Even economy in space should be no issue at all, since it could be pre-computed while you're docked at a base, and just played out when you're in flight.
You thought of using a genetic algorithm is a possibility although I don't think it'll be the "right" approach. Creating such an algorithm will take a LOT (and a mean really a LOT) of time to compute as the economy is really complex. Breaking this up in piece (1 algo for planet economy, 1 for trading by mercenarcies, etc) might be an option. The problem with genetic algorithms is that the result can be right, but there is no guarantee. Furthermore you'll have to design a measurement scale on which the algorithms can be tested. Then you'll have to design a way to represent different algorithms (the structure of the "genes") which is quite complicated with this size. Finally you'll have the disadvantage of a genetic algorithm that the results are very hard to interpret....
Gotcha.
Al in all I think this is an approach which can be pursued as a side project, and long term option. The main concern for the short term will probably be to design an infrastructure in which we can experiment with different models. Creating an AI is often about constantly adding even smarter pieces. The genetic algorithm can be such a smarter piece. For now, I think creating this structure and thinking about the performance is the number one priority. This isn't really hard to create by the way. There are standard design patterns for this. A nice architecture will propably be the subsumption architecture. In this architecture one can add smarter (often slower) algorithms which can override dumber but faster algorithms if needed.
Brook's idea, yeah, or more like taking advantage of what the lower echelons already learnt; --at least that's how I understood it. I was thinking about that for pilot/gunner AI, subsumed by a squadron AI, subsumed by a fleet AI. That's why I was mentioning genetic algos; because I was thinking we could have ship AI's killing each other for a few weeks, then, when they are good, we put them into squadrons and have the squadron AI's killing each other a few weeks, and once those are good, to arrange squadrons into fleets, and have fleet AI's kill each other a few weeks.
An other thing that has to be created is a list of different goods which can be created on different planets/bases/etc with different costs (factors). These will have to be use to calculate the real cost where e.g. the population of a planet is taken into account. However starting with static costs is a good starting point I think. This can always be extended in the future as this will rely on input from story/system/universe creators which may not be available right away.
Okay.
Right now, Vegastrike has a list of goods most people aren't too happy with and it's a waiting game about who's gonna jump in to clean up the list. With WCU, the list is pretty much inherited from Privateer, with some additions, like unrefined ores, and standard containers. I think the original stuff from Privateer has to be there for nostalgia reasons, but other items could be added. AI-wise it could first use some introduction of internal simulation, in the sense that you can bring nothing but furs to a mining base; and they'll be just fine. I think they should starve to death :) There are other items, like mining equipment, that should be pretty essential. On the other hand, you're just one trader among many, so the consequences shouldn't be stark, but they should be there to some extent.
Another thing is prices and quantities. Right now, after trading for a while, quantities start to drop for unknown reasons (to the players), and you have to exit the game and restart it to reset the economies. Balancing prices is a balancing act (pun intended) and I thought maybe by unleashing a bunch of smart AI traders and letting offer and demand set the prices might balance the prices automatically to offset such factors as length and difficulty of the trade route. But of course, these smart traders need to be somewhat smart. This would also make the environment more believable, if you could follow a merchant ship around, and learn from it about a lucrative trade route.
Even more realistic if merchant ships would pool next to each other whenever possible, to get a "convoy effect" to better their chances against pirates.
Oh and by the way, adding "human" errors to the AI isn't probably that hard (depending on the system) as this can be implemented quite often by supllying the AI only with a limitted amount of information. In that case you'll have a system just like AI chess players which can't calculate the best move as this takes to much time, but have to make an educated guess. Time constraints will probably cause this anyway so it might be possible to supply an AI with all information but not giving it enough time to compute the best possibilities. The options to reduce the performance of an AI are numerous, creating a good AI first which can be reduced is quite hard OTOH.
Right. I suppose the AI could be programmed like a co-routine, so it only executes a microstep of the algorithm per frame, so as to slow it down.
It would be nice to limit the attention span of AI pilots to one threat at the time; I have an intuitive feeling this would make them 'feel' very human; much less machine-like. Maybe also using lossy compression in the "visual input" part. Like translating the NPC's view coordinates of you to 16-bit fixed point from float, or to 8-bits, or even just 4, and feed that to the ai.
One thing players have trouble with, that AI's should have too, is predicting when to move the stick or mouse the other way, so that your inertial rotation will stop right when your guns are pointing at the right spot. AI's are too good at it, atm.
Wisq
ISO Party Member
ISO Party Member
Posts: 453
Joined: Sat Jul 30, 2005 10:21 am

Post by Wisq »

Re: "Quantities start to drop"... are we talking about VS here, or WCU?

I dunno how WCU does it, but in VS, it's not that stuff is "mysteriously" dropping, it's that the stuff is there, you buy it, and it's no longer there. ;) They produce some stuff over time, but nothing like the deluge of stuff that exists there every time you restart the game.
chuck_starchaser
Elite
Elite
Posts: 8014
Joined: Fri Sep 05, 2003 4:03 am
Location: Montreal
Contact:

Post by chuck_starchaser »

Ah, okay; I haven't played VS in quite a while... so *that*'s what it is.
mat_yarrow
Hunter
Hunter
Posts: 75
Joined: Tue Apr 19, 2005 2:15 am

Post by mat_yarrow »

There could be another way of designing an ai on the strategic level that's well balanced..

When Dan Bunten(later Dani Bunten), the designer of M.U.L.E., was asked how to balance a game, he reportedly answered "Cheat". When asked what to do if players complained, "Lie".
jfbenck
Explorer
Explorer
Posts: 10
Joined: Mon Sep 05, 2005 10:31 pm

Post by jfbenck »

chuck_starchaser wrote: Exactly; but I don't think you need to worry too much about performance; I don't think there's a pressing issue with performance, atm. Besides, if we're talking about economies at bases, then there's no performance issues at all. Even economy in space should be no issue at all, since it could be pre-computed while you're docked at a base, and just played out when you're in flight.
That could be a possibility except in the case that elapsing time will be introduced when docked at a base. It's hard to predict the effects on performance, but keeping a close eye on this will be important.

chuck_starchaser wrote: Brook's idea, yeah, or more like taking advantage of what the lower echelons already learnt; --at least that's how I understood it. I was thinking about that for pilot/gunner AI, subsumed by a squadron AI, subsumed by a fleet AI. That's why I was mentioning genetic algos; because I was thinking we could have ship AI's killing each other for a few weeks, then, when they are good, we put them into squadrons and have the squadron AI's killing each other a few weeks, and once those are good, to arrange squadrons into fleets, and have fleet AI's kill each other a few weeks.
That's indeed the kind of system I meant. However genetic algo's aren't necessairily needed.

chuck_starchaser wrote: Okay.
Right now, Vegastrike has a list of goods most people aren't too happy with and it's a waiting game about who's gonna jump in to clean up the list. With WCU, the list is pretty much inherited from Privateer, with some additions, like unrefined ores, and standard containers. I think the original stuff from Privateer has to be there for nostalgia reasons, but other items could be added. AI-wise it could first use some introduction of internal simulation, in the sense that you can bring nothing but furs to a mining base; and they'll be just fine. I think they should starve to death :) There are other items, like mining equipment, that should be pretty essential. On the other hand, you're just one trader among many, so the consequences shouldn't be stark, but they should be there to some extent.
Another thing is prices and quantities. Right now, after trading for a while, quantities start to drop for unknown reasons (to the players), and you have to exit the game and restart it to reset the economies. Balancing prices is a balancing act (pun intended) and I thought maybe by unleashing a bunch of smart AI traders and letting offer and demand set the prices might balance the prices automatically to offset such factors as length and difficulty of the trade route. But of course, these smart traders need to be somewhat smart. This would also make the environment more believable, if you could follow a merchant ship around, and learn from it about a lucrative trade route.
Even more realistic if merchant ships would pool next to each other whenever possible, to get a "convoy effect" to better their chances against pirates.
Establishing a good economic system of different goods will probably be a prerequisite for perfecting the AI. However, to create the general structure, we could do with the current goods. Varying prices will probably be essential to creating a dynamic economy
chuck_starchaser wrote: Right. I suppose the AI could be programmed like a co-routine, so it only executes a microstep of the algorithm per frame, so as to slow it down.
It would be nice to limit the attention span of AI pilots to one threat at the time; I have an intuitive feeling this would make them 'feel' very human; much less machine-like. Maybe also using lossy compression in the "visual input" part. Like translating the NPC's view coordinates of you to 16-bit fixed point from float, or to 8-bits, or even just 4, and feed that to the ai.
One thing players have trouble with, that AI's should have too, is predicting when to move the stick or mouse the other way, so that your inertial rotation will stop right when your guns are pointing at the right spot. AI's are too good at it, atm.
A possibility, but lets concentrate on the economy first. Creating player AI is a completely different task. A huge task in itself probably.
mat_yarrow wrote: There could be another way of designing an ai on the strategic level that's well balanced..

When Dan Bunten(later Dani Bunten), the designer of M.U.L.E., was asked how to balance a game, he reportedly answered "Cheat". When asked what to do if players complained, "Lie".
:D Indeed. AI is generaly not about creating a smart algorithm, but about creating an algorithm which results in smart behaviour. Smart behaviour can be established with simple algorithms if the variantion and the amount of parameters which influence it is large.
jfbenck
Explorer
Explorer
Posts: 10
Joined: Mon Sep 05, 2005 10:31 pm

Post by jfbenck »

I'll be putting some ideas on the economy page. I think this discussion can be best continued on the the Contributor Help & Internal How-Tos forum. I've already posted a message there.
Post Reply