Is there some AI in the computer game engine or is a pure random around the "performance" settings? I will like to propose some basic rules of the match to be added to engine. Like for example to not waste a vowel when gaining in points is small(not place "AUZ" for 65 points when "UZ" is 64). I think that can be made a set of rules for choosing the best tactic move, not the best valued move, that can be weighted with "performance" value.
The move is computed by brute force. All combinations of letters, words, and positions are tested. Some functions are implemented that selects the preferred move as you suggest, but just based on number of letters, points and jokers. "Performance" can be used in combination with "determined" to reduce the computer's power. Internally, the list of words found is re-sorted to either get the precise percentage of best value or approximately. We can discuss some additional conditions but I'm afraid the calculation will become too difficult. Perhaps Gero, the expert on that topic, will join the discussion.
I´m sorry to say that your idea of avoiding a waste of vowels is not practicable.
The reason is that Scrabble 3D supports many languages and every language is very specific as far it concerns the percentage of vowels to consonants. Our italian scrabblefriends e.g. use much more vowels than we do in German. It would be nearly impossible to implement a feature, which would make your surely good idea practicable.
Our dictionary for german language does not know such problems because it is very mighty and widespread, so this deficit can be balanced thereby. Perhaps other (smaller?) dictionaries cannot handle this problem as well ...
Perhaps i not give the best example. Some other flagrant tactical errors that engine do: -open a possible 3x, or worst 9x word value move. I see something like this in a really easy move, 20 points placed, when for 2 or 3 more points computer open for me the possible 9x by placing a word from c11 to c15. Useless and flagrant tactical error. -open same place (3x word, row or column) by placing a word that can be continued easy. In our language almost any word can be continued in many ways. For example MANCA (to eat) -MANCAT -MANCAI -MANCAM -MANCAU any honest player will avoid such a open move that can be continued in dangerous places like 3x word 2x word. This is, of course, dependent t of existence of that letters (T,I,M,U)in that moment in stock. This can be on the other side, a brilliant move when only you have that letters on your rack. -placing vowels near to 3xletter, opening game for a possible 50-60 points response with only 2 letters placed. This opening move can logically be made only if you place a move with at least a same value move. In our language are 12 letters with 8+points that can form words of 2 letters in combination with almost any vowel, and placing a vowel near to a dark blue square will almost guarantee you a 50+ response. This is again dependent of letters in stock.
This are some examples of rules independent of language. I don't see a big problem for checking if the move do not break any of this rules. After the list of possible moves is calculated, and the next move is chosen according to "performance" parameter, check if not break any of this rules and give a chance to avoid the move according again with the "performance" value and place the next valuable move that do not brake any rules.
Another rule can be defined as "balancing the rack", and this is dependent of language. I can give you, for my language a value of how "friendly" is every letter. In our games, balancing the rack is very important, and we almost anytime (if do not place scrabble or 40+ move) try to keep the best letters that are best for a possible scrabble. Some time triple letters are annoying, and i cannot imagine a move that do not place two of P if i have on my rack PPPxxxx. Another idea is to have at least 2 vowels in next rack, and every move is make according to this rule. Is acceptable to remain with 2 or 3 consonants on rack after move (or vowels) but is bad to keep 4 or 5 or worst 6 consonants. I belive that for every language can be made another set of rules that must be checked after selecting the possible move list.
I really belive that this rules can be translated in mathematical equations and check the next move. The first 3 rules i give are really necessary in engine to add a tactic dimension to this program.
Is it really possible to program such tactical rules that are applicable for each language? The developer (in our case Scotty) must have a very detailed knowledge about vowel/consonant distribution in the words of each language, which really is not easy...
For first 3 rules, regarding "opening the game", knowing about vowels and consonants is not required. Define for example: -can be placed around your last move, with 1 letter a new move with > 22 points with one of remaining letters? This will mean that an dangerously opened spot, no matter where, because when you can place >22 points is 100% that the active multiplication field is near your word and if opponent will place at least 2 letters the result will be > 2x22 (>44). This can be weight with probability that the partner to have the "magic" letters. If in stock are 60 letters and you find 8 dangerous letters you will avoid the move, and if you find 2 letters you can take the risk if your move is valuable. Opening word that can be continued or place letters in dangerous spots like rows and colons with 3x word or 9x word or 4x word( form e5 to e11 for example) are easy too check regardless of vowel or consonants, just by defining dangerous spots on table and/or checking the possible sequels of your moves. "Balancing the rack" is another discussion and i agree that is impossible to apply this without analyzing the language, but i strongly believe that is realizable and a serious scrabble engine will have such an procedure. I will try to make some mathematical rules there also.
My bruteforce algorithm works rather stupid without any strategical or tactical consideration. I don't believe in easy adoption of such rules. But one point on my todo list is to integrate the Quackle engine that calculates propabilities of win/loss with certain words.