(edited note) I didn't want to set any expectations so this is why this post is in a semi-private forum instead of STUCI.
Okay I've pitched my idea in another thread. At this point, it's all just ideas and vaporware. But there's a lot of concept behind it and how it would all come together. This is more of a details thread on the guts of the program.
There are 3 parts to the program, the "client" plug-in's, the "server" plug-in's and the core "manager".
The program has already been through some modularization in the demo code. This is the first step and it will separate the client functions from the server functions, allowing the manager to call each the server or client multiple times if wanted, or not at all. The core is stand-alone. Calls to and from clients and servers will be threaded.
CORE: The core's basic input is the keyboard input. It acts as the "default" client. You load STUCI, and you're staring at the core prompt command line. It manages clients and servers. At this point, STUCI does implement the keyboard interface now. The core also controls basic functions like create table, chat stuffs, player lists, etc, but it does this in a neutral way to any protocol (see server now).
CLIENTS: I noted the core has a default client, but you can also connect an external "ICS" client to STUCI. This changes the default basic input to the ICS client. Here's a common misconception, when you're typing in the ICS window you're not typing directly at the core. You're typing at the client which then sends the information to the core. So, yes, the input is the ICS client. There is a mechanism to switch what inputs the core will process. Connecting an ICS client should automatically switch control of the input from the keyboard to ICS client. If there are no clients setup, there will be a display to allow setup of clients. Those client setups are saved and can be re-used. If a client is disconnected, the input control will kick back keyboard (core control). There can be only one client connected at a time, as opposed to the server which can have many. It's either the ICS client or the "default core" client. There's also UCI but that is actually an extension of the default core client to use an engine to play.
SERVERS: The server can defined by how the protocol will connect and communicate. It used to be that YtoICS managed all this, but with modularization this job is separated from the core. The neutral functions that core has, are actually empty functions. The protocol code will fill out these functions to adapt to the server protocol used. What's interesting to note about Yahoo's server protocol is once you receive a cookie, you don't have to keep receiving another one to log in again. You can simply reuse that cookie to log in. You only have to log in once as long as the cookie never expires. In this way, you can automate log ins. And by that, I mean you can save user/server log in setup files. file:"zappa_engine.yahoo.server" if I gave you this file and you used it, you could log in as me without knowing my password. Interesting stuff, huh?
Well, if you have any further questions about how it will be done, ask away.












News