Difference between revisions of "SummerOfCodeIdeas"

From The Battle for Wesnoth Wiki
m (Generic Input Support)
(List of Ideas for the Project (Suggestions from the wesnoth developers): make this section autogenerated)
Line 25: Line 25:
 
== List of Ideas for the Project (Suggestions from the wesnoth developers) ==
 
== List of Ideas for the Project (Suggestions from the wesnoth developers) ==
  
=== Extend Wesnoth Lua AI support ===
+
{{#dpl:
Proposed by developer: Crab
+
|category=Summer of Code 2010 Idea
 
+
|include=#Description
'''Description:''' Lua AI support was recently added to wesnoth. Expose c++ AI support functions that wesnoth has, to Lua.
+
|mode=ordered
 
+
}}
'''Definition of Done:''' all information that is possible to use in c++ AI, is possible to use in Lua AI with relatively same level of complexity for AI author.
 
 
 
'''Difficulty''': Easy
 
 
 
Read more at [[SoC_Ideas_Lua_AI]]
 
<hr/>
 
=== Allow to store persistent gameworld information for SP and MP games ===
 
Proposed by developer: Crab
 
 
 
'''Description:''' Allow WML authors to store/access persistent data 'in context' of a specific campaign/add-on/group of addons/ group of games. This will allow things like 'achievements' or 'massive multiplayer campaigns' to work.
 
 
 
'''Definition of Done:''' WML authors are able to store and load WML snippets in their core campaigns/addons/groups of addons/groups of games. It is possible to use this system for displaying per-addon 'Achievements'. 'massive multiplayer' games with persistent gameworld are possible to code using WML and possible to host using stock wesnoth multiplayer server.
 
 
 
'''Difficulty''': Hard
 
 
 
Read more at [[SoC_Ideas_Persistent_Gameworld]]
 
<hr/>
 
=== Rewrite wesnoth network stack using boost::asio ===
 
 
 
'''Description:''' Rewrite wesnoth network stack using boost::asio
 
 
 
'''Definition of Done:''' Wesnoth network stack is rewritten using boost::asio.
 
 
 
'''Difficulty''': Medium
 
 
 
Read more at [[SoC_Ideas_Network_Stack_Rewrite]]
 
<hr/>
 
=== New Alliance system ===
 
Proposed by developer: Boucman
 
 
 
'''Description:''' Wesnoth currently has a very simple alliance system, players are either allied, neutral, or ennemies. The idea is to replace this with a system of privilege granting. Each player can grant privileges to other players but can't force other to grant the corresponding privilege. Thus it's only through diplomacy and trust that you can build an alliance.
 
 
 
Read more at [[SoC_Ideas_New_Alliance_System]]
 
<hr/>
 
=== Addon server ===
 
'''Description''': Wesnoth has an addon server which offers users to upload user
 
made content (UMC). This allows all other users of Wesnoth
 
to easily download and install this content. The server was
 
originally written for user-made campaigns but contains a lot
 
more types of addons nowadays. Both the server side and the
 
client side need to be improved.
 
 
 
Read more at [[SoC Ideas Addon Server]]
 
<hr/>
 
 
 
=== Spritesheet support ===
 
'''Description''': Wesnoth units are made of thousands of small png files, each containing the image of the unit in a given stance. This has the advantage of (arguably) being easier for artists. However this has a huge cost in term of memory usage. The point of this SoC would be to allow wesnoth to support spritesheets : huge images containing a mosaic of all images and related tools/code support
 
 
 
 
 
Read more at [[SoC Ideas SpriteSheets]]
 
 
 
<hr/>
 
=== Generic Input Support ===
 
'''Description''': Since 2008, Wesnoth has been rewriting its GUI system with a more flexible system allowing all user interface aspect to be specified through WML. One of the areas that hasn't been ported to the new system yet is the input subsystem. The point of this SoC would be to make Wesnoth use the new framework for input, keeping in mind different input types than the usual keyboard+mouse (console type pads or phone touchscreens for example)
 
 
 
Read more at [[SoC Ideas Gui2 Input]]
 
<hr/>
 
  
 
=== Make your own ideas ===
 
=== Make your own ideas ===
 
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.
 
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.
 
<hr/>
 
<br/>
 
<br/>
 
 
<br/>
 
<br/>
  

Revision as of 21:24, 28 February 2010

This page is related to Summer of Code 2010
See the list of Summer of Code 2010 Ideas



This is a compilation of ideas from ML. Needs to be refined (more detailed description, deliverables, workload estimation?):

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 to get you started

  • MOST IMPORTANT Join the irc channel (#wesnoth-dev on irc.freenode.net) and introduce yourself. 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.).
  • Create an account on gna.org (required for committing later on)
  • 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, Ivanovic, Mordante, shadowmaster, Sirp, Soliton, YogiHH)
  • Start a wiki page about your idea:
    • base (just copy-paste) your wiki page on SOC_Template_of_Student_Page. Your page will be included in the 'Summer of Code 2010 Student Page' category, and, your page will appear in the list of student pages at the end of this page.
    • List your account names (gna, forum, irc nick) so that we can recognize you
    • Fill the questionnaire on this page: List of questions to answer
    • Detail your idea as much as possible, look at other students pages, and please give milestones and studies you've done
    • Add a link to the page at the bottom of this page
  • 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.
  • Once you have everything done here and think your idea is okay, go to page at google to submit your application. You have to submit it before April 9th at 19:00 UTC (12:00 noon PDT) or you have no chance to get in!

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

  1. SoC Ideas Eclipse Plugin

    Create an eclipse plugin for wesnoth UMC development

    Page for the idea: SoC_Ideas_Eclipse_Plugin

    We want to use the eclipse platform as the IDE to assist Wesnoth UMC (user-made-content) Development. To do that, we need to create an eclipse plugin which will allow to rapidly start UMC development and which will act as a frontend for existing wesnoth UMC development tools. To do so, we need to try to integrate existing solutions as much as possible.

    There is 1 submitted student proposal for this idea

    Timotei21 - Eclipse UMC Plugin

    • gna.org: timotei
    • irc: timotei21/timotei
    • forum: timotei21

    I'm Timotei, and I want to participate in GSOC, as a developer at Battle for Wesnoth game. I'm interested in developing the Eclipse UMC plugin. For details of implementation and planning, see the Proposal Summary and the Timeline.

    Last Updated: 16th of April 2010
    See SummerofCode Timotei21 for more information.

  2. SoC Ideas Gui2 Input

    Port Wesnoth input framework to a more flexible system

    Page for the idea: SoC_Ideas_Gui2_Input

    Since 2007, Wesnoth has been rewriting its GUI system with a more flexible system allowing all user interface aspect to be specified through WML. One of the changes has been to change the GUI input system. The input system still only support keyboard and mouse. With the rise of the more powerful hand-held devices(hand-held game consoles and phones) Wesnoth gets ported to these devices as well. The scope of this SoC project is to add more different kind of input devices like pads and touch screens.

    There is 1 submitted student proposal for this idea

    Kahowell - Making the Wesnoth Input Framework More Flexible

    This would involve learning about the current state of the Wesnoth input system, and creating an input layer which is highly portable between different sorts of devices. Since Wesnoth already uses SDL, this project would mainly involve creating a subsytem to enumerate input devices and create a default configuration. I will look into different ways of identifying input devices (hopefully cross-platform), and perhaps create a database of default configurations (most likely just a collection of files). This project would also involve creating a dialog for input configuration.
    See SummerOfCodeProposal Kahowell for more information.

  3. SoC Ideas Lua AI

    Extend Wesnoth Lua AI Support

    Page for the idea: SoC_Ideas_Lua_AI

    Lua AI support was recently added to wesnoth. Expose c++ AI support functions that Wesnoth has, to Lua.

    There are 4 submitted student proposals for this idea

    Achilles - Extend Wesnoth Lua AI Support

    I would like to make a simple but efficient interface in which Lua scripts can be easily integrated/edited/removed from the existing C++ core AI system, without effecting existing code. This would allow me to code the AI scripts faster and allow other developers to continue the modification of the AI system later as well.


    See SummerOfCodeProposal Achilles Lua for more information.

    Darkas - Extend Wesnoth Lua AI Support and write a "defend" AI

    The first part of the proposal is described at SoC_Ideas_Lua_AI. So if the AI is exposed to lua and works, the AI should get 2 more features: defend effectively (shield wounded units, line up to get less attacks if there are more enemies, etc.), and decide when it's time to defend (this is per unit, so if there's a group of units that gets attacked, they'll be defenders now, but other unit may remain attacker). If that's done, the AI should also be able to do some missions better, if they should protect something for example, then they'll defend this special place or unit, instead of attacking the others and hoping they won't get there.
    See SummerOfCodeProposal Darkas for more information.

    Luca Moller - Make the c++ AI functions avaiable through the lua engine

    Working with lua and C++ bindings and with the already existing core functions, the idea of the project is to expose the remaining AI functions avaiable in C++. Everything that can be seen by the AI through C++ should also be seen by an AI implemented through a lua script. The final result would also include higher level AI functions to make it easier to scenario developers to set how they want the units in the scenario to act.
    See SummerOfCodeProposal LucaMoller for more information.

    Truongan - extend wesnoth lua ai support

    Extend Wesnoth Lua AI Support
    See SummerOfCodeProposal Truongan for more information.

  4. SoC Ideas Network Stack Rewrite

    Rewrite wesnoth network stack using boost::asio

    Page for the idea: SoC_Ideas_Network_Stack_Rewrite

    Rewrite wesnoth network stack using boost::asio.

    There are 2 submitted student proposals for this idea

    Orfest - Rewriting network stack

    gna.org : orfest
    irc : orfest

    I am really interested in rewriting network stack using boost::asio. This task will not only improve the current network stack implementation but will also bring new features such as proxy support, configurable timeout values for connections, connection multiplexing on the client.

    Please see more details on my page.
    See SummerofCode Orfest for more information.

    Billynux - Rewrite Wesnoth network stack using boost::asio

    • email : billybiset@gmail.com
    • irc : billynux
    • gna.org : billynux

    The project consists of developing a network framework in the form of an API and subsequently an implementation that can be distributed as a library for the development of client/server applications. This library will be used to implement Wesnoth's network stack.
    See SummerOfCodeProposal Billynux for more information.

  5. SoC Ideas New Alliance System

    New Alliance system

    Page for the idea: SoC_Ideas_New_Alliance_System

    Wesnoth currently has a very simple alliance system, players are either allied, neutral, or enemies. The idea is to replace this with a system of privilege granting. Each player can grant privileges to other players but can't force other to grant the corresponding privilege. Thus it's only through diplomacy and trust that you can build an alliance.

    There are 4 submitted student proposals for this idea

    Endercoaster-New Alliance System

    I plan to develop an expanded alliance system for Wesnoth, providing greater granularity and asymmetry in setting permissions. The first major step in this will be refactoring the array enemies_ which stores booleans with an array alliances_, which will store a vector of permissions (Probably stored as booleans, possibly stored as various implementations of an interface that will wrap either booleans or enums).
    See GSoC: Endercoaster for more information.

    Sannya - New Alliance System

    I propose a new Alliance System, expanding from the basic Ally/Enemy/Neutral system as current. These settings in the proposed system are either automatically set or user-choice set. The default status is "Neutral", the Enemy status will be set after a series of unfriendly actions, or can be set by user. The "Ally" status can only be set with mutual agreement among players. Request to be an ally will be treat as an yes/no confirmation, with time-out and other constraints applied.
    See Sannya GSoC for more information.

    Aranair - Summer of Code Proposal

    gna.org : aranair
    irc : aranair (will pop by real soon)

    I am interested in a new implementation of the alliance system where I will introduce the list of parameters that was listed out in the original post in the list of ideas (with modification). My take to this is that they should not be simply set to true or false but rather with more intricate levels to increase the dynamics through simple means...

    Discussed this in more details in my wiki page. Or if you wish to view a pdf version at:
    PDF Version of my Idea
    See SummerofCode Aranair for more information.

    Greywhind - New Alliance System

    I plan to implement a system for configurable privileges and protections between players in Battle for Wesnoth, in order to create a more flexible and more extensible alliance system. I plan to implement the suggested settings, and also to provide unintrusive tooltip notifications when an action is permitted or denied by an alliance setting. As someone who enjoys the board game Diplomacy, I know how an interesting alliance system can really make for an engaging game. Therefore, additionally, I would like to consider putting in place a system whereby these settings can be secret or public, and whereby public or private written treaties (in text form, and unenforced by code) can be proposed and accepted or rejected.
    See SummerOfCodeGreywhind for more information.

  6. SoC Ideas Persistent Gameworld

    Implement persistent storage of gameworld data between semi-related scenarios

    Page for the idea: SoC_Ideas_Persistent_Gameworld

    Allow WML authors to store/access persistent data 'in context' of a specific campaign/add-on/group of addons/ group of games. This will allow things like 'achievements' or 'massive multiplayer campaigns' to work.

    There are 3 submitted student proposals for this idea

    Guilherme Souza - Implement persistent storage of gameworld data between semi-related scenarios

    I want to implement the persistent gameworld idea. If I got accepted, I would discuss with the community and the developers about the best way to do this, searching for a solution that would be easy for the campaigns and maps developers to use. The basic idea is to improve WML so developers can store and read variables for maps and campaigns, using them to create an different scenario each time the map/campaign is played.
    See SummerOfCodeProposal GuilhermeSouza for more information.

    Jody Northup - Implement gameworld data persistence

    This is the Persistent Gameworld idea.
    If accepted, I would communicate extensively with the community to determine a solution that provides gameworld persistence with the greatest ease of access and implementation for the established community of world and campaign builders for Wesnoth.
    Currently, I expect that this will involve extending WML, and creation of some system of communication about the extended WML for multiplayer games.
    See SummerOfCodeProposal JodyNorthup for more information.

    lfernando - Implement persistent storage of gameworld data between semi-related scenarios

    The general idea of this project is introducing variables that are independent from savefiles and campaign lines. They will be accessible from any context and not lose validity once a particular game/campaign has ended. We'll call them global variables.

    Global variables will be stored and retrieved using two special tags, [get_global_variable] and [set_global_variable]. They should be used on scenario WML, and their usage will allow that variables, as defined by the [set_variable] family of tags, (from now onwards we will call those ones "local" variables) should be saved to/loaded from an external source.

    I'm planning to store global variables on simple wml files with syntax borrowed from uncompressed saves. Each add-on will have its own set of variables, and its own file for global variables.
    See SummerOfCodeProposal lfernando for more information.

  7. SoC Ideas SpriteSheets

    Allow wesnoth to support spritesheets

    Page for the idea: SoC_Ideas_SpriteSheets

    Wesnoth units are made of thousands of small png files, each containing the image of the unit in a given stance. This has the advantage of (arguably) being easier for artists. However this has a huge cost in term of memory usage. The point of this SoC would be to allow wesnoth to support spritesheets : huge images containing a mosaic of all images and related tools/code support

    There are 2 submitted student proposals for this idea

    Shuger - sprite sheet support

    I want add sprite sheet support to Wesnoth. The general idea is to assemble multiple small images into few bigger
    See GSoC Sprite Sheets Shuger for more information.

    Gabba - Sprite Sheets

    I developed an approach to introduce sprite sheets to Wesnoth with minimal hassle for artists, and as little modifications to game code as possible. I support generation of various sizes of optimized sprite sheets, so we can adapt to various platform and memory/disk requirements. My system will rely on a single external tool based on an existing open-source solution.

    Updated 04/09/2010
    See GSoC-SpriteSheets Gabba for more information.

  8. SoC Ideas WML Debugging

    WML Debugging Support

    Page for the idea: SoC_Ideas_WML_Debugging

    Improve the ways to debug Wesnoth's domain-specific language, WML.

    There are 2 submitted student proposals for this idea

    fakedrake - WML Debugging

    I am most interested in patching the code to output accurate line numbers along with the errors and improving the error messages themselves. After that i most probably will have time to make a schema system.
    See GSoC-WMLDebugingSupport fakedrake for more information.

    Awilkins - Improve Upon WML Debugging

    I plan on fixing the incorrect error messages returned by the misuse of macros in WML files. The fixed error messages will display the accurate file and line number of where the macro was called incorrectly.
    See SummerOfCodeProposal Awilkins for more information.

  9. SoC Ideas Your Own Ideas

    Make your own ideas

    Page for the idea: SoC_Ideas_Your_Own_Ideas

    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

    JustasJ - a history-based Campaign on Medieval history of Lithuania

    irc: JustasJ
    forum: JustasJ

    I am Justas and as a person who wanted to create games for a very long time I would like to add my own campaign to the game. To make it a unique addition to the game, I have decided to make it about the medieval history of Lithuania. My campaign would cover a huge period of time - from the first mention of Lithuania in the European texts, 1009 AD to the death of the great duke Vytautas in 1430 AD.

    Last Updated: 4/3/2010
    See A SoC JustasJ for more information.

    Gabba - Interface Streamlining and Planning System

    I intend to rework the current Wesnoth interface by introducing a planning system that will allow you to give orders and modify them before executing them as a "real action".

    Side benefits include:

    • allowing you and your allies to visually plan moves on the map together
    • replacing "delay shroud updates" by a more elegant system
    • finally making wml "sighted" events work properly

    Updated 04/12/2010


    See GSoC-WesnothWhiteboard Gabba for more information.

Make your own ideas

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.

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

Student pages