1 Things I want before KDE 4 beta 2
2 =================================
3 [ ] Board is way to small at first startup.
4 [ ] There is no indication the game starts in a demo mode
5 [ ] Game over message is displayed in status bar. Not nice.
6 [X] Remove all names from source files. For copyright holders, refer to svn
7 log. We want collective code ownership.
8 ['] Documentation/Handbook.
10 ['] Game features / "Help"
12 ['] Game history (Gomoku, Connect5, ...)
20 ['] Code beautification.
24 [ ] Naming conventions
26 [X] close namespace with comments
27 [X] close #endif with comments
28 [ ] sort functions, methods and properties
29 [X] name all #ifdefs __CLASNAME_H__
30 [ ] /* comment */ all private stuff
33 [ ] Configuration dialogue.
34 [X] Save AI level and theme from session to session.
36 [X] Allways use Player instead of int
37 [X] Give the best AI level a different name
38 [/] Get rid of exceptions, to fit into KDE (AI left)
39 [ ] Implement draws (yes, it have never ever happened to me in real life, but it
40 is not impossible in theory, ...right?)
41 [ ] "New game" doesn't mean a loss if it's just started.
42 [ ] Kidnap an artist for some decent artworks
44 =============================================================================
48 [ ] scribble (pen on paper) [IMPROVE]
54 =============================================================================
58 [ ] Status message and game events printed "onboard"
59 [ ] configure dialogue
60 [ ] keyboard navigation ("no mouse" gameplay)
61 [ ] That nice new AI...
62 [ ] KNewsStuff2 for themes
63 [ ] Winning line fades in, move by move
65 [ ] Rotate Stains by 90, 180 and 270 degrees
66 [ ] "Stains" extended (paint all buttons, menus etc in pen-on-paper style)
67 [-] Change replay & demo playback speed
69 [ ] "Natural paper" whith coffee stains, etc.
72 [-] Save an active game and open it again
73 [X] Start with latest game when opening
74 [X] Save stats from time to time
75 [ ] View history in a right or left pane, where previous moves are displayed.
76 [ ] Enable GGZ gaming (this means create a GGZ game for this as well I guess)
77 [ ] Enable LAN gaming (broadcast the local domain for other willing to
79 Look into kgamelib or what it is called. Create XML-like open protocol for
80 Bovo friends, letting Gnomes play with us (is it possible to add a feature
81 to the protocol that allways makes them loose? =P )
85 ADAPTING AI: AI skill starts at Normal, and then it gets reevaluated after
86 every gameover. The reevaluation takes into account the last 10 games played (if
87 10 games hasn't been played yet it's a new user and special rules will apply).
88 However, this 10 latest games is "evaluated" (who won the most, the player or
89 the AI?). If AI wins more than 4 out of 10 games, lower the difficulty by a few
90 points on a 100-level scale. If player wins more than half 7 games out of 10
91 games, make the AI slightly more challenging. This will mean that the player (as
92 he/she) gets better will start facing more challenging opponents, but still they
93 won't be disshearteningly hard. The algorithm is meant to mean that a balance
94 will occure were the player allways faces an opponent he will win ~60% of the
95 games against, making him feel good about him/herself, lowering his/her blood
96 pressure and making him/her like this game. :P
97 [ ] Implement background cogitating in AI (thinking over possible plays in a
98 separate thread while player is thinking).
99 [ ] Implement forsight in AI (AI guesses what moves the player might attempt)
100 [ ] Implement depth searching in AI (If player plays this, then I could play
101 this and the player could do this and I can do this...).
102 [ ] Implement width searching in AI (AI evaluates many possible moves; multiple
104 [ ] Make sure width+depth searches is reflected in the "root" of the AI, so the
105 AI chooses the path that seems like the best one. AI will be able to
106 deselect entirely paths it discovers leads to losses or strong
108 [ ] Implement a board vurdering (count offensive and defensive points appart and
109 see which points is valued the most, to guess which player is most likely to
111 [ ] When a move is made by the player, drop all know redundant paths from the
112 strategy and focus on the ones left.
113 [ ] Make the AI cogitating thread do multi-tasking. That is, all
114 depth-width-searches gets added to a wait list, and the AI will in turn
115 vurdere them. Removes from this list should be easy as well (certain losses,
116 we want to avoid if the player is not of the weaker kind AND when the player
117 plays a move, all children to other moves must be removed -- Actually
118 it's better if we just clear eveything specified to be not in a certain
120 [ ] Make the aiboard reversable (return a copy and change the playedID) so it is
121 easy to alter between player and AI "thinking".
122 [ ] Make this super-AI adjustable, by making miss-calculations (only in
123 AI-thinking -- it has to presume player is allways a mastermidn) and by
124 selecting weaker moves (unless they are extremely obvious, like
125 four-in-a-row). Also make the AI weaker by limiting how deep and wide it is
126 allowed to calculate.
127 [ ] Make the width of paths adjustable by how likely they are. If there are many
128 similarly pointed moves to make, explore them all, but if there is only a
129 few great only evaluate those.
130 [ ] Set max depth and width. The closer to the root, the "wider" path is
131 allowed, and the better paths can also be explored wider and deeper.
132 [ ] Allow the AI a few seconds of cogitating before forcing it to make a move.
133 [ ] Find a nice balancing algorithm that ensures the player will face
134 slightly-easier opponents.
135 [ ] If 10 games hasn't been played yet, start with a random difficulty. If that
136 proves to be to hard, back down by half (and so on) or double the
137 difficulty, until the players starts loosing/winning. Then back down
138 halfways to the last value and continue to do so whenever the
139 winning/loosing situation changes but keep making it harder/easier if the
140 situation doesn't change. When 10 games has passed, start playing with
142 [ ] Turn on highscore and connect that between adapted difficulty of AI and time
144 [ ] Turn on global highscore. Send in exceptionally great levels of difficulty a
145 player has reached to an Internet server, so a top-100 masterminds of the
146 KDE world list is created. :)
147 [ ] If window gets inactive, pause the AI cogitating thread.
148 [ ] Refactor out this cooooool adapting AI into a lib, which all KDE Board games
149 could use! (GSoC idea?)
153 [X] Several marks are lost when winning line is painted in replay mode. Odd..
154 [ ] This might be buggy, haven't checked: when starting an autosaved game;
155 continue the computerbegins-playerbegins sequence (who made the first move in
157 [ ] Area outside of scene isn't updated correctly when switching theme.
158 [X] Wins vs. Losses is not updated on startup, but at first when one both has won
160 [X] At startup, playbackSpeed is reset to 2000, due to it beeing to big. Why?????
165 [ ] Move this list to a wiki!
166 [X] Clean up the namespace mess.
167 [ ] THE SAME THING WE DO EVERY NIGHT, KONQI: TRY TO TAKE OVER THE WORLD!