AddonServer

From The Battle for Wesnoth Wiki
Revision as of 17:17, 5 August 2012 by BettyMorgan (talk | contribs) (minor updates)

Me

account names:

gna: giebfried

forum: giebfried

irc: giebfried

preferred email: andrewgiebfried@gmail.com

Introduction

Hi, I'm Andrew Giebfried and I'd like to participate in Summer of Code primarily to learn first hand how programs are written in a group environment. In addition, working for GSoC will help fulfill some of my academic program's "Work Term" requirements. Currently, I am in first year engineering with the intent of going into computer engineering.

Experience

I have worked on many of my own small to medium-sized programs on various things. I have only worked on individual projects so far. This will be my first time participating in Google Summer of Code. I am not involved with any open-source projects so far.

I am a bit of a gamer, most of the games I find myself playing mostly turn-based strategy games with a few real time strategy games as well. I find game play crucial, but the storyline is still very important. I've played Wesnoth for awhile, probably 2 years. I play single player - mostly with the campaigns but I've also played some multiplayer maps versus the AI as well.

I take advice very well and can discern good advice from useless advice.

  • Programming Languages
    • Java (over 3 1/2 years of experience)
    • C++ (over 2 years, but I haven't made very large programs with it)
    • Python (over 2 1/2 years, but I haven't made very large programs with it)

I have two years of AP Com Sci and a year of Independent Study in Computing in high school where I used Java. For a post AP-exam project I developed a simple graphical game one year and a very crude IDE for Java. I currently am taking a required class in basic programming in C++. I learned Python in my spare time. In my independent study, I studied drag and drop, networking, the implementation of the math library, and I partially made a simple paint program similar to MS paint.

  • Miscellanea
    • Linux - I've used Linux for over 2 years
    • SVN - I am very new to this.
    • Terminal - I know my way around.

For this project I would use the Iterative and Incremental development model.

Idea

I intend to work on the suggested project:SoC_Ideas_Addon_Server. In this project, I plan to update the existing server code for strong integration with WesCamp and use certain WML tools on content. For the client side, I plan to make the addon server GUI more informative to the user as well as simple and straight-forward to use. I also plan to make updates simple to notice for the client. Map Packs, Eras, etc. would be shown in separate categories from campaigns and easier to download and use for the client.

I plan to spend about half of my time on the server side and half on the client side. For the server side, I will also spend about half of that time on WesCamp work and the WML tools work. On the client side, I plan to work on functionality first and then enhance the GUI. For the GUI I plan to redesign the current screen


Client side

For the client side I think the way the data is presented is not intuitive for the user. The current client in the does not inform the user of the type of download (i.e. campaign, Era, map pack) except by the name of the file. In addition it does not notify the user if they already have the addon. The age of the addons is also missing from the data; the date is helpful to see how new the content is. The Addons also can only describe their usability by version number; the author(s) cannot say how usable the campaign is. The remove addon feature is distant from the rest of the client gui. I would like to split the addons into two sections on the same window; one for existing downloads and the other for potential downloads. The existing downloads section will have an upgrade option if a newer version of an addon is detected. Upgradeable addons will have some sort of emphasis to show that a newer version is available. It will also include a remove option in case the user wants to remove the addon. The type of addon will be shown by either a by color code or placement. All of the downloads will contain the currently implemented information, but also show the date the addon was uploaded. In addition, a tooltip (or a dialog perhaps) will have a short description of the state of the addon (i.e. "completed" or "done first 3 scenarios", etc.) The stand-alone client will show the same data, but in a non-graphical way.

Server side

According to the original idea, the server is in need of improvement. It needs to integrate with WesCamp more than it currently does and it needs to run python as well. I plan to modify the existing server, which is written in C++. Although one of the server's requirement is to run python code, the Python code can easily be embedded into C to fulfill this requirement. Although not much of a change, I would like to rename the "campaign server" in the code to a more correct "Addon server" for correctness and clarity. Since there will be campaigns on the server in the old format, there will be some tool to convert them into a new format to easily interact with the client.


Translations

The translations will be in a separate file from the rest of the addon. When the user downloads UMC they will download the the translations of choice and the rest of the addon.

The client will have a "get translation option" for each addon which will allow the user to add or delete a translation for th addon they chose. When the user downloads an addon, the client will also download the translation for the user's current language setting. If the user decides to change his or her language in the main menu, he or she will receive a prompt asking if they would like to check for translations for all of the downloaded UMC.

The server will have a cron job to get the newest translations from WesCamp. Also, when a user updates his or her campaign, the pertinent information will go to Wescamp for the translators to work on.


Timeline

  • Initial Planning (now-ish to first week or so at most)
    • Go over the wiki and read the Developer Information
    • Try implementing an Easy Coding ideas to get a feel for SVN, the code
    • Brush up on my Python skills, I need to look at the libraries some more.
    • Study the existing Addon Server (some more)

As per YogiHH's suggestion the first 3 iterations of my project:

Iteration 1 - initial planning:

  • requirements:
    • determine feature set
    • changes in protocols
    • how to integrate WesCamp & WML tools
    • plan out client (GUI already mostly explained above)
  • analysis & design:
    • study the requirements, lightly

Iteration 2 - elaborate on server & client

  • requirements:
    • how to integrate WesCamp & WML tools (more in depth than before not completely; this is just to make iteration 3 easier)
    • format of UMC saved on server for ease of WesCamp's and WML tools' use.
    • enable python client to get addons in the new format

analysis & design:

    • new UMC format ... \n

New Toilet System Transform Waste into Electricity

Scientists from Nanyang Technological University (NTU) have invented a new toilet system that will turn human waste into electricity and fertilisers and also reduce the amount of water needed for flushing by up to 90 per cent compared to current toilet systems in Singapore.

[New Toilet System Transform Waste into Electricity]

[GoodvilleNews.com - good, positive news, inspirational stories, articles]

The Business 9 Women Kept A Secret For Three Decades

Somewhere in West Tennessee, not far from Graceland, nine women -- or "The 9 Nanas," as they prefer to be called -- gather in the darkness of night. At 4am they begin their daily routine -- a ritual that no one, not even their husbands, knew about for 30 years. They have one mission and one mission only: to create happiness. And it all begins with baked goods.One of us starts sifting the flour and another washing the eggs,

[The Business 9 Women Kept A Secret For Three Decades]

[GoodvilleNews.com - good, positive news, inspirational stories, articles]

The Relationship Between Gifts & Community

Wherever I go and ask people what is missing from their lives, the most common answer (if they are not impoverished or seriously ill) is "community." What happened to community, and why dont we have it any more? There are many reasons the layout of suburbia, the disappearance of public space, the automobile and the television, the high mobility of people and jobs and, if you trace the "whys" a few levels down, they all implicate the money system.

[The Relationship Between Gifts & Community]

[GoodvilleNews.com - good, positive news, inspirational stories, articles]

Authors Nominate Top Books of All Time

In 2002, the Norwegian Book Clubs gathered 100 authors from 54 countries and asked each one to list the 10 best works of fiction of all time. The authors responded and this list was created. The titles are arranged alphabetically by author name, so no one book stands above any other. The following list is the groups selection of the worlds 100 best books.How many have you read?

[Authors Nominate Top Books of All Time]

[GoodvilleNews.com - good, positive news, inspirational stories, articles]

The Story of Change

"Ive come to see that we have two parts to ourselves; its almost like two muscles -- a consumer muscle and a citizen muscle. Our consumer muscle, which is fed and exercised constantly, has grown strong: So strong that "consumer" has become our primary identity, our reason for being. Were told so often that were a nation of consumers that we dont blink when the media use "consumer" and "person" interchangeably."

[The Story of Change]

[GoodvilleNews.com - good, positive news, inspirational stories, articles]