So, who's down?
I vote we come up with the best chess AI we can code and see who's ai wins in a tournament among the other ais.
I've never done chess Ai before, or a so basic one that it can't really be called an AI.
Can you share any ressource / documentation on the subject that you liked ?
Can you share any ressource / documentation on the subject that you liked?
Tim Hartnell's The Giant Book Of Computer Games.
Plays awful but it's BASIC basic code and 381 lines only (including comment lines and such). It is easy understandable and can be improved easily (I think).
I've never written chess AI before either, but I think I could do a decent job with it.
You would have to implement scoring of moves somehow, based on position, threats, defense, and capturing pieces. Then make the best move.
I'll give it a try then :-)
Would you let like to help create the framework? Do you have some client server code?
I have some C client server code, with a basic network_message encapsulation which allow you to make network message of int/double/char* collections.
The calls can be threaded but it's not an obligation.
If it's fitting, then it's pure C and free of course.
I would gladly provide the source and examples, even binaries if it's under debian stable or windows.
Not tested but it should work on android too (/rent)
I'd love to take a look at your source code and an example program!
Would be fun to try but I'm pretty busy at the moment. What's the deadline?
Planning stages only
in what Lag Pithon?
Hello, I read the thread and I would like to participate, I can provide my server protocol so that each one creates its own client program, my server already has everything necessary, works together with the identified user, chat and chess game.
With this I would facilitate all the work of the Server and Client, and it would save them the problem of mixing IAs, each AI opens as a different program with different users account, and the rest of users can see how the game playing as a guest.
What is needed is to create the basic functions of the AI within a library, at least to better understand the functioning of the AI.
What do they say? They accept it?
rmbeer you should make a private repository and then allow Gullradriel and I to be contributors do you have a GitHub account?
I'm in bitbucket. Tell me the name of your account.
bugsquasher https://bitbucket.org/bugsquasher/
You now have access.
I could not answer before but here we go, the 32 and 64 bit windows example
Link to the example source code. You can scroll back to see the other files if needed.
I may have some times tomorrow to get out a simpler example and a little project.
I think anyone can create an account / git on framagit.org, where I'm actually hosted.
Edit: I'll look at the other things you said after a night of good sleep :-)
Then it will try something better than bitbucket, but for the moment we use that.
EDIT:
Although it is an open competition with no time limit, it would be better if you had some simple rules for the game, such as agreeing on Sundays each week to put them to battle and accumulate points.
I am still not sure if a basic API for all is necessary, I feel that this could harm the game.
What about my server? Do you want to use it?
We need to actually see your server code before we decide if we're going to use it. 
There will have to be a time limit. We can't give unlimited CPU out and expect the games to finish anytime soon.
The competition won't start for several weeks/months. We have plenty of time to iron out the details.
There should be a ranking or elimination round before the competition, so we can make a better match up for the actual competition.
The clients should have to follow a certain API to enforce rules, legal moves, time limits, and prevent cheating.
How long should the competition last? 48 hours? 72 hours?
amarillion, you were probably expecting this, but would TINS be available to host the competition?
Oh, and one last thing, I want to call the program CHAI, for Chess Hack Artificial Intelligence.
The server is available from the internet, any user can connect to the server, login/register and start playing, has time limit, saves the moves and controls that there are no cheats, no need to build any of that, so neither your source code is missing. Or are you thinking of something else? Did you plan to build the server yourself? How did you plan to test AI? I was just offering my server to save so many problems.
Have you already thought or planned everything or do you need more time to plan? Are you going to be the only moderator of the competition? Maybe I can help, because I'm interested.
Can you publish your server protocol?
Your client didn't work and it isn't yet compatible with an ai player unless I'm mistaken.
Your client didn't work and it isn't yet compatible with an ai player unless I'm mistaken.
May you expand please ? Is there an ai protocol and where ?
Do you plan on us making a sort of text based server to host the chess parties ? With a given api for people to interact with their AI and a hosted party ? text based ?
Just askin' ;-)
Gully I was speaking to RM beer he has a server a chess server setup.
I haven't had the chance to look at your code yet but I will promise.
You can download the basic info of the procotol from here:
http://blackrook.ddns.net/priv/ProtocoloComunicacion-en.pdf
By any problem that you have, tell me in the IRC channel.
I also recommend that you do not disclose this protocol outside of the participants of this competition, because I am not sure of doing it yet.
I looked briefly at your protocol we would have to write a client or at least a basic client so that everyone could derive their own from it.
I don't currently have a working computer that I can work on so I can't really look at any code right now but I'll try when I get home.
Edit
In all reality, the user would only need to write one function.
All processing would be done on the server, so as to keep it fair, and to give equal time to each process.
typedef MOVE(*MakeAMoveFunc)(const BOARD& b , unsigned int turn_num , bool am_i_black);
Then all the user would have to do is supply a function pointer. We could write the rest of the client ourself.
The most complicated thing is to create the connection and disconnection functions, especially in TLS.
The rest of the functions is only about assembling commands in binary and sending it by connection.
Then a separate function to read the answers received and to be called in each frame (Unless there is another better method).
It seems good to me that an API is still needed so that everyone can communicate more easily with the Server, but is it necessary for the participants to use their functions for AI? Is not part of the challenge?
The most complicated thing is to create the connection and disconnection functions, especially in TLS.
The rest of the functions is only about assembling commands in binary and sending it by connection.
Then a separate function to read the answers received and to be called in each frame (Unless there is another better method).
This sounds like a job for you and Gully. I don't have any experience with sockets or clients and servers, so you would both probably do a faster better job than I would with this part.
It seems good to me that an API is still needed so that everyone can communicate more easily with the Server, but is it necessary for the participants to use their functions for AI? Is not part of the challenge?
I'm not quite sure what you mean here. Could you explain a little?
I'm writing up a framework and a new client. If we could use your server and server code we would be good.
EDIT
Prototype human game almost ready
EDIT2
Been debugging allegro, haven't had a chance to finish yet. Bump for more time.
EDIT3
Implementing the rules is taking a little longer than expected. Patience.
EDIT4
Basic moves are done. Haven't implemented things like king check checking yet. Pawn promotion and castling are coming. After that, a playable prototype should be ready.
{"name":"612019","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/6\/8\/68c81a3937844e67dc8a561371f8b876.png","w":1282,"h":833,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/6\/8\/68c81a3937844e67dc8a561371f8b876"}
EDIT5
It should be two person playable by the end of the day. Standby.
EDIT6
I lied. Tomorrow.
Here I come to bump so Edgar doesn't need to edit his post!
Awesome, thanks Mr. Fire. 
Anyway, I lied again. It needs a day of debugging before it will be ready. Sorry for the delay.
I got your mail Ed, but I had not time to spare. I may have some time during the next few days, I'll try to make you a correct answer this evening.
Don't worry Gully, PM me when you have time 
Almost ready....
Ironing out some last minute bugs...
Adding save games and loading...not tested, no controls yet
Adding color adjustment...
Adding rewind and fast forward (ooh la la) (doesn't quite work yet)
Ctrl R resets the game at any time.
Technically when it's checkmate there won't be any moves left, but I haven't programmed anything special for it yet. I checkmated in one game, and the move list was empty.
Select start and destination with the LMB. Right click cancels the selection.
Left or Right will change black's hue. Hold shift while pressing left or right to change white's hue.
Hover over or select a piece to see its moves.
Get your static win32 binaries here (CHAI2P_distro1.7z).
Obligatory screenies :
{"name":"612024","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/1\/d173b7173f5680684d6bdb1816fc42f7.png","w":1026,"h":801,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/1\/d173b7173f5680684d6bdb1816fc42f7"}
{"name":"612025","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/f\/c\/fc6503f8b73f13eb66ce810fd25b180d.png","w":1026,"h":801,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/f\/c\/fc6503f8b73f13eb66ce810fd25b180d"}
{"name":"612026","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/1\/d\/1d7b98438b4e53c6c7a4d9be2e1f4515.png","w":1026,"h":801,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/1\/d\/1d7b98438b4e53c6c7a4d9be2e1f4515"}
And one for fun - playing with the same hue :
{"name":"612028","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/7\/a\/7aec8fdd3f1ab1df881a3bd7c0068a75.png","w":1026,"h":801,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/7\/a\/7aec8fdd3f1ab1df881a3bd7c0068a75"}
For the most enjoyment, play with two mice.
xD
OK, now in what consist the ssl server ?
What do you want Ed ?
I was thinking of functions inside separated threads which would allow you to use something like AddNetworkMessage when you need it, and a GetNetworkMessage which would return queued messages if any.
Is there a description of the protocol somewhere ? Where do I obtain the certificate to test for a connect or two ?
I'm going to make some tests using y own generated certificates, but I'll need what I asked to make the glue between Ed's gui and your server.
BTW Ed if there is a Gullsomething somewhere, you can be pretty sure it's me. GitHub you said ?
rmbeer's server may be overkill for this. We could probably throw one together fairly quickly (a week or three) if we don't use it.
His protocol is linked above.
Gullradriel, is this you? https://github.com/GullCode
Woah. Just found this :
It's me, but I've choose framagit instead since microsoft bought github. I'm here for my public publications (heh) https://framagit.org/GullRaDriel
Docs for my api can be found here: https://www.nilorea.net/html/index.html
And if for a start it's just you and me and a custom client server in C/C++, we'll have to make a little chat and the thing will be done in a few hours.
I can easily set a client server, and have cross platform (android included) messages. We just have to agree on the protocol and/or the functions to call.
I have no (yet) proxy support. Full ipv4/v6 TCP socket or nothing.
Edit: I'll go and check the github :-)
Edit: I have trouble building git Eagle.
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: Can't open .lib file: cbbuild\lib\libeagle_debug.dll.a collect2.exe: error: ld returned 1 exit status Process terminated with status 1 (0 minute(s), 6 second(s)) 1 error(s), 0 warning(s) (0 minute(s), 6 second(s))
Edit2: it was missing the cbuild\lib directory
Edit3: everything was fine until D:\DATA\PROG\VARIOUS\CHAI\CHAI-master\src\ChaiClient.cpp|239|error: 'class Transform' has no member named 'ApplyTransformation'|
Git pull. I'll check and make sure everything compiles...
EDIT1
Everything is up to date. git pull and you should be good to go.
Note, Eagle can build with cmake now too...
I'll test
We should arrange a time to meet on IRC. I've been away for a few days. Have you had a chance to build Eagle and Chai? I haven't tried it on Linux and I haven't made a cmake file for chai yet, but it should be simple...
EDIT1
Hey, I made a funny push. I need to workout a couple things and then I'll push again.
EDIT2
I fixed the broken build. A fresh checkout should work now. git pull one more time.
EDIT3
I've made some progress towards building the network code. All it needs now is your touch with send and recv and listen. If you build the project, it will output some warning messages that let you know what you need to work on.
git pull ftw... (On Eagle and CHAI)
EDIT4
CHAI builds with CMake now, if you use an Eagle\include and Allegro525\include and Eagle\lib and Allegro525\lib folders with binaries you can build yourself using CMake for Eagle.
Je suis un peu occupé en ce moment, jusqu'à vendredi inclus. Cela ira mieux à partir du week end prochain, et les semaines suivantes.
I'll try to find a few minutes to 'git pull' and 'cmake' 'make' ;-)
BUMP