GSoC report 2011: Martin Preisler

Hi, I am Martin Preisler (“Kulik” on various IRC networks and forums) from Czech Republic. This year I got accepted into Google Summer of Code and had the pleasure to work for Worldforge.

I was working on Ember’s GUI improvements. I chose this project because I wanted to work on an application and not a library (most of my work is on libraries that are later used by developers to develop end-user apps, I wanted to try to work on the apps for a change) and I felt lack of several GUI dialogs was severally impacting newcomers.

What really slowed my progress as a newcomer at that time was:

  • the inability to buy items without manually “giving” coins, and that only if you somehow get to know what the merchant is selling in the first place (I helped in this regard with the Merchant Trading dialog deliverable)
  • I accidentally closed my inventory and couldn’t get it back – you can show it again with the /show_inventory command but I suspect most people will just get mad and restart Ember (I helped in this regard by adding an inventory icon that toggles its visibility, Jayr made the icon image)
  • Ember started and I could log to any server and start moving around, however the mouse look sensitivity was very low at that time (this was improved by one of Erik’s commits later) and I couldn’t raise it up in any way (this could have been specific to my system). I later learned that I could add this setting to ~/.ember/ember.conf but I am almost sure newcomers won’t be ready to invest into research to find where the config file is and how to change it to make the necessary settings changes work (I generalised this problem and made a Settings dialog with generic representation API to remedy the situation)

So focusing on the GUI felt like an important and fun endeavor despite it not being in the “Ideas list”. I also am in the team behind CEGUI – the library that Ember uses for its GUI, so I felt I could get fairly productive with it.

I think it’s best to watch a video describing my progress over the summer because most of the deliverables are visual –

At the beginning of the program I found it easy to be productive and focused but my progress slowed down considerably when I hit some barrier I couldn’t solve in a matter of hours. Spending time not doing any tangible progress and instead trying to hunt down some strange issue got me of my wind and it took time to accelerate the progress back to it’s former speed. I definitely advice all future GSoC students to keep slightly ahead of the schedule because problems might arise from places they wouldn’t expect, I was 1-2 weeks ahead of schedule and that reserve allowed me to finish the Settings window on time.

New features
As part of my GSoC project I implemented the following features:

  • Window activation and deactivation transitions
  • Coloured chat (each entity in the chat gets a colour assigned)
  • Coloured console (errors, info and warning messages are easier to distinguish)
  • Detached entity dialog (with history of conversation with that paricular entity)
  • Merchant trading dialog (trading without any typing or manually giving coins)
  • Settings window (allows to change various options without having to read manuals and edit configuration files)
  • Toggle buttons for inventory and settings window

(+ some minor bugfixes and/or smaller improvements)

I found Google Summer of Code one of the best programs I have ever taken part in. I learned a lot (especially about lua and tolua++, though both of these frustrated me a lot over the summer :-D) and of course gained a very nice CV entry and bragging rights ;-) Worldforge was a great organisation to work for, all members were very helpful. My plan is to keep contributing, although not in such a high volume due to time constraints.

Many thanks especially to Erik for awesome mentoring over the summer. He was always on top of what I was doing and saved me many hours by alerting me of mistakes early on or advising me to go another direction when necessary.

About erik

Main developer of the Ember client.
This entry was posted in Ember, Google SoC and tagged , . Bookmark the permalink.

Comments are closed.