Warning, /games/bovo/TODO is written in an unsupported language. File is not indexed.
0001 Things I want before KDE 4 beta 2 0002 ================================= 0003 [ ] Board is way to small at first startup. 0004 [ ] There is no indication the game starts in a demo mode 0005 [ ] Game over message is displayed in status bar. Not nice. 0006 [X] Remove all names from source files. For copyright holders, refer to svn 0007 log. We want collective code ownership. 0008 ['] Documentation/Handbook. 0009 ['] Game rules 0010 ['] Game features / "Help" 0011 ['] Game strategies 0012 ['] Game history (Gomoku, Connect5, ...) 0013 [ ] Theme creation 0014 [ ] Apidox. 0015 [X] Ai 0016 [X] Game 0017 [ ] Gui 0018 [ ] Mainpage.dox 0019 [X] Fully i18n. 0020 ['] Code beautification. 0021 [X] Ai 0022 [X] Game 0023 [ ] Gui 0024 [ ] Naming conventions 0025 [X] Indentation 0026 [X] close namespace with comments 0027 [X] close #endif with comments 0028 [ ] sort functions, methods and properties 0029 [X] name all #ifdefs __CLASNAME_H__ 0030 [ ] /* comment */ all private stuff 0031 [ ] Tooltips. 0032 [X] Theme support. 0033 [ ] Configuration dialogue. 0034 [X] Save AI level and theme from session to session. 0035 [X] Logic cleanups. 0036 [X] Allways use Player instead of int 0037 [X] Give the best AI level a different name 0038 [/] Get rid of exceptions, to fit into KDE (AI left) 0039 [ ] Implement draws (yes, it have never ever happened to me in real life, but it 0040 is not impossible in theory, ...right?) 0041 [ ] "New game" doesn't mean a loss if it's just started. 0042 [ ] Kidnap an artist for some decent artworks 0043 0044 ============================================================================= 0045 0046 THEMES (4.0) 0047 ============ 0048 [ ] scribble (pen on paper) [IMPROVE] 0049 [X] spacy 0050 [X] gomoku 0051 [ ] KDE vs Gnome 0052 [X] high contrast 0053 0054 ============================================================================= 0055 0056 FEATURES (4.1) 0057 ============== 0058 [ ] Status message and game events printed "onboard" 0059 [ ] configure dialogue 0060 [ ] keyboard navigation ("no mouse" gameplay) 0061 [ ] That nice new AI... 0062 [ ] KNewsStuff2 for themes 0063 [ ] Winning line fades in, move by move 0064 [ ] "Stains" support 0065 [ ] Rotate Stains by 90, 180 and 270 degrees 0066 [ ] "Stains" extended (paint all buttons, menus etc in pen-on-paper style) 0067 [-] Change replay & demo playback speed 0068 [ ] Change board size 0069 [ ] "Natural paper" whith coffee stains, etc. 0070 [-] Save a replay 0071 [ ] Open a replay 0072 [-] Save an active game and open it again 0073 [X] Start with latest game when opening 0074 [X] Save stats from time to time 0075 [ ] View history in a right or left pane, where previous moves are displayed. 0076 [ ] Enable LAN gaming (broadcast the local domain for other willing to 0077 participate.) 0078 Look into kgamelib or what it is called. Create XML-like open protocol for 0079 Bovo friends, letting Gnomes play with us (is it possible to add a feature 0080 to the protocol that allways makes them loose? =P ) 0081 0082 ADAPTING AI 0083 =========== 0084 ADAPTING AI: AI skill starts at Normal, and then it gets reevaluated after 0085 every gameover. The reevaluation takes into account the last 10 games played (if 0086 10 games hasn't been played yet it's a new user and special rules will apply). 0087 However, this 10 latest games is "evaluated" (who won the most, the player or 0088 the AI?). If AI wins more than 4 out of 10 games, lower the difficulty by a few 0089 points on a 100-level scale. If player wins more than half 7 games out of 10 0090 games, make the AI slightly more challenging. This will mean that the player (as 0091 he/she) gets better will start facing more challenging opponents, but still they 0092 won't be disshearteningly hard. The algorithm is meant to mean that a balance 0093 will occure were the player allways faces an opponent he will win ~60% of the 0094 games against, making him feel good about him/herself, lowering his/her blood 0095 pressure and making him/her like this game. :P 0096 [ ] Implement background cogitating in AI (thinking over possible plays in a 0097 separate thread while player is thinking). 0098 [ ] Implement forsight in AI (AI guesses what moves the player might attempt) 0099 [ ] Implement depth searching in AI (If player plays this, then I could play 0100 this and the player could do this and I can do this...). 0101 [ ] Implement width searching in AI (AI evaluates many possible moves; multiple 0102 depths) 0103 [ ] Make sure width+depth searches is reflected in the "root" of the AI, so the 0104 AI chooses the path that seems like the best one. AI will be able to 0105 deselect entirely paths it discovers leads to losses or strong 0106 playerpositions. 0107 [ ] Implement a board vurdering (count offensive and defensive points appart and 0108 see which points is valued the most, to guess which player is most likely to 0109 like a given board). 0110 [ ] When a move is made by the player, drop all know redundant paths from the 0111 strategy and focus on the ones left. 0112 [ ] Make the AI cogitating thread do multi-tasking. That is, all 0113 depth-width-searches gets added to a wait list, and the AI will in turn 0114 vurdere them. Removes from this list should be easy as well (certain losses, 0115 we want to avoid if the player is not of the weaker kind AND when the player 0116 plays a move, all children to other moves must be removed -- Actually 0117 it's better if we just clear eveything specified to be not in a certain 0118 path.) 0119 [ ] Make the aiboard reversable (return a copy and change the playedID) so it is 0120 easy to alter between player and AI "thinking". 0121 [ ] Make this super-AI adjustable, by making miss-calculations (only in 0122 AI-thinking -- it has to presume player is allways a mastermidn) and by 0123 selecting weaker moves (unless they are extremely obvious, like 0124 four-in-a-row). Also make the AI weaker by limiting how deep and wide it is 0125 allowed to calculate. 0126 [ ] Make the width of paths adjustable by how likely they are. If there are many 0127 similarly pointed moves to make, explore them all, but if there is only a 0128 few great only evaluate those. 0129 [ ] Set max depth and width. The closer to the root, the "wider" path is 0130 allowed, and the better paths can also be explored wider and deeper. 0131 [ ] Allow the AI a few seconds of cogitating before forcing it to make a move. 0132 [ ] Find a nice balancing algorithm that ensures the player will face 0133 slightly-easier opponents. 0134 [ ] If 10 games hasn't been played yet, start with a random difficulty. If that 0135 proves to be to hard, back down by half (and so on) or double the 0136 difficulty, until the players starts loosing/winning. Then back down 0137 halfways to the last value and continue to do so whenever the 0138 winning/loosing situation changes but keep making it harder/easier if the 0139 situation doesn't change. When 10 games has passed, start playing with 0140 normal adaption. 0141 [ ] Turn on highscore and connect that between adapted difficulty of AI and time 0142 of play. 0143 [ ] Turn on global highscore. Send in exceptionally great levels of difficulty a 0144 player has reached to an Internet server, so a top-100 masterminds of the 0145 KDE world list is created. :) 0146 [ ] If window gets inactive, pause the AI cogitating thread. 0147 [ ] Refactor out this cooooool adapting AI into a lib, which all KDE Board games 0148 could use! (GSoC idea?) 0149 0150 BUGS 0151 ==== 0152 [X] Several marks are lost when winning line is painted in replay mode. Odd.. 0153 [ ] This might be buggy, haven't checked: when starting an autosaved game; 0154 continue the computerbegins-playerbegins sequence (who made the first move in 0155 the history?) 0156 [ ] Area outside of scene isn't updated correctly when switching theme. 0157 [X] Wins vs. Losses is not updated on startup, but at first when one both has won 0158 and lost. 0159 [X] At startup, playbackSpeed is reset to 2000, due to it beeing to big. Why????? 0160 [X] Undo crashes. 0161 0162 OTHER 0163 ===== 0164 [ ] Move this list to a wiki! 0165 [X] Clean up the namespace mess. 0166 [ ] THE SAME THING WE DO EVERY NIGHT, KONQI: TRY TO TAKE OVER THE WORLD! 0167