Where the project is
The project has evolved a lot since when I started it. I haven't put anything new on CVS for some time because I'm very lazy and practically no one is interested in this besides me so what's the point? I hate CVS (love svn :)) and won't commit to it until I get really far or people will start wanting to see the code/project.
Anyway, here is the current status on main components:
- I. Server Side
- I.a. OpenTCG Service
Windows Service that handles complex, but less often used operations that cannot be handled by scripting languages like PHP.
Current Features
- Windows Service startup/shutdown/threading
- TCP/IP serving, accepts connections on different threads
- Parses XML client requests and responds in valid signed XML
- Checks client signatures on request
- Processes TRADE REQUESTS completely: security checks, card republishing, card registration, everything functional
- Elegantly handles bad requests (partially) providing (for now simple) information to clients
- I.b. OpenTCG PHP Scripts
Handles simple server operations that are accessed often and are more essential to the game. They are all accessed via simple http requests, use little cpu and bandwith and depend on a MySQL db.
Current features
- Card Service - fully functional. Allows clients (and anyone in fact) to check if a given CardId is valid online - that is if the card hasn't been traded.
- Player Service - fully functional. Allows clients to obtain any player's public key if they know their player ID. Essential for security.
- New Player Service - fully functional. Allows clients to register a new player and be assigned a new player id. They must send their public key to be stored on the server
- Player Name Service - fully functional. Allows clients to receive a player's name if they know his ID. Needed in some circumstances.
- Private Scripts - fully functional, to a point. Allows authority clients to request some modifications of the database. Note: Not enough security yet: simple http authentication for now.
Notes: Fully functional means it does what it's supposed to do. They aren't really secure/optimized enough. Also above here "clients" also includes the OpenTCG Service :).
- II. Client Side
- Official Client
This will be the official client that players will use to play the game, trade cards, manage their card collections and so on.
Current Features
- Player Creation - functional: player key is generated, players are registered with the NPS.
- Player Management - functional: player information (including the all-important private key that identifies him on the network) is stored in XML files (unencrypted for now). These files can be saved, opened and created.
- Offline/Online Mode - functional: if the client is in offline mode no communication is made (or attempted).
- Card Inventory System - functional: The client is capable of managing a player's card collection and present cards owned for each Game System.
- Card View - functional: A tool window displays the currently selected card, using the full power of the OpenTCG CardView control. Card image download is not implemented yet.
- Card Properties - functional: All card properties are available via a standard Property Grid.
- Direct Card Adding - functional: Cards can be added by copy-pasting them in a dialog. If in online mode, all security checks are made. If offline, all-1 security checks are made
- On-demand on-line check - players can request that a card in their inventory is checked with the CS and see the result.
- Card deletion
- Manual transfers - one or more cards can be transfered to another player. The XML is shown in a window and should be sent to the other player via e-mail, IM, etc.
- III. Authority Tools
- III.a. Designer - functional but limited. CardPrint design is especially unfriendly as it requires manual XML editing.
- III.b. Publisher - functional but limited. Will be replaced by the OpenTCGService completely.
- III.c. RSAKeyGenerator - functional, limited and won't probably get any better.
- III.d. OpenTCGServiceTester - functional, dumb, and not needed any more. For now.
Important known issues:- If a connection to CS fails during a Check on-line request, an user-friendly message is shown, but all subsequent connections will fail, even if the network becomes available, until program restart (Client). Reason unknown.