Archive for the ‘GSoC’ Category

GSoC/TP Final Report

Sunday, August 23rd, 2009
Share

It looks as if all features have been implemented in MTSec.  Since my last post I have done some cleaning up of the code, and it is much more presentable now.

All features are currently supported, this includes:

  • Building Ships
  • Building Weapons
  • Production Capability
  • Enhancement of Production Points
  • Sending of Production Points to Another Planet
  • Merging Fleets, Splitting Fleets
  • Colonising a Planet
  • Loading / Unloading of Armaments
  • Combat

For a more detailed description of each feature, you can visit the MTSec Wiki.  I will still be keeping up with MTSec development post-GSoC period and hope to iron out any bugs that have been found.  For example today I found that Aaron’s compiler was giving no newline errors, but mine was not.  With a simple bash for loop, this has been fixed and committed.

Testing each feature is pretty self explanitory but I will go over a test scenario:

  1. On the first turn, the “Build Fleet” order is a good one to try.  You can either use the design window in the TP04 client or use one of the predefined designs.
  2. On the second turn, it is useful to build some sort of weapon.  As with the build ships order, you can either pick from a predefined design or create your own.  Right now I have the mining requirements off so that we can test a bit easier.  You can create more than one weapon here which will be useful for testing.  Please note that you can only Design Weaponry using the TP04 pywx client (make sure you select the Weapons Category!)
  3. Now that you have (a) fleet(s),  and weaponry, it is useful to use the “Load Armament” order here to load the weaponry onto your ship.
  4. Move to another planet.
  5. Colonise the planet you moved to.
  6. Unload some weaponry here.
  7. Here you can test the enhance order.
  8. Test the “Send Points” order by sending some of your production points to another planet.
  9. Move towards another player’s planet/fleet.  This will initiate Combat
  10. Success.

If you find any problems in this test scenario, please notify me immediately.  Please note that some of the features above require Greywhind’s TP04 pywx client. My mentor Aaron and I will be playing some test games over the next week, and I’m sure we will uncover some things that I will need to fix.

That’s about it for MTSec, hopefully we can get it pushed into the master branch and make it the default game of Thousand Parsec soon!

GSoC/TP Weekly Report (July 4-Aug 10)

Tuesday, August 11th, 2009
Share

This Week:

Back in Canada and rocking it.  I have completed the first version of the MTSec combat engine.  It supports fleet-to-fleet and fleet-to-planet combat.  When you take over a planet, shouldn’t you gain control of it without having to colonise it?  That’s a question I will be deciding soon, I think that it may be beneficial to let the winning fleet take over the planet!

Next Week:

So, I guess this is almost it with about a week left.  I hope to clean up the code base pretty quickly and then dive back into more MTSec ruleset-based stuff.  I would prefer to work more on the ruleset than cleaning up and documentation — but of course these components are greatly needed as well!  Lee mentioned that I should have used battlexml for the combat, I definitely need to look into this more — unfortunately it will probably happen after the GSoC period. I have to say, I played a few rounds of MTSec and it is a lot more fun than minisec so far.  I hope that after a good cleanup (and likely some bug fixes) we can get this thing commited to master!

GSoC/TP Weekly Report (July 28-Aug 3)

Wednesday, August 5th, 2009
Share

This Week:

This week was a bit of an off-one for me.  I was in the United States and due to a form that I signed with Google, I was unable to work on the project during this time for tax reasons.  I am back in Canada now and ready to finish off my work on Thousand Parsec.

Next Week:

I have 6 working days until the pencil down date and I plan to work on the combat portion of the MTSec ruleset.  If I put in full-time days during this period I do believe that it is still possible to complete the task at hand by the due date.  I really want to adhere to the pencil-down date as the MTSec code does need a good cleanup.

GSoC/TP Weekly Report (July 21-July 27)

Tuesday, July 28th, 2009
Share

This Week:

This week I finally got all of the extra orders sorted out.  During my testing phase I have not actually been removing the resources needed to make the missiles and torpedoes, but adding this will not be a problem at all.  I’m leaving it out now because it is a pain in my ass and makes my testing phases take longer.  We can now create a missile/torpedoe from a design and load and unload it from a ship/planet.  The economy seems to be going pretty well in my testing and looks like it’s according to the MTSec spec.

Next Week:

In this next week I will be focusing on the combat aspects of MTSec.  Since this will make or break the ruleset, it is of utmost importance that everything works correctly.  There is already an AVACombat class which I will be furthering until it is completed according to spec.  I will need to work on this quite a bit to get everything working by the GSoC pencil-down date of August 10th, which is about a week and a half away.

GSoC/TP Weekly Report (July 14-July 20)

Tuesday, July 21st, 2009
Share

This Week:

In this past week I have implemented and fixed various parts of the economy.  The SendPoints order now works as expected by using a Parameter (which apparently is supported with persistence) to add the one-time points.  Still to do with this order is to scale back the points based on parsec distance, but I am leaving it at 100% throughput right now during my testing of the economy phase.  I am still having a problem with implementing the design of missiles and torpedoes.  A discussion I had with llnz put some of my problems to rest today and I plan to fix the issues in the next 24 hours.  From here, this will leave my 3 weeks to work on the combat implementation of MTSec while still on track for the “Pencil Down Date”, which Aaron mention is a busy date and no programming should be planned during this time.

Next Week:

As soon as I finish the last problem that I have with the economy, I will be able to work on the combat implementation.  In June, mithro mentioned that he would like to discuss the implementation and possible problems that I may have.  I will try to meet him online to discuss this before I begin coding combat.  Since I’m a night owl and mithro is on the other side of the world, getting ahold of him is not difficult.  After completing the missile/torpedoe problem that I am having I will post my combat plan on this blog.

GSoC/TP Weekly Report (July 7-July 13)

Monday, July 13th, 2009
Share

This Week:

In the past week I have commited a Send Points order for the tpserver-cpp.  I am a bit behind in that I need a working “Built Missile/Torpedoe” order.  I expect it to be completed by Wednesday, hopefully sooner.  After speaking with Lee it has been decide that my Send Points parameter needs to be changed to a list of a player’s owned planets.  I found a great reference for this in the risk ruleset.  This change isn’t a big deal and has been put onto my todo list.  Also, I need to write some code that will account for production points in all orders — but I don’t think that this will be too hard.

Next Week:

My next deadline is August 9th and this requires combat to be fully featured.  I will finish up all economy stuff this week and then proceed to combat.  Mithro has told me that this will be the hardest part to debug, so I’m going to have to make sure that I have the economy stuff fully completed ASAP.  I have taken some preliminary looks at the AVACombat class and it seems comprehensible so I think that I wont have too much of a problem with combat initially.

GSoC/TP Weekly Report (June 30, 2009 – Jul 6)

Monday, July 6th, 2009
Share

This Week:

The deadline is almost here!  This past week was quite a good one for me.  While debugging an issue that I was having with the server I had to hit much of the tpserver-cpp code and I think that learning many of the underlying pieces of the server is a great thing for my ruleset development.  llnz recently produced a patch that will fix some issues I have been having with the tpclRequirementsFunctions while building a design.  This issue was a dealbreaker for me, so I am quite glad that it is now fixed.  I will be merging tomorrow and will test these changes.  On Sunday I committed a few changes that are pieces of the MTSec economy.  Now, planets will add one Factory per turn that they are owned.  Also, there is now an Enhance order to use Factories to build more Factories.  Gameplay will dictate just how many points that will be required to produce a factory, but I have tentatively set this value to one Factory for every 10 factories used in a turn.  I also added an order queue to the player’s home planet as I don’t think we can really progress in the game without it.

Next Four Days:

My midterm evaluation is in four days (10th), so I will be publishing another post on that day.  Between now and tomorrow I plan to merge the stable branch changes into the mtsec branch.  This will bring in tinyxml as well as the fix llnz has made for property values (setting them to 0).  Once I have done this I will first have to ensure that the design window is functioning properly now that we don’t have Requirements Issues.  Once this is done my Build Fleet order will allow MTSec to build the ships that have been designed by the player — a major part of this ruleset.  By the deadline I should also have Torpedoe/Missile designs and building working as well.  I had a good conversation with mithro about exactly how this is going to happen.  Unfortunately I’m coming down with a nasty case of the flu, but this shouldn’t keep me away from the keyboard in the next few days.

GSoC/TP Weekly Report (June 23, 2009 – Jun 29)

Monday, June 29th, 2009
Share

This Week:

The design windows are mostly working due to some Requirement Function tweaks this week.  I am having one problem which is I cannot require a hull to be present for a Tube if the num-hulls property is not set already.  Lee mentioned that I may be able to use a property value to fix this issue and we will discuss this further.  I’ve added a new category for the weaponry that will be used in the ruleset (Missiles and Torpedoes).  Today I also created a MTSec WIKI page on the Thousand Parsec Wiki.  This week I had a rather great conversation in #tp about my GSoC project which can be read here.  This conversation helped me greatly with the planning of my ruleset.  Also, we have decided to push back Combat until my last deadline because it is one of the hardest parts of the design.  Instead, for my July 10th deadline I will be making sure that Torpedoes and Missiles can be carried around in the system.  Also, there will be a basic economy in this iteration.  I have about 1.5 weeks to complete this and I think that I am on the right track.

One thing that will have to be decided is missile/torpedo speed.  I have made missiles ridiculously fast, but so far I have capped the torpedoes at a speed of 50.  Of course, these values are in an XML file so they will be easy to edit throughout the design of this ruleset.

Next Week:

My July 10th deadline is approaching rapidly and I must work on the ruleset at a fast pace this week.  I will be working on building torpedoes and missiles this week.  This will likely involve the creation of some orders in my ruleset.  This week I am aiming mostly to have the missiles and torpedoes working and then move to working on the economy from there.  For the combat, mithro has stated that he has some ideas that we can implement once I get to that point (last iteration).

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

Tuesday, June 23rd, 2009
Share

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.

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

Monday, June 15th, 2009
Share

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.