Tuesday, May 25, 2010

GSOC Commences

This post covers two things, the project outline which deals with what the GSOC period will be spent trying to accomplish, and the current state of tpweb(the tpclient-pyweb browser client for the Thousand Parsec game).

Project Abstract

The focus of this project is to improve upon the tpclient-pyweb version of the Thousand Parsec game. In order to accomplish this goal, there will be two main objectives to complete. Under each objective, there are several “todo” items that must be completed in order to accomplish each objective.

Primary Objective - TP04 Support
  • Functionality Upgrade to TP04 Standard
  • Dynamic Object Types
  • Multiple Order Queue
Secondary Objective - GUI Enhancements
  • Messages to battle log style
  • Object information panel to rollover item
  • Trajectory display of moving objects
  • Condensed menu items
  • Order’s panel to intuitive right-clickable menu

Functionality Upgrade to TP04 Standard

This involves modifying the current tpweb code so that the basic code functionality can work with the new tp04 standard.

Dynamic Object Types
This involves removing all instances of hard-coded object types so that dynamic object types can be used.

Multiple Order Queues
This will involve expanding the Order issue functionality to support the ability to submit several orders at once.

Messages to battle log style
This will change the current inbox style messages in the game to a more condensed form for easier digestion.

Object information panel to rollover item
This will change the object panel to a rollover menu when the mouse rolls over objects on the game board, such as planets and ships and whatnot.

Trajectory display of moving objects
This will draw the trajectory of traveling objects onto the game board.

Condensed menu items
This will move some of the menu items such as logout and download map, into a dropdown menu.

Order’s panel to intuitive right-clickable menu
This will implement a new style of issuing commands that differs from the standard order's dialog.

Timeline

May - Primary Objective

  • May 31: The client will be capable of basic functionality using the TP04 libs.

June

  • June 7: The ObjectComponentClass will call the proper css object icon without relying on hard-coded object types within the javascript.
  • June 14: The client will use generated css code to call a specific icon for an object.
  • June 21: The client will be capable of displaying multiple orders.
  • June 28: The client will be capable of submitting multiple orders.

July - Secondary Objective

  • July 5: Messages will be displayed in a battle log format.
  • July 12: The object information panel will display next to the object as a rollover panel.

Mid-Term: The First Objective will be met by the time of the mid-term period.

  • July 19: The client will be capable of displaying the trajectory of each object that is directed at a target.
  • July 26: Orders will be displayed in the rollover information panel. The orders will also be deleteable and their order position will be changeable.

August

  • August 2: Orders that require a target will be issuable from the right-click order’s menu.
  • August 9: Orders that require build information will be issuable from the right-click order’s menu.
  • August 16: This week will be left for bug-hunting and optimization of the search function.

Current State of Tpweb

Currently, most of the functionality for the backend of tpweb has been modified to the TP04 standard, so that it can retrieve all the data it needs and display the game board. The following still needs some functionality changes to adhere to the modified format/locations of data before tpweb can return to normal functionality under the TP04 standard.

Orders: Displaying, Sending, Removing, Updating
Objects: Positioning, Velocity, Damage, Ships
Turn: Retrieve Current Turn

The days leading up to next Monday will be spent fixing these remaining issues and by that time, the client should be in basic working order so that new features can be added, such as media downloading.

Monday, May 24, 2010

Precursor Part 2 through GSOC official program commencemnent date (Ie working well into the start of May 24th with coffee buff about to wear off)

On the quest for barebones tp04 support, as of 5 am, the multiple cache issues are basically sorted, as is the get_objects function. This refers to only the fact that errors no longer arise when the backend is trying to download these. There are, however, a couple attributes in the objects construction part of the backend that have to be dealt with differently for tp04, such as Ships, Velocity, Damage. It looks like Position and Resources are properly applied though. It does look like the web browser is at least able to parse through the data for objects and load them to the right hand panel.

More bashing on and confuddling with the tpweb code this week to make it support tp04 (in conjunction with final project for school) but hopefully by the end of Sunday night, tpweb will be able to at least show all the objects/orders in the browser using the tp04 versions of the libs. Right now, it's chocking on the orders and won't display the gameboard.

Monday, May 10, 2010

Precursor Part 1ish

I began looking over the code for both libtpproto-py and libtpclient to get an idea of how it's going to apply to the changes I'm making to Tpweb (tpclient-pyweb). It's somewhat explanatory for the most part, though it appears that I need the version that supports tp04. Oh the breakage that will surely happen when tpweb tries to use the libs that run with version 4 of the protocol. Still some questions for Mithro.

While most of the weekend was spent digging through the lib codes, there were several changes I made to Tpweb's code:

Included functionality that now draws any stray object in the universe onto the map that isn't a child of any planetary system.

Added object names to the icons on the map so finding stuff's a bit easier.


Finished the popup panel that displays all the objects within that system. Necessary if that annoying right panel is going to be axed.


Still need to figure out how to streamline the javascript css stuff and how I'm gonna retool the look.