alanp.ca

GSoC/TP Weekly Report (June 15, 2009 – Jun 22)

June 23rd, 2009

This Week:

This week I’ve been messing around with the client.  First, I found a unicode error with the tpcl functions that mithro handled for me.  After this was fixed, I was receiving KeyErrors when adding various components in the tpclient-pywx design window.  Not knowing python, I couldn’t do much here.  Over the weekend I studied some python code to figure out what was happening.  With the help of ezod I was able to add some print statements (printing capabilities are amazing in python) and find out exactly where my problem was.  Basically, I was missing a property that the client was trying to call.  When you don’t match on a property it returns an index of 0, which is a huge problem when the client tries to use it.

I spent most of my week starting the work on my next milestone, which will commence on the 24th of this month.  I created some of the missing components and properties for MTSec.  In particular, I believe that I have an issue with how I implemented missile/torpedoe racks.  While I am starting to get a grasp on how scheme works, I still have a long way to go here.  I don’t think the racks are implemented properly.

Also, I have to look into why I am getting errors when adding tubes and the proper way to add them.

I will have another blog post tomorrow with more information on the work I’ve done and a use-case to show that it’s implemented properly.

Next Week:

The work will continue.  I think for my next milestone to be successful, I need the design window to work properly.  This will add a lot of fun to my ruleset, who wants to pick from pre-existing ships?  Not me.  I will need to get into missile/torpedoe design and have that working by July 10th.  This is going to be a tough one, but it shouldn’t be too much of a problem.   This iteration will also require me to work on the AVACombat class.

This is probably the most important part of the MTSec GSoC period for me, so I will be most likely be putting in the most time here.

  • Share/Bookmark

GSoC/TP Weekly Report (June 8, 2009 – June 15)

June 15th, 2009

This Week:

As planned, the first thing that I did this week was fix the issue that I was having with tpserver-cpp crashing on client join.  This error was completely my fault.  When moving the component creation to XML format, I used various Regular Expressions to convert the C++ component code to XML format.  After some research I realized that my XML spec did not include an entry for the Category ID of each component, which is vital information.  The way that the ruleset had been created we have been using static numbers for the category IDs.  Instead of this method I used some methods that are available to use a string that makes more sense instead.  The new line in the XML is as follows:

<ComponentIDName>Ships</ComponentIDName>

When I get around to moving the Properties to an XML file this will become more vital.  Also, with the creation of more categories in the future this will be more important.

As I mentioned in the quick post that I made yesterday, I am working to meet my June 23rd deadline sooner.  From my proposal:

May 24 – June 23, Milestone #1:

  • Deliver a working implementation of the MTSec framework.
  • Finish all of the remaining components.
    • While browsing the code I have not found any references yet to the varioius components that make up the ship, this includes:
    • Launch Tube
    • Missile Rack
    • Torpedo Rack
    • Armor
    • Colonisation Module
  • At this stage all ship configurations using the components should be feasible
  • Next Week:

    Next week will mark my busiest under the GSoC period, and it will continue at a steady pace until the completion of the SoC period — and most likely beyond that period.  Getting down to design ideas of this game is very interesting and it seems that the MTSec ruleset will be the most advanced ruleset to date.  I would like to find a workaround for the “compMax” variable in the mtsec.cpp file so that it is easier to add and remove components without a problem.  Once all of the components are thoroughly tested (I am worried about the scheme) I will move onto the actual missile and torpedo design.  As per llnz’s suggestions there will be a second design category for weaponry, and a component that can be used in a ship.  Once this is done I can work this into orders and combat.  I was originally worried that the ship designs would not be possible in any client but according to llnz there is a design dialog in tpclient-pywx, which is the client that I test with.  This will allow advanced ship designs and will make the game enjoyable.

    • Share/Bookmark

    Progress: Sun 14 Jun

    June 14th, 2009

    My progress has been slowed by influenza.  Regardless of this, I am going to go on a coding frenzy over the next couple days.  I hope to finish my Jun 23rd milestone (#1) early in order to leave more time for the second milestone which is scheduled for July 10th.  I’ve fixed the issue that I have been having with the importation of Components from the XML file.  This specific issue actually had nothing to do with the code that I wrote to import the components.  Rather, it was a bad regular expression that I used to actually create the XML document from the old MTSec source code.  This is not a weekly report, only a quick update.

    • Share/Bookmark

    GSoC/TP Weekly Report (June 1, 2009 – June 8)

    June 9th, 2009

    This Week:

    My goal for this week was to clean up the mtsec.cpp file and integrate tinyxml.  After some initial troubles with tinyxml, I finally got an (albeit rough) version working to import component information from an XML file.  Unfortunately, I seem to have run into some troubles.  When joining a game with the pywx client, an immediate crash occurs while dealing with pyguile.cpp.  It happens in TpGuile::calculateDesignPropertyValues( Design* d).  I have been working today to track down the issue, but so far I have been unsuccessful.  I have commited my current code, which builds but has the issue mentioned above.

    Next Week:

    My immediate goal (aiming for Wednesday night) is to fix the issue I am having with tpserver-cpp crashing on client join.  Obviously, this is a deal breaker and has to be dealt with immediately.  Once this task is completed I will be finishing the components of the ship.  I will look into using tinyxml further in MTSec as well. I believe that I am still online to meet (and hopefully exceed) my initial goal tenatively slated for June 23rd.

    I also plan to speak with Epyon regarding an issue I found with command line options vs. configuration file.  Currently, the command line flags are parsed only if loaded after the configuration file.  Both Aaron and I find this unexpected, but Lee mentioned that Epyon may be already working on changed to this code.

    • Share/Bookmark

    GSoC/TP Weekly Report (May 25, 2009 – June 1)

    June 1st, 2009

    Last Week:

    Due to the move I previously mentioned, this past week was not a productive one for Google Summer of Code.  My computer spent much of the week boxed up, but I am now moved in and ready to devote myself to Thousand Parsec.  Before I left I mentioned my plan to clean up the mtsec.cpp file and it was mentioned that moving the components to XML would be a good strategy here.  I’ve created the following XML schema, shown with an example component of MTSec:

    <?xml version="1.0" ?>
    <Components>
        <comp>
            <name>AntiparticleExplosives</name>
            <description>An extremely expensive but hugely explosive particle and anit-particle explosive</description>
            <tpclRequirementsFunction>"(lambda (design) "
                "(if (= (designType.num-ammo design) 1) "
                "(cons #t \"\") "
                "(cons #f \"This is a complete component, nothing else can be included\")))"
            </tpclRequirementsFunction>
            <propertyList>
                <Speed>(lambda (design) 0)</Speed>
                <BuildTime>(lambda (design) 1)</BuildTime>
                <Colonise>(lambda (design) 0)</Colonise>
                <Armor>(lambda (design) 0)</Armor>
                <AmmoSize>(lambda (design) 0.8)</AmmoSize>
                <AmmoExplosiveness>(lambda (design) 16)</AmmoExplosiveness>
                <AmmoCose>(lambda (design) 64)</AmmoCost>
                <StartingHitPoints> (lambda (design) 0)</StartingHitPoints>
                <num-ammo>(lambda (design) 1)</num-ammo>
            </propertyList>
        </comp>

    llnz mentioned that he saw no problem with this design so it is the one that I am planning to use for the Components.  Moving the Props may also be a good idea.  I will be using tinyxml to input the components from the XML file.

    Next Week:

    My goal for this week is to continue what I briefly started in this past week.  This will include cleaning up the mtsec.cpp file and integrating tinyxml.   Once this has been completed I also plan to implement the various components of a ship that are currently not included.

    This weeks work will build toward my first milestone: the creation of ships that include all of the components outlined in the specification.

    • Share/Bookmark

    GSoC/TP Weekly Report (Beginning – May 25, 2009)

    May 25th, 2009

    This Week:

    For this post, we will consider “This week” as since the beginning of my acceptance into the Google Summer of Code for Thousand Parsec.  In this time, I have completed the following tasks:

    Become familiar with Thousand Parsec framework

    I have gone over much of the framework.  Since most of my work will be done on tpserver-cpp, I have studied this the most.  I think that I have a good idea of what is going on throughout the c++ server and I don’t believe that there will be any issues going forward with development on this.

    Study various rulesets (especially Minisec)

    Studying the already-implemented rulesets has given me an idea of what needs to be implemented to have a working ruleset.

    Read Ruleset development with tpserver-cpp vigirously

    This document has been of great use for understanding what needs to be implemented to have a running ruleset.  During the GSoC period I hope to have my own contributions to it.  This document helps to further the information gained by going over the Minisec ruleset.

    Read entire implementation of MTSec Ruleset

    While creating my MTSec Initial Report, I read the entire code base for MTSec.  This has given me a good understanding of what is going on and what I will need to implement in the future.  My report outlines the various methods and hooks that I have at my disposal during devlopment of the MTSec ruleset.

    Next Week:

    Unfortunately, the next week will be an incredibly tough one for personal reasons.  I will be moving into a new place during the next week and this will require large periods of my time.  Also, I am not 100% sure that my internet connection will be ready for the date that I move in.  During this time I will have internet access at my old home, so I will try to sneak back into there to do as much work as possible.

    My goal for this week is to clean up the mtsec.cpp file.  I believe that this file is currently far too long and it implements various ship components with different names from the specification.  Once this has been fixed I also plan to implement the various components of a ship.  This weeks work will build toward my first milestone: the creation of ships that include all of the components outlined in the specification.

    • Share/Bookmark

    MTSec Initial Report

    May 14th, 2009

    I was asked by Aaron Mavrinac to write a report about what exactly MTSec currently does in the code – summary of what the standard hooks are doing, list of orders, list of objects, etc.  For this report I focused mainly on the code itself, sort of the MTSec API as it stands now.  This means that I have read all of the MTSec code already and have a good idea of what is happening within it.  I plan to create a wiki page within the Thousand Parsec Wiki for others to be able to update my work as they see fit.  Feel free to read my report on the MTSec game module source.
    Read the rest of this entry »

    • Share/Bookmark

    Let the Work Commence

    May 6th, 2009

    I have officially started my work today for Thousand Parsec.  My GSoC mentor, Aaron Mavrinac, has outlined these items for me to complete in the next week or so:

    1. Make a test commit to tpserver-cpp mtsec branch (add yourself to AUTHORS).

    2. Read the TP protocol spec again, make sure you understand what each
    thing is.

    3. Read Part III of the ruleset development manual.

    4. Write me a report about what exactly MTSec currently does in the
    code – summary of what the standard hooks are doing, list of orders,
    list of objects, etc.

    I’ve completed task #1 and I am beginning the rest of the tasks.  My plan is to read the spec over again (I read it many times during the proposal stage) and complete these tasks by the end of the weekend.

    • Share/Bookmark

    My 2009 Thousand Parsec Proposal

    May 4th, 2009

    I mentioned previously that I would be posting my complete proposal to this blog. Today, I have gone ahead with that and it is viewable in this post.  Throughout the summer as I become more acclimated to Thousand Parsec and the Google Summer of Code process I will be posting regarding possible areas for improvement for this proposal.
    Read the rest of this entry »

    • Share/Bookmark

    How To Get Accepted Into Google Summer Of Code (GSoC)

    April 30th, 2009

    There have been various discussions in both the GSoC mailing list and official IRC channel regarding improving your chances of getting into GSoC.  Since the 2009 process has already finished, I have these suggestions for 2010 students and beyond:

    • Be active in the community.
    • Write a good proposal, submit it early.
    • Subscribe to your update notifications for your proposal.
    • Update your proposal.
    • Be active in the community.
    • Submit Patches.

    Let’s break these criteria down further:
    Read the rest of this entry »

    • Share/Bookmark