Incy
Posts: 336
Joined: 10/25/2003 Status: offline
|
quote:
ORIGINAL: Incy -random numbers: loose the double matrixed random generator idea, it does not help. As someone said, look up in a book how to do random generation. Find a decent generator/algorithm in a book. Probably the book will reccomend how to safely hash the random generator output with system time as well (don't use system time alone!). quote:
We probably won't agree on this. I have rather simple aims for the random number generator and little interest in the heavily theoretical side that most books go into. My only real concern is that the numbers are evenly distributed and random. There are simple checks I can do to make sure of that. I agree completely that relying on time alone is incorrect. Don't be to sure we can't agree :) The reason I think you shouldn't mess around with some sort of home-grown 2*RNG matrix is that: -it will add complexity(= more time spent, more bugs) -IMHO you're more likely to reduce randomness rather than add it (why would best be explained over about 5 beers). A good, single RNG solution will most likely allready have little tricks like the one you describe embedded (IF theory dictates that such a trick would improve the result). And the implementation would be by someone who spent time understanding the underlaying theory. To see if I could be of help, I did a little googling, and found: http://csrc.nist.gov/rng/rng6_2.html At least one of those mentioned ( http://www.schneier.com/yarrow.html ) are opensource and freely available. I'm sure you could google others, surely someone allready coded a decent delphi RND. mWiF does not have a demanding need for RNG, we need only something that is normal-distributed and does not display any obvious patterns. btw, it should be noted that the existing CWiF implementation did indeed have serious bugs in it's RND code (at least for 2d10). Chris fixed a bug, but having used CWiF quite a bit since that fix I'm still uneasy about the reandomness of numbers (enough to use an external RND generator for important rolls). quote:
-PBEM: You need to get it down to very few emails/turn. When we play, we do 1 save/impulse, and about 2-3 for EOT, plus usually one for important DOWs (where setup/alignment is critical). The phasing player decides what the non-phasing player does unless there's something really critical going on. Decitions are subject to notes(on units) and general intructions. We also have some special rules, most notably that RTB can be changed once the non-phasing player resumes control (effectively, it happens at the start of the next impulse, so a chasnge in sequence of play). In a real PBEM game, I suggest: -change sequence of play, all RTB by non-phasing players happen at the start of next impulse/go. That actually changes the game rules/logic slightly (when returning units, it might be better known if a hex is safe or not). But the upside is huge, much less planning required, and complexity is much reduced. -have AI make choices for the non-phasing player.(i.e taking over the job of the phasing player in our games) -give the non-phasing player some handles to be able to adjust the AI to his liking (to some extent). What handles there should be of course depends on the AI implementation, but the AI SHOULD cater to taking external parameters from players. It's generally a bad idea to allow/encourage/require players to do to much micro-managing (= explicit decitions), because that will tend to break an AI. Good input to an AI could be things like: acceptableLossRatio(in expected lost BP vs. inflicted BP), maintaining<Unittype>ReserveHappiness (how much to keep back), agressiveness, <unittype>Highthened/LoweredValue (care less/more about keeping certain units alive), holdGroundStance (fighting a mobile defence vs. trying to hold the line), missionTypeImportance (lets AI know what enemy mission types you worry more about), etc. Players could also be allowed to assign simple flags (more/less value, save this unit, etc) to hexes/areas/individual units. Anyways, the goal should be to have only a limited set of buttons for the player to play around with, and a decent "default" behaviour. Time spent tweaking the AI is not quality gametime for most people. Leaving certain things to the AI should not be a big turnoff as long as the AI isn't a perfect moron, and as long as the "other guy" also gets to have his perfect plan ruined by the AI. quote:
First, I would like to keep a distinction between the AI that plays as an opponent (or partner) and the code that makes decisions on behalf of a player. To my mind the latter should only perform simple and straight forward tasks, not something that is too complicated. In any event, let's reserve the word AI for the opponent and use "standing orders" for the latter. I am not real happy with this choice of words but "programmed instructions", "scripts", and everything else I have thought of seem worse. I have yet to start the thread on PBEM - Other which will include DOW and EOT. I haven't put my thoughts on these down coherently enough on paper yet. I hope to get it done by Monday. Changing the order of play moving RTB to the start of a phase seems viable. It is just this sort of thing that made me decide to do the PBEM design as one of the first items to discuss. It could effect a lot of code. Probably we will want to make this an option. I am reluctant to impose my opinion on how people should play the game if alternatives can be provided without too much effort. Some of your suggestions for what the AI should/should not be able to do are broader in scope than what I envision for standing orders. If what you are thinking about is having the AI play the Japanese while you play the Germans, then those ideas belong in a future thread about the AI as a partner. I probably can't get to that for a couple of months. Most of your ideas in that paragraph are right on target and what we want to flesh out here. When you say parameters, the more specifics the better. How I interpret "acceptableLossRatio(in expected lost BP vs. inflicted BP)" might not be what you have in mind. By giving examples your meaning will be clearer so I get it correct. Simple flags on the other hand, even I can understand. Where I am headed is to define a data structure for standing orders that accommodates as much as possible, that isn't too confusing, and that can have a simple interface design so the players can give instructions easily. The settings I describe are my suggestions for what you term standing orders. Based on experience, I do not think a limited toolbox of quite explicit standing orders will work well. There's just to much the phasing player can do, and way to often something will be left out/be extremely badly covered by explicit standing orders (an ochit, a paradrop, a lucky flip or whatever else can completely change what a good strategy is). That's based on experience, I played several PBEM games where I spent as much as 20-30 minutes/impulse writing explicit-type orders, and still more often than not something would pop up that made a mess of my orders. So gradually, I ended up realizing that I got my intercepts handled a lot better if I left more to the phasing player, and just gave general instructions. Whenever I did give explicit orders, they were sill as general as possible, and the opposing player was always allowed to override my orders if a reasonable justification could be made. Thus, I think standing orders should be handled by something resembling a quite autonomous, fullblown AI capable of making reasonable choices on its own, but with a few some options to overrule or "push the AI in the right directions". To elaborate on the flags/variables I suggested (and which are loosely based on the types of orders I found it useful to give my opponents: -acceptableLossRatio(in expected lost BP vs. inflicted BP) By this I mean how happy I am to take losses/attrition. My opponent will use this to help decide for me whether or not to initiate battles/abort battles, plus also how to behave in naval battles (i.e. increase enemy losses or reduce own losses, think shortterm or longterm, what boxes to pick). For example, as Italy I usually let my opponent know that I need my expected losses to be about 0.5-0.6 of enemy expected losses for me to "want" to fight a battle. My CW usually has an acceptable ratio of 1.5 or higher. Of course, my opponent will also consider other issues than wether or not the attrition is within what I want (such as maintaining presence & supply) and will have to combine pros and cons and make a best judgement. -maintaining<Unittype>ReserveHappiness (how much to keep back) By this I try to assign a value to how important I find it to maintain a reserve of some unittype, for instance bombers. If I make this a high value, my opponent should justify it well if he commits all my bombers. So I let him know that he can use some, but preferably don't use all. -agressiveness By this I let my opponent know my stance on initiating battles. If I let him know I'm agressive, I'll expect him to intercept air missions more often/stronger, be more liberal with ground support, etc. In a nutshell, I tell him he's more free to commit "consumable" resources (i.e. planes, HQ support, etc that can only be used once befor it will be unavailable for the remainder of the turn. A good time to be agressive is when you have or can hope to achieve air superiority by drawing out enemy FTR, or it's late in the turn and you have oil to spend and feel your air bases are fairly safe from conquest. -<unittype>Highthened/LoweredValue (care less/more about keeping certain units alive) I use this to let my opponent know what units I value the most, both for my own units and for enemy units. For example, I will often say to my opponent that he should be careful about risking my TRS and/or cp, or my SUBs or my CVs, or I could announce that CW BBs/LS are to be considered "ammunition". My opponent will then consider units to have higher/lower BP values than printed -holdGroundStance (fighting a mobile defence vs. trying to hold the line) I use this to let my opponent know how I feel about such things as getting my units flipped, comitting short range air & HQ support(all of wich are much less preferable in a mobile defence) -missionTypeImportance (lets AI know what enemy mission types you worry more about) I use this to let my opponent know better where to use my sparse units, particularly FTR cover. Sometimes I'm worried about ground strikes, other times a looming paradrop is more of a concern. Yet other times I feel I have good enough control to intercept them pesky strat-bombers, and sometimes I'm definately not in the mood for port strikes or air transports. Players could also be allowed to assign simple flags (more/less value, save this unit, etc) to hexes/areas/individual units. I use this to designate important hexes, for instance I sometimes reserve air units for reaction to particular sea boxes. Other times I let my opponent know some hexes I definately don't want to allow missions against and/or want to use my bombers to try to save, other times I let my oponent know that he shouldn't waste resources on certain places, for instance units left to their fate. OK, hope that cleared up a bit what I meant
|