SummerOfCodeIdeas: Difference between revisions

From The Battle for Wesnoth Wiki
Boucman (talk | contribs)
No edit summary
No edit summary
 
(416 intermediate revisions by 79 users not shown)
Line 1: Line 1:
== Ideas for Google Summer of Code projects ==
{{SoC2014}}
== I want to be one of your Google Summer of Code students, what should I do? ==


This is a compilation of ideas from ML. Needs to be refined (more detailed description, deliverables, workload estimation?):
Welcome! Here is a quick list of things to do:


=== Writing an AI based on the formula AI ===
* '''MOST IMPORTANT:''' Submit your application to [https://www.google-melange.com Google] before '''March 21st'''.
* '''MOST IMPORTANT:''' Join our IRC channel, '''#wesnoth-dev''' on irc.freenode.net ([http://webchat.freenode.net/ webchat]), and talk about your project and your application. We will not give formal interviews, but we will clearly favor people we have learned to know during the selection process. IRC is the main, mandatory communication medium for the Battle for Wesnoth Project; for the same reason, it's also a good idea to regularly read the [http://www.wesnoth.org/irclogs/2014/ IRC logs].
* '''VERY IMPORTANT:''' Create a wiki page about your idea, using our '''[[SoC2014 Template of Student page|student proposal page template]]''' as base.
** To create a new page, enter the desired URL for the page in your browser's address bar, e.g. <code><nowiki>http://wiki.wesnoth.org/New_Page</nowiki></code>. (See also http://www.mediawiki.org/wiki/Help:Starting_a_new_page)
** Go into editing mode on the template page http://wiki.wesnoth.org/index.php?title=SoC2014_Template_of_Student_page&action=edit and copy the contents to your new page. '''DO NOT ACTUALLY EDIT ANYTHING IN THE TEMPLATE!'''
** Fill the questionnaire.
** Describe and explain your idea in as much detail as possible. Look at other student pages, and provide a timeline, milestones, and studies you've done.
* If you haven't done so yet, create an account on [https://github.com/ GitHub]. ('''Required''' for pull requests and for granting you commit access to the main repository later on.)
* If you haven't done so yet, create an account on [https://gna.org/ Gna.org], where our [http://bugs.wesnoth.org/ bugs tracker] and [https://mail.gna.org/listinfo/wesnoth-dev developers mailing list] are hosted. ('''Recommended''' for submitting bug reports with a single identity, '''required''' for managing bug reports if you are granted commit access.)
* If you haven't done so yet, create an account in the [http://forums.wesnoth.org/ Wesnoth.org forums], and tell a leader of the [http://forums.wesnoth.org/memberlist.php?mode=group&g=6644 Summer of Code group] or a forum administrator on the IRC channel to give it SoC group membership.
** Forum administrators: Ivanovic, Noy, shadowm, Soliton, Turuk
** SoC group leaders: AI, Crab, mordante/SkeletonCrew, thunderstruck, Trademark
* Though not mandatory, it is '''highly advisable''' to take a look at the [[EasyCoding]] and [[NotSoEasyCoding]] pages and implement one of the proposed ideas ideas (or any idea of similar scope) so we can have an idea of how you work. Be sure to use your GitHub account when submitting pull requests so we know who it is coming from. You can also implement features from our [http://bugs.wesnoth.org/ bugs tracker].
** This should give you a good idea what the Wesnoth source code is like and help you get used to our coding style as well.
** When you implement something, also list it on your own page with a reference to the pull request.
** You can also start working on your project and submit patches/prototypes related to it.
* For working on Wesnoth you '''must''' be able to compile Git master. See our [[WesnothRepository|repository information page]] and the guide on [https://github.com/wesnoth/wesnoth/blob/master/INSTALL.md Compiling Wesnoth].


Wesnoth has always had a simple C++ based AI. David (our lead developer) has been working on a simple language to write AI in wesnoth ''link to formula AI page here''
== Information about our Project ==
The information we provided Google with about our project can be looked up at the site [[SoC Information for Google]].


The wesnoth AI is used as an oponent in most campaigns, and as such is an important piece of code for the wesnoth project. Unfortunately it is also one of the most neglected piece of code and a place where a lot of research and work could be done
Also see the [[DeveloperResources|Developer Resources]] listing (linked from the [[Project]] page).


==== General description ====
== People to bug on IRC ==
We have prepared a list of people with their areas of competence. This should give you an idea of which areas those people can help you with. Of course you should always ask in the IRC channel first, but these are the most likely people to be able to help you.


The aim of this project is to develop a new AI that would replace the original C++ AI. The main criterias we would want for this new AI are
[[SoC People to bug on IRC]]


* ''Plugability :'' It should be trivial for any content maker to change the behavior of the AI in specific case. The exact cases are still to be defined but should typically include
== List of Ideas for the Project (Suggestions from Wesnoth developers) ==
** hardwiring the first few turns of the AI
** changing the recruitment pattern
** completely controlling a given unit (sceneario unit)
** taking control then giving back control of a given unit
* ''tunability :'' It should be easy for a scenario author to specify the general behaviour of the ennemy on a given scenario (agressivity, intrepidity...)
* ''specific behaviours :'' there are some typical behaviours that are not smart to win the scenario but are needed, such as guarding a given unit, a given position, wandering aimlessly, attacking randomly, always fleeing. The AI should implement such behaviours, and allow easy addition of new behaviours


{| border=1
| '''Note:''' This list of ideas is automatically generated from the ''Description'' section of pages in the ''Summer of Code 2014 Idea'' category. '''DO NOT TRY TO EDIT THIS LIST BY HAND - IT WON'T WORK.''' Instead, create a new page using the '''[[SoC_Ideas2014_Template|GSoC idea page template]]'''.
|-
| '''Note:''' To add a student page, create a new page copying the contents of the '''[[SoC2014 Template of Student page|student proposal page template]]'''.
|}


==== Required knoledge and talent ====
{{#dpl:
|noresultsheader=''No ideas yet. Why not create one?''<br/>
|category=Summer of Code 2014 Idea
|include=#Description
|mode=userformat
|format=,,<br/>,
|nottitlematch=SoC_Ideas2014_Template
}}


* ''A minimal knowledge of C++ is required, a good knowledge of C++ is desired :'' The formula AI framework is a work in progress and chances are high that some changes in the wesnoth code base will be needed. The wesnoth developper community is used to handle people that are familiar with coding but not C++, however the Forumla AI framework uses advanced C++ features and a good knowledge of the language would avoid a major hurdle when plugging in new entries or functionalities for the AI
==Student proposals not submitted to Google==
* ''Good social interaction with a large player community :'' A preliminary phase to coding any AI is to know the strategies and game pattern used by human players. This requires huge interaction with the player community. Our Gameplay Developpers are open and can give some good starting points, but a big game experience and good interaction with the player community will greatly help in the study of the design
{{#dpl:
|resultsheader=''There are %PAGES% student proposals which were not submitted to google''<br/>
|oneresultheader=''There is 1 student proposal which was not submitted to google''<br/>
|suppresserrors=true
|noresultsheader=''All the proposals were submitted to google''<br/>
|category=Summer of Code 2014 Student Page
|nottitlematch=SoC2014 Template of Student page
|include=#IRC, #SoC Application
|includenotmatch= ,/google/s
|mode=userformat
|format=,,[[%PAGE%|%TITLE%]]<br/>,
}}


==== Milestones and deliverables ====
==Student proposals submitted both to the wiki and Google==
(Marked by hand. If your proposal is not here, don't panic; check Google's site instead, and ping us if necessary.)


It is hard to give milestones at this point, but here are some ideas of what could be done
{{#dpl:
|resultsheader=''There are %PAGES% student proposals which were submitted both to the wiki and Google''<br/>
|oneresultheader=''There is 1 student proposal which was submitted both to the wiki and Google''<br/>
|suppresserrors=true
|noresultsheader=''All the proposals were submitted to Google''<br/>
|category=Summer of Code 2014 Student Page
|nottitlematch=SoC2014 Template of Student page
|include=#IRC, #SoC Application
|includematch= ,/Submitted to google/s
|mode=userformat
|format=,,[[%PAGE%|%TITLE%]]<br/>,
}}


* ''AI design description, and basic function library :'' This first deliverable aims to conclude the '''study and analysis''' part of the project : becoming familiar with the formula language, study of the Multiplayer strategies and of the need of scenario writers with regard to AI. We would like to have a description of the code structure of the AI, some basis of the play strategies it would use and how external scenario writers could configure it for the particular behaviour they need
==Results from Google acceptance==
* ''Main AI delivery :'' This milestone's aim is to deliver a working AI implementing the strategies described in the first phase. It would not have to systematically beat the standard C++ AI at this point, but should be able to play the game correctly (recruit, early deployment on villages, grouping units to attack, holding its ground, protecting weak/important units). Moreover most plug-in entries should be available and a test-case for these entries should be provided.
The list of proposals accepted by Google will be available on April 21st.
* ''Fine tunning and behaviour library :'' The third phase would validate the actual strategy of the AI. The AI should consistently beat the default C++ AI, and do fairly well against an average human player. At that stage a library of scenario behaviours should also be delivered. The AI does not need to be as efficiant with all scenario tweaking, but should act correctly with regard to the particular behaviour desired.
 
 
=== Extending the Multiplayer server ===
 
 
When the developement team met at FOSDEM, we had our multiplayer commuinty, though it is strong and healthy, had its growth restrained by the interface of the multiplayer lobby.
 
==== General Description ====
The general idea of this project would be
* To study the current lobby,
* To present some ideas of evolutions both in interface and functionalities of our multiplayer interface to allow it to scale to a much larger community
* To present some well constructed thought on our MP community and how that interface would develop it
* Of course to implement those changes :)
 
Some ideas that we had (but that are in no way mandatory)
* Having a simple way to register and authentificate nicknames, similar to what IRC offers. The point is not to have cryptographically safe logins, but to have something simple that gets the job done
* Having a simple room system? again inspired on IRC
* Having some way to find the type of games you are interested in.
** game type
** number of free slots/players
** any other criterias you might find interesting
 
 
Other ideas we are not convinced are good, but that are certainly worth studying (especially how the communities based around these concepts are different from ours)
* ranking players
* guilds
* official tournaments
* titles for players
* metaservers
 
The scalablity of the project, both in term of number of players, and in term of the possibility for players and developpers to extend the concept will be a valued criteria
 
Administration/moderation problems and techniques should also be studied
 
interaction with the Add-On server/forum might be an interseting field to expand to
 
==== Required knowledge and talent ===
 
* A fair amount of experience on C++ is required. Wesnoth uses some advanced C++ features and is heavily based on BOOST and STL. We can train you in some of the libraries used, but learning all of them would be a big hurdle
* Various experience with multiplayer games, in order to have a good idea of what multiplayer lobbies of other game look like, and (more importantly) a good idea of the social behaviours of multiple MP communities, how teams are formed in games and things like that
 
==== Milestones and deliverables ====
 
* A first milestone would be a presentation summarizing the different studies, and the proposed interface. preliminary unformal stages would probably be desirable, to make sure the proposed idea is already a consensus within devs
** Study of other MP game-matching interfaces and functionalities
** Study of other MP communities
** Study of other MP moderation practices
** Study of the Wesnoth MP community, including needs, various opinons from different developers and players
* A second milestone would be the main code delivery. Code should be functional for it will be delivered in the next Wesnoth developement release
 
=== Other ideas to be fleshed out ===
* Working on the GUI engine (needs to be defined more precisely)
* Extend the multiplayer server to provide accounts and room
* Rewrite of the campaign (add-on) server
* The editor can use quite a revamp
* A good scenario editor. We have campgen but it hasn't been updated for a while.

Latest revision as of 20:09, 15 May 2020

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


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

Welcome! Here is a quick list of things to do:

  • MOST IMPORTANT: Submit your application to Google before March 21st.
  • MOST IMPORTANT: Join our IRC channel, #wesnoth-dev on irc.freenode.net (webchat), and talk about your project and your application. We will not give formal interviews, but we will clearly favor people we have learned to know during the selection process. IRC is the main, mandatory communication medium for the Battle for Wesnoth Project; for the same reason, it's also a good idea to regularly read the IRC logs.
  • VERY IMPORTANT: Create a wiki page about your idea, using our student proposal page template as base.
  • If you haven't done so yet, create an account on GitHub. (Required for pull requests and for granting you commit access to the main repository later on.)
  • If you haven't done so yet, create an account on Gna.org, where our bugs tracker and developers mailing list are hosted. (Recommended for submitting bug reports with a single identity, required for managing bug reports if you are granted commit access.)
  • If you haven't done so yet, create an account in the Wesnoth.org forums, and tell a leader of the Summer of Code group or a forum administrator on the IRC channel to give it SoC group membership.
    • Forum administrators: Ivanovic, Noy, shadowm, Soliton, Turuk
    • SoC group leaders: AI, Crab, mordante/SkeletonCrew, thunderstruck, Trademark
  • Though not mandatory, it is highly advisable to take a look at the EasyCoding and NotSoEasyCoding pages and implement one of the proposed ideas ideas (or any idea of similar scope) so we can have an idea of how you work. Be sure to use your GitHub account when submitting pull requests so we know who it is coming from. You can also implement features from our bugs tracker.
    • This should give you a good idea what the Wesnoth source code is like and help you get used to our coding style as well.
    • When you implement something, also list it on your own page with a reference to the pull request.
    • You can also start working on your project and submit patches/prototypes related to it.
  • For working on Wesnoth you must be able to compile Git master. See our repository information page and the guide on Compiling Wesnoth.

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 Developer Resources listing (linked from the Project page).

People to bug on IRC

We have prepared a list of people with their areas of competence. This should give you an idea of which areas those people can help you with. Of course you should always ask in the IRC channel first, but these are the most likely people to be able to help you.

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 the Summer of Code 2014 Idea category. DO NOT TRY TO EDIT THIS LIST BY HAND - IT WON'T WORK. Instead, create a new page using the GSoC idea page template.
Note: To add a student page, create a new page copying the contents of the student proposal page template.


AI: Improve AI by implementing global attack/retreat decision

Page for the idea: SoC_Ideas_AI_Global_strategy

The Wesnoth AI works by making local decisions about moves and attacks. Teach it to determine if it's worth to fight offensively or defensively in a given situation.


There are no submitted student proposals for this idea

Improve the automated collection and display of multiplayer game data

Page for the idea: SoC_Ideas_Multiplayer_Data_Analysis

Multiplayer games are currently archived. This includes lots of interesting and potentially useful data, including recruits, deaths, number of turns and other things. The only way to access this information currently is parsing the WML one save file at a time. Additionally, which side(s) won the game is only recorded in some cases. We would like to record which side(s) won or lost (for as many games as possible) and then display useful information about these games for balancing and feedback purposes.

There are no submitted student proposals for this idea

SDL2

Page for the idea: SoC_Ideas_SDL2

The Wesnoth project uses the SDL library. Last year, a new major version (2.0) of SDL was released. This version of the library has better support for mobile devices like the Android and the iPhone. This project involves helping porting Wesnoth from SDL 1.2 to 2.0.

There are no submitted student proposals for this idea

SpriteSheet

Page for the idea: SoC_Ideas_SpriteSheets2014

Wesnoth uses thousands of images, each of them stored in separate files. It would be more efficient to store multiple images in a single file. In order to make that possible, the Wesnoth engine needs to be adapted to allow this change.

There are no submitted student proposals for this idea

UMCD

Page of the idea: SoC_Ideas_UMCD_2014 Improving and completing the new add-ons server, UMCD (User-made Content Daemon).

There are no submitted student proposals for this idea

Game Engine: Unify SP and MP

Page for the idea: SoC_Ideas_Unify_SP_and_MP_2014

Wesnoth has lots of user made content, but some of it works only for either singleplayer or multiplayer. To solve this, some of the engine's singleplayer and multiplayer code paths need to be unified and extended.

There are no submitted student proposals for this idea

Other: Your own ideas

Page for the idea: SoC_Ideas_Your_Own_Ideas_2014

Suggested skills: C++ (depends on the project).

There are no student proposals for this idea

Student proposals not submitted to Google

There are 25 student proposals which were not submitted to google
adityapande Aditya Pande Global AI
dragonofair0 Dragonofair0/GSoC2014 project idea
Dugi Dugi's Campaign Wizard
goblinThing GoblinThing Wizard
sachith500 GSoC sachith500 Proposal
TODO: Put only your IRC nickname in there. In case of alternate nicks, separate with commas.

Example contents for this section (without the quotes): "user" "user1, user2" GSoCMindblank
ALourenco GSoCSpriteSheetsALourenco
Vahen Improve AI
demiurgos Improve Random Maps
jchb Jchb AI Global Strat
juanmi91 Juan Miguel Ruiz Ladron/GSoC2014 Proposal
neonosos Neonosos
spoffy SoC 2014 Spoffy Finishing and Enhancing the UMCD
arveanor SoC2014 arveanor ai
Daniwa SOC2014 Daniwa Ai
Kevin_Xi SoC2014 kevin AI
lipkab SoC2014 lipkab SDL2
RiftWalker SoC2014 RiftWalker Unify SP MP
zerophase SoC2014 SDL2 DrawingTransition
stevedes SoC2014 SDL2 stevedes
vorobeez SoC2014 vorobeez AI
Youngoli SoC2014 youngoli UnifySPandMP
ZubinKapadia SoC2014 Zubin AI
Aishiko, Aishiko_laptop SpriteSheetApplicationSAB
ykanarev YKanarev AI impl

Student proposals submitted both to the wiki and Google

(Marked by hand. If your proposal is not here, don't panic; check Google's site instead, and ping us if necessary.)

All the proposals were submitted to Google
Aditya Pande Global AI
Dragonofair0/GSoC2014 project idea
Dugi's Campaign Wizard
GoblinThing Wizard
GSoC sachith500 Proposal
GSoCMindblank
GSoCSpriteSheetsALourenco
Improve AI
Improve Random Maps
Jchb AI Global Strat
Juan Miguel Ruiz Ladron/GSoC2014 Proposal
Neonosos
SoC 2014 Spoffy Finishing and Enhancing the UMCD
SoC2014 arveanor ai
SOC2014 Daniwa Ai
SoC2014 kevin AI
SoC2014 lipkab SDL2
SoC2014 RiftWalker Unify SP MP
SoC2014 SDL2 DrawingTransition
SoC2014 SDL2 stevedes
SoC2014 vorobeez AI
SoC2014 youngoli UnifySPandMP
SoC2014 Zubin AI
SpriteSheetApplicationSAB
YKanarev AI impl

Results from Google acceptance

The list of proposals accepted by Google will be available on April 21st.

This page was last edited on 15 May 2020, at 20:09.
Cookies help us deliver our services. By using our services, you agree to our use of cookies.