neuromancer
Posts: 627
Joined: 5/30/2002 From: Canada Status: offline
|
Ah, should have realized it was an old bug. On the one hand - as a programmer - I know very well that programming an AI is a very difficult piece of work. But they have already done the majority of the hard part. In theory what it should be now is fine tuning the weightings in the game tree. For those that don't know - and very simplisticly - the game tree is what the AI actually is. The weightings are how it decides what to do. If X, Y, and Z are true, and as Z is more important than X and Y combined, then do A. If X and Y are true, but Z isn't, then do B... etc., etc. A lot of the work on heavly modable games like SE4, and HoI is actually in tweaking the AI. The components of the game tree (or at last many of them) are in text files that the game reads in at runtime, and thus while it is very difficult to add new things into the game tree (as the base code had to be in the core game), you can definitely alter some of what the computer does, and heavily alter when it does it. The computer tends to put too many troops at point A, and none at B? Make sure B is in the game tree as somewhere it can put troops, and lower the weighting on A, and increase it on B. Maybe increase (marginally) the importance of C, D, E.... etc. as well. Or in this case, it sounds more like a straight out flaw in the game tree. The weightings should have right near the top 'if cargo not empty, then continue to unload', other weightings would be about what to do when the cargo is empty, when enemy carriers and surface fleets are spotted, when attacked, etc. But really it should have as destinations available two variables, two constants, with a fifth default. A. Target port B. Home port C. Brisbane D. Noumea - in all four cases, that location would be considered invalid if it was IJN held. E. The bottom right corner of the map. E. would be selected as 'open sea' or a flee location if all four core locations were unavailable. Obviously it would be more complex than that, and E would probably be some complex code of away from enemy units, preferably towards friendly, etc. But you get the idea. But there must be something in there about 'if cargo not empty, and the moons of Jupiter are in alignment with Saturn, go to a random Japanese held port'. WTF? So if the problem was AI 'decision making', you would think it something they could fix by just tweaking the game tree and the weights. But it sounds like that either the game tree is too deeply embedded into the program (i.e. not easy to 'tweak'), or it is a more fundamental bug in the program that is extremely hard to track down (and I know how hard that is, particularly if the flow diagram of your code is more like a pot of spaghetti than the neat blocks we were taught to make in school). Oh well, I don't consider any of the bugs I've seen lately to be game breaking. Annoying certainly - I think I've only found 4 actual bugs, and the usual AI silliness - but nothing game breaking. And actually, as AIs go, UV's is pretty darn good. I've seen some that are much, much, MUCH worse.
|