Galciv Blog on Joeuser

Shameless plug for my blog page where I would discuss the game. I will post here whenever I add an article.

http://ray.joeuser.com/

*Spoiler Alert* - These articles contain lots of spoilers so be warned.

~SDC~
3,285 views 29 replies
Reply #1 Top
Part 2b on Diplomacy is posted.

~SDC~
Reply #2 Top
Regarding "Arms Dealer" (AD), there's a few simple fixes to remove this exploit (parking a constructor next to a resource, and then trading ships to an AI player; the AI destroys the starbase and you claim the resource).

- If you claim a resource that was recently controlled by an AI, that AI should view that as a hostile act and demand the starbase. (just as if you built the starbase in a sector with their planet).

- If you trade or gift ships to an AI that is at war, the AI players they are at war with will view this as a hostile act. So if the Drengin and Altarians are at war, and the humans give/sell ships to the Drengin, the Altarians should lower relations. Maybe the Altarians will have to roll against their espionage to notice the trade, with bonus/penalties depending on whether or not the ship gifted was in line-of-sight of an Altarian ship.

To be fair, the human player should, with sufficient espionage rating, be informed when the AI players trade ships.

To fix the "donate 1 influence point" abuse, just require that gifts have a certain value in order to affect relations.
Reply #3 Top
Speaking of improving GalCiv, here's a nice feature that would probably have to wait for a future Stardock game.

I would like to see an API which allowed people to write their own AI. Since the players collectively have more resources than the developers, players will eventually write a better AI than the developers could have.

Plus, it would lead to interesting competitions for the "best player-written AI". All abuses exposed by these AIs would, of course, be fixed in the next patch.

This feature would have to be designed in the game from the start, so it probably isn't an option for GalCiv I, but is an option for sequels or other games developed by Stardock.
Reply #4 Top
Thanks for your comments, fsk.

The last section on Diplomacy is out http://ray.joeuser.com/index.asp?AID=232

~SDC~
Reply #6 Top
I would like to see an API which allowed people to write their own AI. Since the players collectively have more resources than the developers, players will eventually write a better AI than the developers could have.
End of quote


Wow. That idea's definitely got the blood pumping.
Reply #7 Top
I would like to see an API which allowed people to write their own AI. Since the players collectively have more resources than the developers, players will eventually write a better AI than the developers could have.Plus, it would lead to interesting competitions for the "best player-written AI". All abuses exposed by these AIs would, of course, be fixed in the next patch.This feature would have to be designed in the game from the start, so it probably isn't an option for GalCiv I, but is an option for sequels or other games developed by Stardock.
End of quote


AFAIK this wouldn't work at all.
First, ai coding isn't a collective work. So the community is just a bunch of individuals who will not be able to gather more resources than Stardock.
Second, I wonder if you already tried to code an ai for a TBS game. I do. It is far from easy to get the ai do even remotely intelligent things.
Third, I know of one game with such an API for coding ai's. It is called civ-evo and is a quite good civ2 clone (not really a clone, it's got some more features and no randomness inside, which makes for a better ai too since every move and its outcome can be predicted accurately). I only found one ai mod that was built upon the game (the API is in C).

On the other side, a scripting language over C/C++ routines provides good possibilities to tweak the ai. The best example being what apolytoners have done with Call To Power 2 (the in-box ai is totally dumb - but in Cradle mod or even just the FrenzyAI mod, it is much more aggressive and efficient).
What I mean is that the ai can be modded efficiently by players, but can't be coded as efficiently, particularly considering Brad has spent a lot of efforts on it, it would be silly not to profit from these efforts in the shape of some infrastructure. Without the infrastructure, you'd end up coding C++ (potentially leaky/memory risky code) that has already been developped by Stardock, except for 3 lines in a 100-line method.
Reply #8 Top
Wow Ray, I think I disagree with you for once hehe
I don't think there should be a diplomatic hit for selling ships to your friends, even if they are at war with someone. In the real world as long as the buyer is not sanctioned by the international community they can buy all the arms they want. It has long been a strategy for a superpower to supply the losing side to prevent a disparity of forces.

Secondly, as far as selling ships next to a starbase, then harvesting it yourself, I agree it is a powerfull strategy. The real problem is (as you said) poor strategic defense.

Here's a thought . . . Perhaps the origin of traded ships could be maintained for say 10 turns, and if something dastardly is done with them within that time the AI could take note:

"Human, The Dregnin attacked my starbase 4,23 (or planet) with 10 Human-built warships recently sold to them. If this happens again (within 24 turns) we will consider it an act of war."

This seems to mimic real world news broadcasts, but the AI overhead would be slight IMHO.

Alternately, a delivery mechanism might be installed where a purchased, traded, donated ship has to travel to the nearest controlled planet (to have the crew exchanged) before it is available for use.

Cheers!
Reply #9 Top
One thing I would like to see would be the possibility of conquering starbases instead of destroying them, using a combat transport, or a special version of it, dedicated to conquer starbases, it is a waste of resources to destroy a starbase when you could conquer it. Also I don't know about this, but when a civilization flips over to you what happens to the starbases?
Reply #10 Top
When you conquer/receive surrender of/assimilate an AI, their starbases just disappear. At least that's how it is now... I could swear that I've had them turn with the planets in older versions, but maybe my memory is just bad ;)
Reply #11 Top
Kryofx did you get my pm I sent you? By the way congratulations in your victories at masso, I tried two more games and got beat up pretty bad. (:(
Reply #12 Top
Oh, I never bother to even look if I have any messages, sorry 'bout that :P
Reply #13 Top
To LDiCesare:

Examples: CoreWars and the Angband Borg.

I think an API for AI would work. Consider CoreWars, for example. Also, this is a turn-based game, not a real-time game. I think that once a few people wrote a good AI, you would see lots of people putting in further tweaks.

Have you ever seen the Angband Borg? However, that game doesn't have a proper API; the Borg cheats and looks at gamestate variable.

I realize this can't be added to GalCiv at this point. It would have to be built into the game from the beginning. I don't see any technical limitation (other than the developers wanting to do it.)

Besides, having the AI be a separate executable would, once and for all, eliminate all accusations of "The AI Cheats!".
Reply #14 Top
Going the route of "exposed" AI API? Might as well go with Client/Server architecture... and publish your interface. This allows not only for Multi-Player (MP) (hear that? MP!), but also customizable AI.

Of course, it's expensive resource wise... just for Single Player (SP) experience, you then run Host/Server, Human-Client, and AI-Clients (1 per AI playing). Most average game machines wouldn't have much trouble, but non-hotseat MP then requires some for of talking over the LAN or TCP-IP, unless you build a PBEM (very possible, but yeilds the architecture where every human machine is a minor host, and they all pass along the current RND seed to make sure that everything stays in synch).
Reply #15 Top
One thing I would like to see would be the possibility of conquering starbases instead of destroying them, using a combat transport, or a special version of it, dedicated to conquer starbases, it is a waste of resources to destroy a starbase when you could conquer it.quote]

I thought of exactly the same time, Mayito! I was thinking that when a SB hp reaches zero, we could get an option to capture or destroy it, then the AIs can capture them instead of letting humans vulture them. But it wouldn't make sense for an AMM to capture a SB. However, if AMMs are excluded, humans will continue to supply AMMs.

~SDC~
Reply #17 Top
Anyone know why this thread got stickied? Who did it? You mean Ray doesn't have the power to sticky himself?

Agreed Star Pilot, another advantage of an "exposed" API, is that someone could write a multiplayer API! Why not have an AI player really be a human via a remote internet connection!

Also, if you thought that the UI that shipped with the game was no good, you could write your own interface, and have it use this API!

If the gamestate is packed properly, it wouldn't be that much data to send over the API. Again, with a realtime game, this is infeasible. But with a turn-based game, I don't see the problem.

Besides, why couldn't the developers release the code to the AI players they wrote using the API, for player enhancement? The core game engine would be kept closed, protecting the intellectual property.

If you wanted to do proper multiplayer, you would have to have all players submit their orders simultaneously, with rules for resolving any conflicts that arise. This actually makes more sense. If moving my scout reveals valuable information, I really shouldn't be able to start using that information until the next turn. Right now, I can move a scout, discover a resource, and in the same turn change a nearby planet to start building a constructor. That doesn't sound right.

I would probably have the entire gamestate be stored on the server. Each client only gets the information they are legally entitled to get in-game. This way, cheating is impossible! (provided the server is trusted) If you have the client performing moves, you open up the possibility of cheating.

Also notice that I have all players taking their turns simlutaneously. That's really the only way to do multiplayer without unreasonable waiting times.
Reply #18 Top
Who did it? You mean Ray doesn't have the power to sticky himself?
End of quote


Probably Frogboy I think, he was here a while back.

No, player access levels don't come with any admin rights.

~SDC~
Reply #19 Top
Ray:

The new stardock central gives you a very misleading message if there's no updates available for download. So you may in fact have the latest version of everything.
Reply #20 Top
hey, ray, do you happen to know if i can upload an image to a blog post? do they have to be offsite? the developer logs had listings like /joe/daily45345634/image.png but i couldn't find any image upload mechanism.
Reply #21 Top
I don't know how, russell, but Theoden says the pics have to be off-site.

I think you use the external url.

~SDC~
Reply #22 Top
a delivery mechanism might be installed where a purchased, traded, donated ship has to travel to the nearest controlled planet (to have the crew exchanged) before it is available for use.
End of quote

-- Maxtipherous

that is exactly what i have just came up with at ray's blog spot.
so i havent been the first to think of it ... too bad :P

i am convinced that that would be a good solution to the exploit where the sold ships had been positioned directly adjacent to the starbase the new owner would hopefully blow apart so that the player can harvest the resource.


[Message Edited]
[Message Edited]
[Message Edited]
Reply #23 Top
russellmz2,

No, there currently isn't an image archive in the joeuser blogs. I've got my images stored on my own webspace, and just link to them from there.

Great job on the FAQ, by the way! :HOT:
Reply #24 Top
I always thought that when I trade a ship, it should keep my military bonuses. If I have a +100% attack and defense, and I trade the ship to the Carinoids, they should get to keep the bonus.

It always sucks to see my former Dreadnoughts losing to Battleships at the hands of the Carinoids.
Reply #25 Top
fsk+,

I agree that independent programs which could be either players or ai's over a LAN or the net would make for a fun game, and a nice Turing test experiment.
I still believe that coding an ai is hard. I know Angband borg, but a borg couldn't be made to beat nethack (neither could I, by the way). Corewars appeals to hackers by definition. I know someone who isn't interested in ai at all but who would always have me play corewars.
My main point is that the API has to give a lot of handles, and even then, you limit the number of people able to program an ai to C++ programmers (actually, if you use executables over a network, any language would do). Using a scripted language provides more flexibility, because you can either just mod what already exists (this can give very good and varying results for a small amount of work) or rewrite stuff entirely.