Archive for September 7, 2005

Future Works

Recently, given a little free time I have started work on a small light weight set of classes with some broad generic aims.

Basically I need a few tools for:

1. Tracking Debug Information
2. Tracking Performance Information
3. Reporting an Application Error
4. Tracking User Input
5. Tracking User Activities
6. Logging of all above Information
7. Logging of Unexpected Activity
8. Input Filtering

To this end I’ll create a small (as possible) library for the purpose. Many of the above are required to enable the generation of an Audit Trail of user activity, which can be analysed for unusual activity or unexpected data. In combination with the other tools, this should create a valuable framework for allowing future Admins/Developers to find cheaters, and other malfeasants fast and easily. Other parts will allow Developers to spot performance issues (like a heavy-handed SQL query, or an unusually large Memory usage of a script operation) for future streamlining.

Logging is at the heart of the system – since much of the resulting data will be worthless unless stored. There are two logging methods planned – by database, and by XML file. These classes will also see a real start towards proper use of input filtering and output escaping (sadly lacking much of the time in QS).

No name for these classes as such since I expect they will be packaged with Q-Site.

Back from Limbo – a QS update

Well, I’m finally back on the development front.

It’s been a hectic summer of study and exams…finally over. I did however get a few things I’ve been meaning to do.

Quantum Star SE is now moving forward again, there will a delay before another release since I have been doing a little spring cleaning in the code – something I probably mentioned before regarding how the game is structured. For starters the original classes have been revisited and had a makeover. The game now uses an MVC (model-view-controller) design which separates data from logic, and logic from presentation. The result is a pretty neat setup which will do a lot to keeping the game maintainable and readable. It also means another cut in RAM use (one of the current development goals) since we only ever require a single instance of most of these classes, and they are only instantiated if requested by a developer’s client code.

Many sections of code are now being properly documented under the phpDocumentor rules. The class references to global objects, and the use of constructors to setup data have been eliminated (they were only limiting, and pointless). The code has also been restructured enough that a shift to PHP5 should be a simple exercise. (In fact a PHP5 version is in planning to make one available).

Some new game features were added in draft form, including devices, clans, and player planets. Still a lot of work to get this up to standard.

Matt has also made some moves on our Base, Q-Site. It now implements the database functions within a class, and runs off of ADODB-Lite (a faster, less RAM intensive version – better for shared hosting). Last week I implemented a small error class to manage game-detected fatal errors, which also (after much delaying) removes any need to reference Line and File as parameters. The DB class now falls back on more readable function names – a departure from SE, but I think it’s fairly easy to pick up when someone isn’t experienced enough to follow everything:

$db->select(‘sql do select’);
$array = $db->read();
$multi_array = $db->readall();
$db->execute(‘update/delete/insert something’);

I think a new version of Q-Site should be ready in about a month – for the moment QS3 will continue developing off the last version.

A few other things are in the pipeline, though largely deferred until I complete the next QS release (with combat). These include the Admin Panel, and Module Editor, an AuditTrail Class and analysis tools for the AP, an updated version of the NavLink classes (which allow dev’s authorise a URI in-line, thereby allowing restricted access to game, and a baseline against which to analyse incoming requests and query data).

On more general terms.

I am also involved in a new PHP strategy game called Blue Sea World, which started active development this month. There are a few interesting facets of the game, including one developer who aims to create a 3D Client to replace a standard browser. Be interesting to see how that turns out if its workable. I’ll start some preliminary coding for an initial version with the lead dev, Azure, shortly. QS and SR are still up front as a priority, but I’m hopeful the recent code changes will have made development a lot more efficient (It would certainly give me a little more flexibility to stay on schedule).

QS 3.0.0-0.10 should be released within a month.