AireTamStorm
Unix Addict
*Logo Designed by greendots*
Well, I've spoken alot about how important online is for the Pandora, and now I'm going to put my money where my mouth is.
I'm announcing my plans to write a network library to take the complexity out of integrating online functionality into homebrew games, emulators, and applications: The Pandora Online Network Library, and its server Daemon, POND. I aim to have this library in preliminary form for development by the end of this year. I know there are other project(s) out there with similar goals, but I think that if I want it to happen, I need to make it happen myself.
The Current Design Plan
POND will a Jabber Server that takes and parses XML to negotiate connections between multiple clients. You can connect to POND like any other Jabber Server with any client, but when PONClient connects it throws an XML snip over to indicate that it is PON Library compliant. The server will then negotiate with that client to create connections with other PONClients. If a PC user connects, POND does not communicate the XML negotiation with it. In reverse, this means PONClient can connect to normal Jabber Servers, and send the XML negotiation directly to the other PONClients, since normal servers will just pass that information right through.
The Goal
All an application would need to do in order to be POND connected is to include the libraries and call a connect function. For example, Two Pandoras negotiate and try to connect to each other, however both are behind NAT and firewalled. PONClient will include UPnP to automatically forward ports of course, but if that process fails, the Jabber Server is told to create a tunnel on a remote server. This tunnel is created, the Pandoras are given the connection information, each unit connects to the tunnel. All the developer needs to do, is call a simple function to send and receive data for their application. No proprietary server needs to be coded. As long as the application is network enabled, it just works based on Jabber name. As a bonus, you get standardized chat. But that doesn't stop you as a developer from using proprietary chat over the data pipe that is created by POND. The tunnel servers are separate. They can be run on the POND server, or on separate machines and networks.
Who this is for
PONL is going to be a network library for use by developers. There will be a frontend interface for configuring things (example: which POND/Jabber server to connect to by default), and a small chat client for the end user. But as a developer, you're not forced into anything. You can use POND /just/ as a means of connection if you want. Or, you can go all the way and make use of certain file transfer and text chat functions. This will be a library primarily coded in C / C++, but I will include preliminary Python bindings for those who want to create a quick app or game and still want to do something really cool.
Basic functionality I plan to integrate:
Chat: Text, and later Voice
Automatic connection negotiation
Application / Firmware update notification options
File transfers
Bug Reports
Global configuration UI
So thats the details I have for now, but now I need to know what your opinions are on this.
I really want to hear a lot of feedback on this. I want to do it right. Most of all, I want to see the adoption of online functionality in the Pandora space. This is not a standalone product, and it never will be. You're the developers. If I can get ONE of you to make the decision to bring your game online, this effort would be plenty of a success.
Couple things I want to know from the development community here:
When coding homebrew (games, apps) with network support, what proves to be the biggest obstacle?
When do you decide whether or not to enable online functionality in your applications or games?
What kind of features would you expect to see out of a network library like this?
Beyond that, any suggestions?