Comments/Ratings for a Single Item
I would be more interested to get Zillions to work with a GUI (any GUI at all, anything that would make it communicate its moe with the outside World according to a public protocol). After that it would simply be a matter of interfacing the GUI to the GC server. I think it is a bad idea to interface an AI directly with a server, without a GUI in between. It would be very inconvenient when you wanted to ply two different engines against each other if you had to do it through the server, for instance.
Since Zillions of Games is a commercial product that hasn't been updated since 2002 or thereabouts, I wouldn't hold my breath on this happening. Basically, what you want is a point-and-click interface for Game Courier. I think this can be done with JavaScript, but I don't yet know how. I did download a JavaScript Chess program called P4wn, which lets you move pieces by clicking on a piece, the piece image goes to the mouse pointer, and then you move it to the square you want to go to. This showed me that I should be able to do something similar with JavaScript, but the source code was so compact and obfuscated, I couldn't learn anything from studying it. I've also learned about something called Ajax, which works with JavaScript, and I found a very nice Ajax Chess program. But I still know next to nothing about Ajax. If someone knows how I can use JavaScript or Ajax to create a point-and-click interface, please share what you know.
The goths.html page on my website is powered by JavaScript. I am not really a JavaScript expert (someone helped me write the program, but I understand how it works), but it seems to me that what you want is not too difficult. My viewer does not allow you to move pieces around, but there is a similar feature: you can click alternate representations of the Archbishop and Chancellor, and then it alters the board display accordingly. The trick is that you can put an 'a' tag around some html element (e.g. the 'img' tag defining the picture displayed in a square), with an onClick='' parameter in it. Through this you can let a JavaScript subroutine be called, which can assign to global variables (to remember which from-square was clicked), or replace html elements by other elements (on the second click). If you wantto have a look at the (rather simple) javaScript code of the viewer, you can find it at http://home.hccnet.nl/h..muller/chess.js
Point-n-Click can be done entirely in PHP - see here
Here is a bit of serendipity: a coder friend of mine and myself were having exactly the same discussion about the possibility of including Java aplets on this site for a few (or, perhaps, many) of the CVs. He seemed to think that it would not be difficult at all to create them, and, even claimed he would personally write the requisite code. He was just uncertain if adding them would interest anyone. Any thoughts?
Graeme, Any chance I could see the underlying code to the example you linked to of using PHP for point-and-click?
We're certainly interested in having Java applets of Chess variants here. We already have hundreds by Ed Friedlander, though his all use the same lousy graphics and don't play well. We have one great Java applet for Chinese Chess, which plays well and has customizable graphics. If your friend wants to write some Java applets of Chess variants, we would be interested, especially if they can play the game well and can use custom graphics. Go to http://play.chessvariants.org to learn about the Java applets we already have.
The code is in a zip file here.
Not sure how clear it is but I'll try to answer any questions you may have.
Basically it uses a transparent image that overlays the board as an input type in a form that returns a set of co-ordinates.
Adding mouse input to Game Courier would of course be a good feature, and you should certainly do it. But as a feature, it still falls far short of the possibility to connect a real GUI to the GC server.
What I would like to do is get standards out there so not only Zillion could interface with the CV site and others, but other people could create programs that do the same also. You have open standards/protocols, so the maker of ChessV, Winboard and others, could then get their programs working with the various game websites out there (CV, SDG, Richard's PBEM). Someone could also develop a specialized GUI just for this. Idea here is providing a way to be able to get more people on more websites, and allow specialization in the development of different components. By working on the interface end, and allowing people to create these, IAGO could then have a place where it could capture game stats, and do record keeping for games. This all starts by standardizing the way client applications interface with websites.
Thanks to the suggestions I got, I have some plans for adding point-and-click piece movement to Game Courier. It would combine JavaScript and PHP. On the JavaScript end, I would enclose each piece image in a borderless anchor. When someone clicked on a piece belonging to the side that can move, all borders around pieces would be turned off, and then a border would be placed around the piece clicked on. Clicking more than one piece that can move would just move the border to a new piece and change the piece that is going to move. Clicking a piece would also set a flag that allows the next click to indicate a destination on an empty space or an enemy occupied space. This second click would cause the JavaScript to create move notation based on the two clicks and to submit the form with it. From there, Game Courier would operate as it normally has. It would check the legality or at least validity of the move and display the move for verification by the player. This would handle only single moves from one space to another, including Shogi drops, leaving the Move field available for other types of moves and for more complex moves. I might also add support for promotions, but I wouldn't extend it beyond the needs for Chess and Shogi, because I want it to be simple and easy for most variants.
I have a question about Game Courier: is this pubicly available software, as opposed to private or commercial? In particular: if we wanted to set up a way for people to play Superchess against each other on the Superchess.nl website, would it be allowed to use Game Courier for this? Would that be technically feasible, and what are the requirements on the server? (i.e. which sofware packages should be supported? Only PHP?) What you propose for the mouse pointing is pretty much the algorithm WinBoard uses as well. An extra that you might to implement as well is that if you click a second time on the highlighted square, you de-select it again.
My feeling here is, rather than have it so that each and every site needs to develop its own GUI, that common interface standards for interoperability be developed, so that someone else could develop a GUI that would work with all the sites. Focus on what you need for communications. We could then start with the Zillions add-on, Axiom, and have it have the standards work with that. ChessV, and Winboard could then follow. And get more sites to sign on. At this point, we have something that say, Chessmaster or Fritz might even get into and add on. Idea is open standards that people can use. If people want, the CV site could speak to other sites, if you like. That could follow later, if you develop the standards for allowing communications.
I don't think Zillions is a good starting point, or in fact if it can be of any use at all for what you want. What I understood is that the Zillions 'GUI' can only handle a single engine, not two (for playing against each other) as all real GUIs (such as WinBoard, Arena, Shredder, Fritz). So it could never be used to couple an AI to a game server. It can at most be a replacement for entering moves and displaying the board over the normal browser-based representation. For which there is very little need, as GC already does a pretty good job at that. With only a single connection, the Zillions GUI is a dead end...
I have a question about Game Courier: is this publicly available software, as opposed to private or commercial?
Game Courier is private software. It is free to use for registered users of this site, but I have never released the source code to the public. What you can see when you use it is the HTML code it generates, not the PHP code it is written in.
In particular: if we wanted to set up a way for people to play Superchess against each other on the Superchess.nl website, would it be allowed to use Game Courier for this? Would that be technically feasible, and what are the requirements on the server? (i.e. which sofware packages should be supported? Only PHP?)
Game Courier is all PHP on the server side, and it makes use of some JavaScript on the client side. It is integrated with the MySQL user database of this website, and path names of this website are hardcoded into it. I expect it could be made to work on any other site with PHP and MySQL, but modifications would have to be made.
As for permission, we can negotiate terms privately if Superchess.nl is really interested in using Game Courier.
One of my design principles for Game Courier has been that the browser is the GUI. Game Courier already has better graphics than the GUIs I've seen, such as Winboard and ChessV, and it supports many more games than these do. With the coming addition of point-and-click moving, Game Courier will be its own fully-functional browser based GUI for playing Chess variants against other people online. I don't see what the point would be in having it communicate with external GUI programs. Would this enhance Game Courier's abilities in any way?
If you open up Game Courier to outside clients, then people can design clients on their own, to provide additional functionality, so you don't have to. It would also provide a way for IAGO to also capture stats. In addition, the standards for communication could also enable people who create AIs to be able to interface with the CV site, to provide people a chance to play against AIs on here. If you don't allow for this, you will have to do all the work. It requires yourself to be a master of everything. By the way, Zillions is just an example of one GUI. Zillions is the most accessible program I believe people have on here and own. It was used as an example.
If you open up Chess Courier to outside clients, then people can design clients on their own, to provide additional functionality, so you don't have to.
It's called Game Courier, and that's just too vague an assertion. My question is what additional functionality could they add?
It would also provide a way for IAGO to also capture stats.
IAGO's ability to capture stats doesn't motivate me. After all, I'm not involved with IAGO.
In addition, the standards for communication could also enable people who create AIs to be able to interface with the CV site, to provide people a chance to play against AIs on here.
I don't know if I want that here. One thing I like about Game Courier is that it connects people together. If I want to play an AI, I can already use Zillions of Games, ChessV, Coffee Chinese Chess, etc. Besides, why would you want to play an AI through a website when you can just as well play against your own computer?
If you don't allow for this, you will have to do all the work. It requires yourself to be a master of everything.
I don't mind mastering lots of things, and I enjoy the sense of accomplishment I get from it. Besides, Game Courier is already incredibly functional, and I expect most of the work is behind me.
Just a few comments for bet: As far as functionality goes, when you go with open standards that enable people to add more content, things can go in directions no one expected, that would be of benefit for everyone involved. It leads to innovation. As far as IAGO goes, the CV site is involved with IAGO now. The Play.Chessvariants.org is part of the IAGO Clubhouse reference links. As far as why have an AI on a website, well, not everyone has Zillions for one thing. Secondarily, you enable people to work on improved AIs without having to also do GUI work. Lastly, by having people able to play an AI on a website, that gives them a reason to remain on the website, while waiting for other human players to show up. In fact, this approach could enable contests to be run where people design AIs to compete against one another. They could have them log on the website and compete. The idea of not needing to master a lot of things means that one can focus on what one prefers to do. However, if someone wants to tackle everything, they are able to then create things that are beneficial for other uses. Like, say you happen to be able to do game sites/servers AND GUIs. You create a GUI other people use. Also, get the notation to work right, and the Courier system can then have someone create a rules engine the GC system could connect to. You get rules enforcement on the Game Courier system that is missing now, and you didn't have to write it. Someone else did it for you.
Fergus: | Game Courier already has better graphics than the GUIs I've | seen, such as Winboard ... This cannot be true by definition, as WinBoard allows the user to define any piece anyway he wnts it to look... | and ChessV, and it supports many more games than these do. WinBoard groups most of these other variants under the name 'fairy'. It is not very useful to includes variants in the list for which there are no engines and no servers. | Would this enhance Game Courier's abilities in any way? How do you play two engines against each other using a browser? How do you play an engine against the server? Can GC handle blitz and bullet games?
To Rich: It seems that what you want and what Fergus wants is fundamentaly incompatible. It seems you are striving for a situation like exists on normal Internet Chess Servers, and to which I am used as well: At any time a large number of games is gong on, and a large variety of opponents is available for new games. GMs and beginners, commecial engines, dumbed-down open-source engines, and people trying to test the engines they are building. People play mostly quick games, like 5'+3' or 12'+5'. Engines are usualy on line 24/7 and many people play them (providing a good test bed for their developers.) This variety makes the typical ICS a thriving community, where everyone can find what they need (provided they play normal Chess or a very limited range of 'variants' such as Crazyhouse, Losers/Suicide, normal Chess with non-standard initial positions, Chess960, and occasionally Shatranj. This is a situation I would also like to see for variants. Offering one variant only, without providing engines, is not enough to make a viable ICS, as the unspeakable server shows. I would like to see something similar to an ICS like FICS or ICC, but then for variants. My interest would be to find Human opponents for the engines I develop. I don't have Zillions, and I do not have the slightest interest in buying it, as it plays like cr*p. I am not interested in playing games myself against other Humans, I just want to see how my engines do, against Humans or other good engines, in fast games, (in order to play enough of them). So that I can spot their mistakes and correct them. Game Courier has a much more limited scope. It is basically a medium for playing correspondence Chess between Humans-only, and Fergus would like to keep it this way. What would be interesting to me lies far beyond its scope. So I think we should forget about Game Courier, (and Zillions!), and try to find a medium that is more suitable for interactivegame playing than the http channel of a web browser. ICS protocol is unfortunately not variant friendly, nd ven fails to handle Chess960 properly. Something like the unspeakable server would be a nice start, (using a Java client that auto-downloads through the browser Java plugin), except that this is also proprietry software, and is buggy on the server side.
H.G, my interest is getting a group of people to agree to standards for communications between systems that would enable people who make different components have them work together. The standards would be open standards, to facilitate people creating different parts. These standards get adopted, and work well, then there is a chance someone could create a plug-in for Zillions that would enable it to also be involved. My interest isn't in Zillions, per-se. Zillions was used as an example to describe what I was going for. I am interested in the 'plumbing' being able to work. This would enable what you are working on to connect to other systems in the network, without having to fully understand what people have in their systems. So Zillions and GC has to refer to interoperabilty.
Well, different media need different protocols. Calling an engine that is a DLL is different from opening a pipe to another proces, which is again different from opening a TCP link to an internet server. In general, other information has to be exchanged to get the thing to work. When connecting to a server you will have to announce who you are (i.e. log in). When a GUI starts up an engine, there is no need for that. That is just one example. Standard protocols do exist. WinBoard protocol is one of those, usable for GUI-engine communication. ICS protocol is another standard, used for client-server communication over the internet. Many hundreds of engines use WinBoard protocol. Dozens of Internet Chess servers use ICS protocol. Why not simply stick to the existing standards? If te answer is: 'but the sites I want to connect to don't want to use those standards', then why do you think they would use our standard if we develop a new one? Btw, I heard that FICS might be convinced to provide the unspeakable variant on their site. I hope this wil open ICS potocol to variants in general.
I will say here, there are multiple aspects to this. Like in the case of OSI, there are layers and different aspects that need to be worked on. There is the bit level. There is the notation level. There is the uniformity in what labels mean also, and the same with what board positions map to one another. The interest here is to get different sites to coordinate their efforts and agree to what they want to use. I do believe that what is out there should be used whenever possible. If there are shortcomings, such as games where you have stacks, piles, and regions, then these should be dealt with also, through extension and tweaking. The main thing is agreement and implementation. Not rationalizing reasons for not doing things, but having things done. From an IAGO perspective, there is an interest in what is being done work with all abstract strategy games, not just chess variants. My personal druthers would be that it could be extended to cover all boardgames and cardgames, so what is done will get adopted.
25 comments displayed
Permalink to the exact comments currently displayed.