|
solveChess: what needs to be done.
|
Tom Ritchford
|
May 16, 2001 12:10 PDT
|
0. What solveChess needs to do.
0.1. You need to be able to play a good game of chess against an opponent.
0.2. You need to be able to chat about games with others.
0.3. You need to be able to record your analysis of board positions.
0.4. You need to have "ratings" that let you see how "well" you are doing.
0.5. You need to be able to do all of these activities from any protocol.
0.6. It all has to work effectively.
1. play a good game of chess.
1.1. you can create a game,
1.2. offer it to your buddies,
1.3. and accept a game.
1.4. you can effectively play the following timescales:
1.4.1. postal chess (no timelimit but one player IS on the move and must reply)
1.4.2. regular tournament times
1.4.3. blitz
2. chat about games with others.
2.1. allow chat to be sent to
2.1.1. a specific individual ("chat")
2.1.2. a specific game ("kibbitzing")
2.1.3. a specific board position ("analysis")
2.2. alerts
2.2.1. allow your buddies to be aware of your games before they start.
2.2.2. allow you to be aware of any games going over positions you
have an interest in.
3. analysis
3.0. you can browse, mark and comment the entire tree of legal games of chess
3.1. you can see all the records of every game you ever played.
3.2. you can attach chat to any position.
3.3. you can "mark" any position which is "the same" as playing
to that board position.
4. ratings
4.0. ratings represent every game you've ever played or marked,
as seen by the current state of the whole "solution".
4.1. a reward-only system.
4.1.1. you get rewarded for wins,
4.1.2. or ground-breaking analysis
4.1.3. and even a very little just for playing and marking.
4.2. a plug-in system
4.2.1. a Java function is handed your whole history, returns int.
4.2.2. users can write their own if they care or we can put in better ones.
4.3. important to make it work.
4.3.1. people want to improve and win and all that.
4.3.2. rating systems will let people say "I'm the best at 5 minute blitz"
or "I'm the greatest analyst". Lots of people win.
5. any protocol
5.0. a hard problem.
here's a difficult problem that we'll have to solve in a neat way:
consider a Person:
you need to represent the Person in many *protocols* (the usual list here)
but you also have many different *views* of the person.
In a mostly descending order it's:
5.0.1. A Person as the owner of that Person sees it when editing.
A whole page with edits here.
5.0.2. A Person as someone *else* sees it when they look at the person's page.
A whole page with less info and no edits.
5.0.3. A Person as the opponent sees it above a game board.
James Mungo Jr. (on move here for 36 seconds)
will play king's gambit for food!
5.0.4. A Person as someone sees the person as a kibbitzer.
James Mungo Jr.
and there will be more.
5.1. a solution?
So. There are multiple views to the person,
each of these views needs to be displayed in many protocols,
and many of these views are compound (are made up of pieces
which might also have multiple views/protocols).
Here's how I THINK this will work.
Please correct me if I'm wrong.
Each "view" will be a JSP page.
Those view pages will include custom tags
that will handle the protocols using
delegation to a protocol object.
6. It must work.
6.1. dynamic resource usage (CPU, memory)
6.1.1. dynamic resources the biggest problem?
I believe that for the moment, dynamic resources
like CPU and perhaps memory are going to be our biggest issue.
Since all the data is text and quite small, I don't
think we're going to run out of bandwidth or of disk
(and getting bigger disks is never really a problem...)
But I think the strain of running all this Java code
is going to add up if we have hundreds of simultaneous
connections.
So I think the solution to this is a lot of RAM and relentless
caching of the results with something like Squid-cache
<http://directory.google.com/Top/Computers/Software/Internet/Servers/P
roxy/Caching/Squid/>
6.2. other difficult issues?
7. What's there already?
I already have a buncha code written which seems to work
pretty well and is "mostly" independent of the representation format.
<http://www.editeverything.com/chess/doc/>
(the Printer stuff is the "hack" which will be removed.)
The rest of it might get refactored a few more times
but has been relentlessly tested and certainly works.
/t
[nb: there is a reason why some categories have a 0 subtree
and others don't... why there is no 0.0 or 1.0 but there is a 3.0...]
...electronic a cappella madness <http://volectrix.com>.........
...extreme internet radio <http://extremeNY.com/radio>...
|
|
 |
|