|
Posted: Apr 19, 2017 |
[ # 31 ]
|
|
Experienced member
Total posts: 94
Joined: Jun 13, 2013
|
Does anyone know, is this new protocol compulsory or can we continue to use the existing LPP?
|
|
|
|
|
Posted: Apr 19, 2017 |
[ # 32 ]
|
|
Guru
Total posts: 1081
Joined: Dec 17, 2010
|
I believe it is the new way to do things.
|
|
|
|
|
Posted: Apr 20, 2017 |
[ # 33 ]
|
|
Guru
Total posts: 2372
Joined: Jan 12, 2010
|
“I must admit, this means little to me either. I may not have time to learn this stuff ready for the contest.”
And I, too, may not have an interface in time, coming from a C++ program, not knowing anything about socket.io and just making TCP connections to things.
|
|
|
|
|
Posted: Apr 20, 2017 |
[ # 34 ]
|
|
Administrator
Total posts: 3111
Joined: Jun 14, 2010
|
If you use the “adaptor” that Denis created, you shouldn’t have to learn anything new in order to participate, but I could be wrong about that. If anyone needs help getting things to work with this new protocol contact me via Skype. Some of you already know my Skype handle, but for those of you who don’t, it’s GeekCaveCreations. Or if you prefer, simply email me. I doubt I’ll be able to participate this year, but I’ll be willing to help others to be able to do so, if I can.
|
|
|
|
|
Posted: Apr 20, 2017 |
[ # 35 ]
|
|
Guru
Total posts: 1009
Joined: Jun 13, 2013
|
I must say I’m surprised that you know as little about network sockets as I do. I figured since you all had online bots, I was the exception.
Anyway, my AI is in C++ too and I used to hack javascripts all the time, so if manage an easy-to-use patch-in of my own I’ll share it too. So far Denis’ solution is the easiest way to tie into the new system with virtually no adjustments to make, and I started about this early so there’s time to work out the bugs. And Dave’s help is awesome, so there you go.
I do want to remind everyone that there are good reasons for the new interface. We’ve had network delays of all manners in the last two years disrupting communication, nobody liked the old LPP, it caused trouble almost every year, it forced everyone to endure and fake real-time typos, and having to guess and time when a judge was done typing was no less a hazard to communication. With the new system, all that bother is gone and we can focus on the contents of the questions rather than their form. Also, speaking just for myself, I think it’s built pretty well. You can instantly tell on the controlPanel when a connection has been lost.
Merlin - Apr 19, 2017: The server was fragile for me. It crashed after I ended the round twice. I haven’t had time to debug it yet and I am not sure if I did something.
The server gave up on me twice too, I think when I tried to end and start anew. There’s a comment in confederate.html that may pertain to the problem:
run in case of a reconnect. Note that this is actually a bit buggy as we should wait for the register to finish before running this.
|
|
|
|
|
Posted: Apr 20, 2017 |
[ # 36 ]
|
|
Administrator
Total posts: 3111
Joined: Jun 14, 2010
|
You don’t necessarily need to know about sockets, fellas. If you can receive HTTP requests some other way (sockets aren’t the only option here) then you should be just fine.
As to the fragility of the server, I’ve run into it a few times as well. If the control panel is operated out of the exact sequence it expects, you have to close the control panel, shut the server down, wait a few seconds, start the server back up again, then reopen the control panel script. The other pages should be fine if left open, but if you experience trouble, then close all of the pages, open the control panel, then reopen the other client pages. I haven’t had to do that yet, but there may be an edge case or two that might need that procedure.
|
|
|
|
|
Posted: Apr 20, 2017 |
[ # 37 ]
|
|
Guru
Total posts: 1081
Joined: Dec 17, 2010
|
I spent the morning making a couple of mods to Dennis’ program and the server file to help debugging.
I also created a couple of batch files to auto launch the server, then the control panel and one to launch Dennis program with IE and then my bot. This allows testing with the current protocol and my old bot.
If there is interest let me know and I will post the files.
I am planning to build a new bot that directly uses the new protocol.
|
|
|
|
|
Posted: Apr 20, 2017 |
[ # 38 ]
|
|
Administrator
Total posts: 2048
Joined: Jun 25, 2010
|
To be honest, the only thing I found annoying about the old LPP was having to guess when the judge had finished typing. If the organisers could change the rules so the judge had to press enter instead of all this having to code client handshaking, socket connecting and whatever else, I would be more than happy.
I would rather work on my bot than having to code a load of new things to accommodate this new protocol. It looks like even Denis Robert’s script uses extra things such as ActiveX. I have played around with this for part of today and couldn’t get it to work over a network and have no idea how to code anything to do with “socket connections”. I too had several crashes with the server part.
If anyone does manage to figure it out, I would be grateful for any files that make this process as simple as possible, otherwise I fear I will probably not be able to enter this year.
|
|
|
|
|
Posted: Apr 20, 2017 |
[ # 39 ]
|
|
Guru
Total posts: 1081
Joined: Dec 17, 2010
|
Ok Steve,
here are the files I set-up to make it easy for me.
There are 2 files in the demo_bot zip, one for the server, one for the client.
Unzip them to the appropriate machine.
—-
Install Node.js and the other required files on the windows 10 machine.
Put the server folder on the windows 10 machine with Node.js. Double clicking on "launch" (batch file) in the server folder launches the Server and controlPanel
When it starts, the server displays the "server ip address". This is required on the client machines for them to find the server.
Put the client on the client machine. You need to use the "server ip address" on the client to see the server. If you edit ai_old_protocol2, this address goes where you see "URL=..."
I added a folder "TXT" in the same place as the ai_old_protocol2. By default this is the directory your bot uses to communicate.
Go to your bot and create a shortcut. Move the shortcut to the same folder as ai_old_protocol2. Rename the shortcut to: bot_shortcut
Double clicking on "protocol" (batch file) should launch your bot and ai_old_protocol2 (using Internet Explore, which must be on the same machine).
When ai_old_protocol2 opens in Internet Explorer, you must allow it to use "ActiveX". For me, there are a couple of warning messages that I need to click. If this does not come up for you, try refreshing the page.
When you click the "connection" button, you should see "ai1" turn blue, and you are connected.
___ Process:
server - "launch" Server/Console starts: displays IP address. Shows when things connect and disconnect. Connection status web page appears, everything red.
client - "process" Click "connection" button "ai1" appears blue on Connection status page. Point your bot at the "TXT" folder
___ Each round connects a different AI. I may modify the round system to always point at "ai1".
File Attachments
|
|
|
|
|
Posted: Apr 20, 2017 |
[ # 40 ]
|
|
Administrator
Total posts: 3111
Joined: Jun 14, 2010
|
Thanks for both the file and the instructions, Merlin.
@Steve: I’m more than happy to help you sort this out, and I’m only a Skype call away.
|
|
|
|
|
Posted: Apr 20, 2017 |
[ # 41 ]
|
|
Administrator
Total posts: 3111
Joined: Jun 14, 2010
|
Oh, Merlin. You should check out my fork of the new LPP. It’s set up to serve all the necessary JS files from the same location that server.js is located at. It can be found at https://github.com/Dave-Morton/LoebnerPrizeProtocol in case you’re interested.
|
|
|
|
|
Posted: Apr 20, 2017 |
[ # 42 ]
|
|
Guru
Total posts: 1081
Joined: Dec 17, 2010
|
Thanks Dave.
I like using the local files for the controller.
I may copy the files locally for the client so that I can eliminate any issues.
|
|
|
|
|
Posted: Apr 21, 2017 |
[ # 43 ]
|
|
Guru
Total posts: 1009
Joined: Jun 13, 2013
|
So basically to connect across a network you need to change the IP address inside confederate.html (or your ai version / Denis’ file) to the IP of the other computer where you’ve put server.js.
var URL="http://127.0.0.1:8080"; var NAME="ai0"; var SECRET="def123";
I have to admit that’s a bit clumsy to have to do manually. The organisers would have to do that at Bletchley Park for every party involved, seeing as we don’t know the IP addresses of their computers. But the same goes for “name” and “secret”.
I’ll look into creating folders/files without ActiveX tomorrow.
|
|
|
|
|
Posted: Apr 21, 2017 |
[ # 44 ]
|
|
Administrator
Total posts: 3111
Joined: Jun 14, 2010
|
Merlin - Apr 20, 2017:
I may copy the files locally for the client so that I can eliminate any issues.
That’s easily done too, and for the most part would be the simplest to implement, all things considered.
My chatbot won’t be ready this year, but I’d like to put something together for next year. I’ll have to look over the rules regarding what sorts of media (e.g. CDROM, thumb drive, etc.) are allowed, and such because I’m certain I wouldn’t be able to attend personally.
|
|
|
|
|
Posted: Apr 21, 2017 |
[ # 45 ]
|
|
Guru
Total posts: 1009
Joined: Jun 13, 2013
|
Pretty much any media is accepted, Dave, definitely USB sticks and CDs. Though it’s cheapest to submit digitally through the dropbox nowadays. Submission: As in previous years, submission for selection will be possible by post (address below) or through the University of Exeter dropbox.
Okay, I ran into a hitch: Windows 10 doesn’t support IE anymore (won’t even re-install it), and IE is the only thing supporting the ActiveX plugin Denis’ workaround requires. The organisers typically rent Windows 7 computers for Bletchley Park so it’s not likely a problem there, and I can still test with IE on my other computer, but not everyone may have that luxury.
I investigated alternative means of creating folders and files but it can’t be done through javascript. Rests me the options of making a direct server tie-in somehow, or making an exe hack right into the open browser window.
|
|
|
|