SummerOfCodeIdeas

From The Battle for Wesnoth Wiki
Revision as of 21:15, 2 April 2011 by Timotei21 (talk | contribs) (add the logic for including the proposals NOT submitted to google)
This page is related to Summer of Code 2011
See the list of Summer of Code 2011 Ideas



Contents

I want to be one of your Google Summer of Code students, what should I do...

Here is a quick list of things to do at this time:

  • MOST IMPORTANT Join the irc channel (#wesnoth-dev on irc.freenode.net) and talk about your project and your appilication. We will not give formal interviews, but we will clearly favor people we have learned to know during the selection process (basically communication via IRC is mandatory for our project! it is the main way of "every day communication" for Wesnoth. For the same reason, it's also a good idea to regularly read the IRC logs.).
  • VERY IMPORTANT Update the wiki page about your idea (Make a copy of the student proposal page template: SoC2011_Template_of_Student_page):
    • Fill the questionnaire.
    • Detail your idea as much as possible, look at other students pages, and please give timeline, milestones and studies you've done
  • If you haven't done so yet, create an account on gna.org (required for committing later on)
  • If you haven't done so yet, create an account on the wesnoth forum, and tell an admin of the forum or leader of the group on the IRC channel to mark it as a GSoC Student account (admins/group leaders are: Boucman, Crab, fendrin/Fabi, Ivanovic, Mordante/SkeletonCrew, Noy, shadowmaster, Sirp/Dave, Soliton)
  • Though not mandatory, it is highly advisable to go to the EasyCoding and NotSoEasyCoding pages and implement one of these ideas (or any idea of similar scope) so we have an idea how you work. Be sure to use your gna account when submitting these patches so we know who it is coming from. You can also implement some features from our feature request database at gna. When you implement something, also list it on your own page with a reference to the patch. This should give you a good idea what the Wesnoth sourcecode is like and will provide a good start to getting used to our coding style, too. You can also start working on your project and submit patches/prototypes related to it

Information about our Project

The information we provided google with about our project can be looked up at the site SoC Information for Google.

Also see the DeveloperResources link (from the Project page).

People to bug on IRC

We have prepared a list of people with their "area of competence". This is to give you an idea on which areas those people can be of help for you. Of course you should always just ask in the IRC chan, but those are the most likely ones to answer questions in the respective area. And here is the list:

SoC People to bug on IRC

List of Ideas for the Project (Suggestions from wesnoth developers)

NOTE: this list of ideas is automatically generated from the 'description' section of pages in Summer of Code 2011 Idea category. DO NOT TRY TO EDIT THIS LIST BY HAND - IT WON'T WORK. INSTEAD, CREATE A NEW PAGE WITH THE following template: SoC_Ideas2011_Template.
NOTE: to add a student page, create a new page based on copy the student proposal page template: SoC2011_Template_of_Student_page):


Enhance & polish the Wesnoth Eclipse Plugin

More info at SoC_Ideas_Eclipse_Plugin2011

A java-based Eclipse plugin was created in 2010 to allow easier creation and modification of User-Made Content for Wesnoth. You should extend this work and polish existing features in terms of usability and performance, and add new features.

There is 1 submitted student proposal for this idea

timotei - Improving the Eclipse Plugin

I aim at improving the plugin, so it will become the tool used by all UMC Authors. That is, UMC Authors will get rid of the lot of different tools they use for different tasks (for example the Emacs WMLMode/other plugins for different text editors), and instead use one single unified Tool that will speed up the development. My target is to make this plugin a complete and very stable suite for all umc tasks that don't need specialized software - like a graphics editor, so I'd like to have this oportunity to finish it in the good sense.
See SummerofCode2011 Timotei21 for more information.


Extend Wesnoth's Lua AI support and improve Wesnoth's AI

More info at SoC_Ideas_LuaAI_2011

It is very important for Wesnoth to have a way of scripting AI without modifying the c++ source code. Some time ago, it was possible to use Python to code AIs, but it was removed due to security issues. Now, we have added Lua as a new way to script AI. The core capabilities were already added, but we need to integrate Lua AI scripts better.

Wesnoth AI consists of different components. Each component is a c++ object, which provides an interface to allow the ai to delegate part of the turn sequence to that c++ object. But, that c++ object can be a proxy for code written in different language, such as formula_ai or lua. So, we have a lua engine - a c++ class which is responsible with creating c++ proxies for lua code snippets. This lua engine must provide access to all the information that the c++ AI knows - caches like 'attacks' and 'possible moves', values of aspects such as 'aggression' and 'caution', etc. So, there's a large number of AI support functions which we need to expose to lua code.

There are 7 submitted student proposals for this idea

Mark Goodenough - Improvements to the Lua AI

I propose to first extend the capabilities of the current system for using Lua scripts to dictate AI behaviour, which is the main part of what the Wesnoth team have said they want from this project. After that I intend to program some specific behaviours that scenario designers might find useful, like 'focus on this unit' for situations where the players looses if a unit dies. Finally I intend to try to improve on the current Wesnoth AI creating an AI that performs better against human opponents, hopefully by joining the Wesnoth project and working with Crab on the AI. This last goal is the hardest part, as I've never written an AI before although our course at uni does cover the theory side of possible AI implementations, and I may not succeed.
See MGoods for more information.

Qbunia - AI implementation guy

Hi my name is Jakub Ozga. I like to work on Ai exposing from c++ to lua. First of all i will do pregsoc work to get know which parts of AI are missing. Then I would do through plan which is written here: SummerOfCodeIdeas#Extend_Wesnoth.27s_Lua_AI_support_and_improve_Wesnoth.27s_AI.


See Qboo for more information.

FishbaitHarry - Extending Lua AI support and implementing additional AI techniques

As the first part of my work I would like to design and implement the extension to the Lua script interface, providing it with all of the AI support functions that might be needed. If that task is completed swiftly, I would like to move on to implementing some additional support functions, including interfaces to customizing and using some advanced AI algorithms, like Reinforcement Learning.

The extent of work with additional support functions and the exact algorithms to be implemented would be based on research done during the first part of work, as I familliarise myself more with the whole ai used in Wesnoth. In the final product, I hope to make the Lua AI scripting both advanced and easy to use tool for both scenario developers and students who would like to use Wesnoth to test and compare AI techniques from scientific standpoint.
See SoC2011 FishbaitHarry for more information.

Afan - LuaAI

My idea is to improve the AI by allowing to to have more context of what is going on in each game. This means giving both the AI, and users knowledge in how good a move is, show suggested moves. To implement this, I plan to create an influence map for each AI player which will calculate roughly how strong each unit on the field is. Based off this the influence map will be able to tell the AI roughly how safe or unsafe a tile is.
See SummerOfCodeProposal 2011 LuaAI Afan for more information.

champ - Implement Multi-player Lua AI scripting security

I plan to implement a secure mechanism on Lua AI scripting system.
The mechanism will be implement on C++ level and transparent to Lua AI scripts.
Make player-unaccessible resource also unaccessible for Lua AI scripts. (For example: If fog is on, units covered by fog for current player should not accessible to Lua scripts initiated by current player.)
Make player-read-only resource also read-only for Lua AI scripts. (For example: Lua scripts should be able to access the coordinate for a player-owned unit, but should not be able to modify it directly.)

See SummerOfCodeProposal 2011 LuaAI champ for more information.

Jody Northup - Improve and extend Lua AI scripting facilities

This is the Lua AI improvement idea.
If I am accepted for this project, I will bring the Lua AI scripting functionality up to par with the current C++ AI programming functionality by first exposing all of the C++ AI support functions to Wesnoth's Lua API, and then adding WML utilities to include and handle custom Lua AI code in WML modules.
I expect the first step to involve an in-depth analysis of the C++ AI functions and an inventory of the gaps in the currently-implemented Lua AI API, followed by tedious Lua API programming to expose each of those functions. I expect that the second step will involve communication with the development community to determine good WML specifications for the use of Lua AI code in UMC modules.
See SummerOfCodeProposal 2011 LuaAI JodyNorthup for more information.

Nephro - Improving and extending LuaAI

The artificial intelligence module of Battle for Wesnoth is written in C++ and is pretty complicated for scenario developers to configure. That's why Wesnoth developers decided to extend it and allow users to write AI configurations in Lua, which is not possible at the moment.
See SummerOfCodeProposal LuaAI Improvement Nephro for more information.


Reengineer Wesnoth's multiplayer engine

More info at SoC_Ideas_Multiplayer_Improvements_2011

Wesnoth includes a lot of multiplayer content, like 'standard' scenarios, custom scenarios and multiplayer campaigns. However, when creating a multiplayer game, the player's options are highly limited - for example, it is not possible to select the difficulty level before starting the scenario, and it is not possible to allow the scenario to set what 'variables' can be customized by players before game is started (there's only global 'use map settings' flag and some control over sides). We want to reengineer the architecture of Wesnoth's multiplayer engine to allow it to support those things.

There are 3 submitted student proposals for this idea

Daniel Tadeuszow - Practical Multiplayer

vjoe - Multiplayer Reengineering

The aim of this project is to unify the single and multiplayer modes with the intend of making the game engine more modular, more efficient and easier to extend.
See Vjoe Multiplayer Reengineering for more information.

Zaroth - Multiplayer Improvements

Since the idea with Simple content manager may turn out to be redundant, I turned my attention to SoC_Ideas_Multiplayer_Improvements_2011. This is a bunch of smaller projects with the common theme of improving multiplayer rather than one big project.

Description of my vision of these improvements can be found here: Zaroth Multiplayer Improvements
See Zaroth for more information.


Add WML Schema Validation to Wesnoth

More info at SoC_Ideas_Schema_Validation2011

Wesnoth supports a special language called WML ('Wesnoth markup language' ). To make it easier to check if a WML is correct, we want to add the support for WML schemas (descriptions of all possible tags and elements and a way to check if given WML file is correct according to schema) to Wesnoth.

There is 1 submitted student proposal for this idea

Sytyi - WML Validator

The main idea of WML Validator is grammar based validator on C++ generating USER-FRIENDLY error messages in gcc style.
See GSoC 2011 Sytyi for more information.


Create a simple content manager frontend for non-technical users

More info at SoC_Ideas_Simple_Content_Manager

Wesnoth has all sorts of contributors that are not coders (translators, graphists, multiplayer developers, musicians, etc)

A large part of these users don't know how to use content managers (git, s­­v­­n, etc...) and are not interested in learning. Wesnoth has been looking for a simple frontend to the most common content managers for those developers but none of these are simple enough for our use case.

There is 1 submitted student proposal for this idea

Disruption - Simple Content Manager

Brief: I want to write a Java Simple Content Manager. The most important thing about it would always be simplicity in terms of not requiring technical knowledge at all, so potential contributors in areas like graphics, music, or other artwork could join the community and help with ease.


The idea is developing the project in a Java environment, as java is supported in most OS(Apart from Mac, Unix and Windows, it can also be used in most mobile platforms and systems). Another reason for choosing java is that is very easy to design a cute GUI that don't scares the user away, and also the GUI adapts its “look and feel” to the system it is running in, so the user sees it like another of his programs, rather than an external, strange tool. In terms of programming, as described before, the idea is taking a MVC approach, implementing first the view, and preparing then a modular controller for all the functionality needed. As Java has JUnit tests and a powerful debugger, it's easy to track down bugs and fix them, as well and check that every part works correctly and incrementally, so you can be sure that a new functionality doesn't break an older one(As you can add tests while you develop, so you always execute 100% of the tests).
See Disruption Simple Content Manager for more information.


Allow wesnoth to support spritesheets

Page for the idea: SoC_Ideas_Sprite_Sheets2011

Currently, all the Wesnoth unit animations are based on thousands of small png images, each image representing the unit in a single pose. For terrains the situation is the same, it has a base image with a lot of transitions to other terrains, which are now stored as seperate images.

In a sprite sheet approach, each unit is represented by a single, huge, image where all the unit images are put on a mosaïc pattern and the game knows where to look for a given image.

The advantage of having a large image with all positions is that it's more efficient in memory. Also one large file is more effecient on the harddisk and faster to load than a lot of smaller files. So the change to spritesheets will have a lot of advantages.

Regarding the implementation the student is free to come up with his/her own solution and discuss that with the developers during the application period.

There are 6 submitted student proposals for this idea

Arthur Wulf - Spritesheets

I wish to reorganize the sprite system for units & terrain:
Creating an artist friendly workflow & implementing extensile spritesheet functionality.
Doing this I'm planning to accomplish two goals:

  1. Allow artists to make tweaks in animation more quickly and easily.
  2. Improve installation time and loading time of the game. It could also be of benefit to perforamance on ports to mobile devices.

It will simplify the process of adding new content by allowing artists to work with one single large image rather than many seperate files.
After receiving artists feedback we may also want to consider adding an in-game option to refresh sprites w/o exiting the game and restarting.
(In order to test tweaks more quickly)

In addition to working on the spritesheet system I will complete the transition to this new system by creating a tool that merges frames in seperate .png files into an organized spritesheet and creates a new .cfg files that is adjusted to use a spritesheet.
This will have the additional benefit of leaving the choice between the new and existing workflow in the hands of the artist.
See SoC Ideas Sprite Sheets2011 ArthurWulf for more information.

Tom Hadley - Sprite Sheet Creation/Implementation

The first step is to create the sprite sheets by taking the many small sprites that we already have and piecing them together to form a sheet. This sheet must be organized in such a way that the each individual sprite is still easily accessible.

I think the best way to go about accessing the sprites is to have them in a certain location in the sheet. This sheet could then be divided into different image-esque objects using a bi-dimensional pixel struct array, while certain sprites are given certain x-y locations.
See SoC Ideas Sprite Sheets2011 hadleyt for more information.

Nicolas Pépin-Perreault - Spritesheet Implementation

The idea is to implement support for a flexible sprite sheet mechanism within the Wesnoth code base; flexible implies the capacity to deal with variable-sized frames within the same sheet. The project would focus on implementing a 2D array interface to individual sprite sheets, allowing easy and efficient access to single sprites within the sheet with minimal change to the rest of the code base. Other goals would be the creation of a command-line tool to batch convert series of PNG images into a sprite sheet, and a GUI tool to allow artists to easily tweak the visual aspects of unit and terrain sheets.
See SoC Ideas Sprite Sheets2011 Npepinpe for more information.

Sajal- Implementation of images using spritesheets

The idea is to implement a spritesheet for loading images instead of individual png images.Basically, the idea is to design two seperate spritesheet - one for the characters and the other for objects in the environment.It would be flexible and have multiple-sized images.

The 2 spritesheets would be a large png image. If possible,a tool to merge images into a spritesheet would be created, so as to skip the "copy-paste" process . This will also enable other users to add the characters of their choice- which they could design via photoshop/other image-editing programs.
See SoC Ideas Sprite Sheets2011 Sajal for more information.

Karol Kozub - Spritesheets

I would like to implement a tool that would pack images into spritesheets. The tool would use an optimization algorithm to propose an arrangement to the artist, who then would be able to modify it using a GUI. It would also support adding/removing sprites to/from existing spritesheets. I would also implement an spritesheet manager in C++ that would load the images from spritesheets using configuration files generated by the tool.
See SoC2011 Automagic for more information.

Jacob Regan - Consolidation of .PNG's into Sprite Sheets

The goal is to create a logical system for ordering individual frames of animation into a single image file. The implementation of this system has two major parts. First, the code to implement those single image files needs to be developed and tested. Secondly an easy way to manipulate, modify, and add new sprite sheets needs to be implemented. To this end, I propose that each sprite sheet be arranged in a grid, with the rows each representing a different animation action (attack, idle, ect.) and each row representing a frame of the animation.
See SoC2011 Zippydaspinhead for more information.


Improve Wesnoth's Whiteboard

More info at SoC_Ideas_Whiteboard_2011

A whiteboard planning UI was implemented last year for GSoC

This years project would be to continue the work by polishing what was done last year and making it network aware so allies can see each other's plan

There are 2 submitted student proposals for this idea

Bacon - Implement networking such that allies can allow their plans to become visible to each other.


See Bacon for more information.

Tommy Schmitz - Whiteboard Improvements

The Wesnoth whiteboard system is the mechanism by which players can plan their strategies in-game. The whiteboard is currently unfinished and requires both debugging and additional features. The proposed project will address these, with the focus on allowing allied players to view each others' plans over the network.
See Tschmitz for more information.


Make your own ideas

Page for the idea: SoC_Ideas_Your_Own_Ideas2011

If you have your own idea the best thing is to join IRC wesnoth-dev at irc.freenode.net and discuss the idea with the developers there. If the developers think your idea is interesting and like the feature you can start to turn it into a full proposal. Once done discuss it again on IRC so the developers can accept your idea.


There are 2 submitted student proposals for this idea

Michael Babich - Improving Lua's User Interface Capabilities

I intend to improve the ability for add-ons to customize the user interface through Lua. I will focus on providing simple, but powerful syntax for a set of functions that will enable add-on creators to have improved, easier access to features that already exist within the game engine so that they are free to creatively provide more innovative content.

The purpose of this project is to act as a middleman between the game engine and the add-on creators using the Lua scripting language so that simple and powerful add-on creation can help revolutionize future MP, just as [set_menu_item] and [option] allowed for a great evolution in the quality of add-ons since 1.3. This interface framework needs to be as broad as possible in the time given and the scope allowed so that creative add-on authors themselves can stretch Wesnoth content far beyond its traditional style, but it also must provide a simplified Lua helper library so that everyone can use it without necessarily having to delve deeply into the complexity that exists in the currently-existing GUI.
See SoC2011 Student Page Aethaeryn for more information.

Kornel Kisielewicz - pure Lua-based scenario definition

The proposal suggests a schema and solution for defining Wesnoth scenarios in pure Lua without the usage of WML. Advantages of such a solution and the additional benefits that will be delivered along it will be described in detail soon.
See SoC2011 Student Page Epyon for more information.


Student proposals not submitted to google

There are 3 student proposals which were not submitted to google
SoC2011 Student Page Aethaeryn
SummerOfCodeProposal 2011 LuaAI Afan
SoC Ideas Sprite Sheets2011 ArthurWulf
Bacon
SummerOfCodeProposal 2011 LuaAI champ
Disruption Simple Content Manager
SoC2011 Student Page Epyon
SoC2011 FishbaitHarry
SoC Ideas Sprite Sheets2011 hadleyt
SoC2011 Automagic
MGoods
SummerOfCodeProposal LuaAI Improvement Nephro
SoC Ideas Sprite Sheets2011 Npepinpe
Qboo
SoC Ideas Sprite Sheets2011 Sajal
SteveGSoC SoC2011 Student Page SteveGSoC
put ONLY your irc nickname in there. in case of alternate nicks, separate by ,

Example content of this section: "user" "user1, user2" SoC2011 Template of Student page
GSoC 2011 Sytyi
SummerofCode2011 Timotei21
Tschmitz
SummerOfCodeProposal 2011 LuaAI JodyNorthup
Vjoe Multiplayer Reengineering
SoC2011 Xenmen
Zaroth
SoC2011 Zippydaspinhead