Difference between revisions of "GSoC 2015"

From PSwiki
Jump to navigation Jump to search
 
(19 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Welcome To Google Summer of Code and Atomic Blue! ==
== Welcome To Google Summer of Code and Atomic Blue! ==


http://www.planeshift.it/graphics/banner-gsoc2013.png     [[File:logoColor_square_small.png|100px]]
http://www.planeshift.it/public/graphics/banner-gsoc2015.jpg     [[File:logoColor_square_small.png|100px]]
 


== What is this program? ==
== What is this program? ==
Line 16: Line 15:
== Timeline ==
== Timeline ==
At high level this is the overall timeline of GSoC:
At high level this is the overall timeline of GSoC:
* '''March''': Organizations apply for the program and gets selected by Google. Selected organizations will be announced on '''8th April'''.
* '''February''': Organizations apply for the program and gets selected by Google. Selected organizations will be announced on '''2nd March'''.
* '''April-May''': Students apply for the program on the selected organizations. Deadline '''3rd May'''.
* '''March''': Students familiarize with the organizations and apply for the program on the selected organizations.
* '''June-September''': Coding period, this is where the fun is!
* '''April''': Review of student proposals and student selection. Selected students announced on ''27st April''
* '''October''': Wrap up of the program
* '''May-August''': Coding period, this is where the fun is!
* '''September''': Wrap up of the program


If you want more details on the overall timeline you can check the [http://www.google-melange.com/gsoc/events/google/gsoc2014 google timeline page].
If you want more details on the overall timeline you can check the [https://www.google-melange.com/gsoc/events/google/gsoc2015 google timeline page].


In the meantime you can start to learn our project, read our ideas, discuss and meet with us to present yourself! If you want to be selected, getting involved early is a good start.
In the meantime you can start to learn our project, read our ideas, discuss and meet with us to present yourself! If you want to be selected, getting involved early is a good start.
Line 32: Line 32:
# Review the ideas list below to get a feeling of what we want to implement
# Review the ideas list below to get a feeling of what we want to implement
# Review the list of skills needed for each idea and see which one fits you best
# Review the list of skills needed for each idea and see which one fits you best
# [http://www.planeshift.it/sources.html Download our sources] and start to familiarize with the code. [https://planeshift.svn.sf.net/svnroot/planeshift/trunk/docs/compiling.html Build our server and client] and have it running on your machine.
# [http://www.planeshift.it/Source%20code Download our sources] and start to familiarize with the code. [https://svn.code.sf.net/p/planeshift/code/trunk/docs/compiling.html Build our server and client] and have it running on your computer.
# Contact us if you need more information:
# Contact us if you need more information:
#* [http://webchat.freenode.net/?channels=planeshift-prospects CHAT]
#* [http://webchat.freenode.net/?channels=planeshift-prospects CHAT]
Line 50: Line 50:
* '''Detailed description page'''. Be sure to check also this page for more information on the task.
* '''Detailed description page'''. Be sure to check also this page for more information on the task.


== Reload of database configurations at runtime ==
== Dynamic loading of configurations at runtime ==
 
We want to list all items we want to be able to reload at runtime without stopping the server
 
== UI for editing items ==
 
We want a UI for editing items/NPCs in game
 
== House building ==
 
Ability to assemble a house from pieces
 
== Mechanisms ==


{|  border="0"
{|  border="0"
|-
|-
| [[Image:gsoc4.png|left]]
| [[Image:gsoc4.png|left]]
|'''Summary:''' Today in PS you don't have enough interaction with the world. For example you cannot open/close a door physically, or pull a lever. The only way we have doors are the ones where you load into another zone, but that's very limiting. Specifically for doors we need to have the possibility to click on a door object and have it actually swing open in 3d, rotating the model on the pivot. This will allow for example to create mechanisms or other fun stuff where players can interact with objects. Can be doors, but also levers, buttons, shafts, secret passages, puzzles. The engine should generically support the "use" command on an object, and it can rotate or translate.  
|'''Summary:''' One of the most powerful elements of a MMO server is to allow custom and scriptable rules. This includes behaviours for NPCs, combat rules, experience, stats and skills progression, etc. All are maintained in the database and then loaded at runtime in memory. Having hundreds of users connected 24/7 and a persistent world, requires the server to be always available. At the same time we want to allow administrators to add or change the scripts to improve and enhance the server while the users are connected. For this we already implemented the dynamic reloading of some of the most critical aspects, for example the description of the in game items, and the stats of items. This project consists in allowing the majority of the scripts and other configuration information to be reloaded at runtime without the need to restart the server. The main items include: special locations in the world, character creation data, quests information, etc...


'''Difficulty:''' Medium
'''Difficulty:''' Medium


'''Skills needed:''' For this project C++ knowledge is needed with some knowledge of mysql.  
'''Skills needed:''' For this project C++ knowledge is needed together with knowledge of mysql.


'''Mentor:''' Weltall
'''Mentor:''' Talad


'''[[Mechanisms | Read here for details]]'''
'''[[Dynamic_loading | >>> Read here for details <<<]]'''


|}
|}
Line 82: Line 70:
{|  border="0"
{|  border="0"
|-
|-
|'''Summary:''' This project consists in the creation of new system to allow a player to attach a scripts to a computer controlled entity (NPC). The NPC can be used as a guard for a building or an henchmen, or as the keeper of a player owned shop. Our engine already has a powerful scripting engine, which can be used to scripts dialogues, quests, and general interaction with the NPCs. As the scripting system is completely server side, we actually allow any kind of action, including the creation of new items, generation of coins, training skills, etc... The first part of this new system will be to to sandbox the current scripting engine by isolating only the commands which can be run by a player controlled entity. The second part is to connect this system to guildhouses, chests or player inventories to allow real exchange of items through the NPC.
|'''Summary:''' This project consists in the creation of new system to allow a player to attach a scripts to a computer controlled entity (NPC). The NPC can be used as a guard for a building, as a henchman, or as the keeper of a player owned shop. Our engine already has a powerful scripting engine, which can be used to script dialogues, quests, and general interaction with the NPCs. As the scripting system is completely server side, we actually allow any kind of action, including the creation of new items, the generation of coins, the training of skills, etc... The first part of this new system will be to sandbox the current scripting engine by isolating only the commands which can be run by a player controlled entity. The second part is to connect this system to guildhouses, chests or player inventories to allow real exchange of items through the NPC.


'''Difficulty:''' Medium
'''Difficulty:''' Medium
Line 88: Line 76:
'''Skills needed:''' For this project C++ knowledge is needed with some knowledge of mysql.  
'''Skills needed:''' For this project C++ knowledge is needed with some knowledge of mysql.  


'''Mentor:''' Magodra and Talad
'''Mentor:''' Magodra


'''[[Scriptable Entities| Read here for details]]'''
'''[[Scriptable Entities| >>> Read here for details <<<]]'''
| [[Image:gsoc6.png|left]]
| [[Image:gsoc6.png|left]]
|}
|}
Line 98: Line 86:
|-
|-
| [[Image:gsoc2.png|left]]
| [[Image:gsoc2.png|left]]
| '''Summary:''' The main goal of this project is to provide enhance the current Artificial Intelligence of the entities controlled by the server, allowing the server to simulate their movements, reproduction, harvesting, building villages and more. Even if certain areas are ignored by players, the npc population can still grow and evolve there. The base concept is that NPCs should have a concept of a “tribe” they belong to and contribute to the growth of this group. NPCs should be able to find resources, and then (if an intelligent race) build huts, houses and villages, mate, have children, build defenses, grow in wealth and number, attack other tribes, etc. A central Tribe object will define the next needs for the tribe, and dispatch the members to complete certain tasks which are useful to the evolution of the tribe.
| '''Summary:''' The main goal of this project is to enhance the current Artificial Intelligence of the entities controlled by the server, allowing the server to simulate their movements, reproduction, harvesting, building villages and more. Even if certain areas are ignored by players, the NPC population can still grow and evolve there. The base concept is that NPCs should have a concept of a “tribe” they belong to and contribute to the growth of this group. NPCs should be able to find resources, and then (if an intelligent race) build huts, houses and villages, mate, have children, build defenses, grow in wealth and number, attack other tribes, etc. A central Tribe object will define the next needs for the tribe, and dispatch the members to complete certain tasks which are useful to the evolution of the tribe.


'''Difficulty:''' Composed of various tasks from medium to high
'''Difficulty:''' Composed of various tasks from medium to high
Line 106: Line 94:
'''Mentor:''' Magodra
'''Mentor:''' Magodra


'''[[Tribes expansion 2013| Read here for details]]'''
'''[[Tribes expansion 2013| >>> Read here for details <<<]]'''
|}
|}


Line 112: Line 100:
{|  border="0"
{|  border="0"
|-
|-
| '''Summary:''' The dungeon generator aims to generate random dungeons using the idea of a "Superblock" which is a 9x9x9 units box with a grid of connection points. This superblock will be used to generate the actual blocks part of the dungeon. With predefined connection points, a set of standard blocks can be used to create the final area by placing one block next to the other and generate a coherent set of tunnels, rooms, and passages. Additional props can be added to the generated area, like for example special locations, loot, chests, doors, etc... This project aims at creating the algorythms and the actual database tables to store the autogenerated areas.
| '''Summary:''' The dungeon generator aims to generate random dungeons using the idea of a "Superblock" which is a 9x9x9 unit box with a grid of connection points. This superblock will be used to generate the actual blocks part of the dungeon. With predefined connection points, a set of standard blocks can be used to create the final area by placing one block next to the other and generate a coherent set of tunnels, rooms, and passages. Additional props can be added to the generated area, like, for example, special locations, loot, chests, doors, etc... This project aims at creating the algorithms and the actual database tables to store the autogenerated areas.


'''Difficulty:''' Composed of various tasks from medium to high
'''Difficulty:''' Composed of various tasks from medium to high
Line 118: Line 106:
'''Skills needed:''' For this project C++ knowledge is needed.
'''Skills needed:''' For this project C++ knowledge is needed.


'''Mentor:''' Talad
'''Mentor:''' Jilare


'''[[Autogenerated Dungeons| Read here for details]]'''
'''[[Autogenerated Dungeons| >>> Read here for details <<<]]'''
| [[Image:gsoc7.png|left]]
| [[Image:gsoc7.png|left]]
|}
|}
Line 128: Line 116:
|-
|-
| [[Image:GsocSwim.png|right]]
| [[Image:GsocSwim.png|right]]
|'''Summary:''' The game engine today knows about moving entities in a 3d environment where the main interaction is through collision detection, which allows for example to players to walk firmly on the ground, or buildings to block the way. This project is about defining special volumetric areas, which are not occupied by any 3d object part of the main area geometry. For example we may decide a certain area is made of water, and specific rules apply while an entity is inside the bounding box of that area. The entity may lose his weight and float, a player may play the swim animation, certain animals may die, others live. Other types can be areas made of cold, lava, magic. The new system should allow to define those areas with associated animations and scripts.
|'''Summary:''' The game engine today knows about moving entities in a 3d environment where the main interaction is through collision detection, which allows, for example, players to walk firmly on the ground, or buildings to block the way. This project is about defining special volumetric areas, which are not occupied by any 3d object part of the main area geometry. For example we may decide a certain area is made of water, and specific rules apply while an entity is inside the bounding box of that area. The entity may lose his weight and float, a player may play the swim animation, certain animals may die, others live. Other types can be areas made of cold, lava, magic. The new system should allow to define those areas with associated animations and scripts.


'''Difficulty:''' Medium
'''Difficulty:''' Medium
Line 136: Line 124:
'''Mentor:''' Lucubro
'''Mentor:''' Lucubro


'''[[Special volumetric areas| Read here for details]]'''
'''[[Special volumetric areas| >>> Read here for details <<<]]'''
|}
|}


== UI for editing entities==
{|  border="0"
|-
| '''Summary:''' One of the most critical aspects of maintaining a virtual world and keeping it alive is to continuously provide new and updated content. The new content comes from game masters and other editors, which at the moment are using a web interface (web console) to edit most of the data. The issue is that web console doesn't give you the 3d positioning of items and the feeling of how things will look when loaded in game. This project will create new contextual UI to view and edit the most important parameters of items, NPCs, locations, natural resources, etc... The UI should be designed in a way that can be reused across all items we want to edit and should support all basic types of information.
'''Difficulty:''' Medium
'''Skills needed:''' For this project C++ knowledge is needed with some knowledge of mysql. UI design is also important.
'''Mentor:''' Eredin
'''[[UI for editing entities| >>> Read here for details <<<]]'''
| [[Image:Gsoc5.png|left]]
|}
== House building ==
{|  border="0"
|-
| [[Image:housing.png|right]]
|'''Summary:''' The best way to have a dynamic world is to allow players to create new content, which will change the landscapes and the areas constantly. It will also make the virtual world more immersive and engaging, as players will have to gather resources, plan the layout of the house, then build it. This project is composed of many parts: planning which pieces will be available, planning how those pieces can be combined and allow the engine to list the rules for fitting (possible and not possible placements), allowing admins to define areas where new buildings can be placed, defining a strategy for collapsing vertexes of the 3d objects when assembled to reduce rendering times, and allowing definition of costs and time of building.
'''Difficulty:''' Hard
'''Skills needed:''' For this project C++ knowledge is needed with some knowledge of mysql. UI design is also important.
'''Mentor:''' Eredin
'''[[House Building| >>> Read here for details <<<]]'''
|}


== Dynamic Economy ==
== Dynamic Economy ==
{|  border="0"
{|  border="0"
|-
|-
|'''Summary:''' Our virtual world has a vivid economy, with two main active actors: players and shopkeepers. Players can participate to the economy by finding items and selling those in shops or to other players. Shopkeepers (managed by the server) are producing items, repairing existing items. In addition there are other producers/consumers of income like loot, trainers, crafting and more. With so many variables there is a need of a central Economy Manager, which can monitor and tweak the prices based on offer and demand, and differenciate better the shopkeepers depending on their location, near resources, type of city, etc... The main goal of this project is to build such an Economy Manager based on the existing implementation of shops and loot.
|'''Summary:''' Our virtual world has a vivid economy, with two main active actors: players and shopkeepers. Players can participate in the economy by finding items and selling those in shops or to other players. Shopkeepers (managed by the server) are producing items and repairing existing items. In addition, there are other producers/consumers of income like loot, trainers, crafting and more. With so many variables there is a need of a central Economy Manager, which can monitor and tweak the prices based on supply and demand, and better differentiate the shopkeepers depending on their location, nearest resources, type of city, etc... The main goal of this project is to build such an Economy Manager based on the existing implementation of shops and loot.


'''Difficulty:''' Medium
'''Difficulty:''' Medium
Line 149: Line 169:
'''Skills needed:''' For this project C++ knowledge is needed with some knowledge of mysql.  
'''Skills needed:''' For this project C++ knowledge is needed with some knowledge of mysql.  


'''[[Dynamic Economy| Read here for details]]'''
'''[[Dynamic Economy| >>> Read here for details <<<]]'''


'''Mentor:''' Talad
'''Mentor:''' Weltall


| [[Image:gsoc1.png|right]]
| [[Image:gsoc1.png|right]]
Line 160: Line 180:
|-
|-
| [[Image:gsoc3.png|right]]
| [[Image:gsoc3.png|right]]
|'''Summary:''' A mmorpg database contains millions data rows, at the present time we have thousands of accounts, entities, items, skills and every second a dozens of transactions are executed growing the database.
|'''Summary:''' A mmorpg database contains millions data rows. At the present time we have thousands of accounts, entities, items, skills and every second dozens of transactions are executed, growing the database.


All this data is incredible valuable information to us, because we can extract from it player behaviours, economy trends, rate of item creation and destruction, money that gets consumed. We need to build an easy to use web application which reads and presents the results.
All this data is incredibly valuable information to us because we can extract from it player behaviours, economy trends, rate of item creation and destruction, and money that gets consumed. We need to build an easy to use web application which reads and presents the results.


'''Difficulty:''' Easy to Medium
'''Difficulty:''' Easy to Medium
Line 170: Line 190:
'''Mentor:''' Talad
'''Mentor:''' Talad


'''[[Analysis package| Read here for details]]'''
'''[[Analysis package| >>> Read here for details <<<]]'''
|}
|}


== GUI ==
{|  border="0"
|-
|'''Summary:''' The UI in PlaneShift is managed by a library we created called PAWS (PlaneShift Alternate Windowing System). The library is made of C++ classes to define a widget and an associated XML file which describes the layout and formatting. It keeps a separation between the presentation layer and the logic layer. The core library (/src/common/paws) defines basic items such as windows, labels, checkboxes, button, etc.., then the UI game engine (/src/client/gui) defines a set of windows to be used in the client, built by the core pieces. This GSoC project includes improvements to the quick bar, to the help system, enhancement to the Container System, better skin management, new spellcasting widget, overall improvements to windows resizing.
'''Difficulty:''' Easy to Medium
'''Skills needed:''' For this project C++ knowledge is needed wand some knowledge of XML.
'''Mentor:''' Weltall
'''[[Improved UI 2013| Read here for details]]'''
| http://www.atomicblue.org/ui.png
|}


== Other ideas ==
== Other ideas ==


You are welcome to propose ideas which are not in the list above, if you do so, we suggest you discuss it first with us, so we can guide you on the feasibility and complexity of implemeting it. You can also check our [[GSoC other ideas|additional ideas]] without documentation.
You are welcome to propose ideas which are not in the list above. If you do so, we suggest you discuss it first with us, so we can guide you on the feasibility and complexity of implementing it. You can also check our [[GSoC other ideas|additional ideas]] without documentation.

Latest revision as of 23:55, 15 February 2015

Welcome To Google Summer of Code and Atomic Blue!

banner-gsoc2015.jpg     LogoColor square small.png

What is this program?

Google Summer of Code is a global program created by Google that offers students stipends to write code for open source projects. Every year interesting and fun Open Source projects get selected by Google to be part of the program as "Mentoring Organizations". Mentoring organization will accept students and propose ideas for students to work on during the summer.

Atomic Blue will present itself as a mentoring organization for GSoC 2014!

Please note this program is not a part time activity, but requires time and dedication, in particular it will enroll students full time in a period of 3 months over the summer to produce Open Source code. The project is funded by Google and all students successfully delivering the results will get paid for the work completed over the summer.

You can learn more about the program at GSoc Google page

Timeline

At high level this is the overall timeline of GSoC:

  • February: Organizations apply for the program and gets selected by Google. Selected organizations will be announced on 2nd March.
  • March: Students familiarize with the organizations and apply for the program on the selected organizations.
  • April: Review of student proposals and student selection. Selected students announced on 27st April
  • May-August: Coding period, this is where the fun is!
  • September: Wrap up of the program

If you want more details on the overall timeline you can check the google timeline page.

In the meantime you can start to learn our project, read our ideas, discuss and meet with us to present yourself! If you want to be selected, getting involved early is a good start.

Where to begin?

First you need to know our project better, here are the next steps you should follow:

  1. Read our PlaneShift web site and learn more about the engine and game we are building
  2. Review the ideas list below to get a feeling of what we want to implement
  3. Review the list of skills needed for each idea and see which one fits you best
  4. Download our sources and start to familiarize with the code. Build our server and client and have it running on your computer.
  5. Contact us if you need more information:

Main Ideas

This section collects ideas we think are large enough to be developed over the GSoC coding period, which lasts 3-4 months. Please note that we are improving the ideas right now, so check back often for updates.

If you think you have a good idea to add to the list, please let us know! We are eager to add one project if it's worth it.

Each idea has:

  • Summary: A short description of the idea
  • Difficulty: A mix of complexity, breadth and skills required. Don't get scared by it, all tasks listed are doable!
  • Skills Needed: These are the prerequisites to start the project. Please do not assume you can learn those during the GSoC.
  • Mentor: a developer of Atomic Blue who will follow you during the summer, helping you
  • Detailed description page. Be sure to check also this page for more information on the task.

Dynamic loading of configurations at runtime

Gsoc4.png
Summary: One of the most powerful elements of a MMO server is to allow custom and scriptable rules. This includes behaviours for NPCs, combat rules, experience, stats and skills progression, etc. All are maintained in the database and then loaded at runtime in memory. Having hundreds of users connected 24/7 and a persistent world, requires the server to be always available. At the same time we want to allow administrators to add or change the scripts to improve and enhance the server while the users are connected. For this we already implemented the dynamic reloading of some of the most critical aspects, for example the description of the in game items, and the stats of items. This project consists in allowing the majority of the scripts and other configuration information to be reloaded at runtime without the need to restart the server. The main items include: special locations in the world, character creation data, quests information, etc...

Difficulty: Medium

Skills needed: For this project C++ knowledge is needed together with knowledge of mysql.

Mentor: Talad

>>> Read here for details <<<

Scriptable entities

Summary: This project consists in the creation of new system to allow a player to attach a scripts to a computer controlled entity (NPC). The NPC can be used as a guard for a building, as a henchman, or as the keeper of a player owned shop. Our engine already has a powerful scripting engine, which can be used to script dialogues, quests, and general interaction with the NPCs. As the scripting system is completely server side, we actually allow any kind of action, including the creation of new items, the generation of coins, the training of skills, etc... The first part of this new system will be to sandbox the current scripting engine by isolating only the commands which can be run by a player controlled entity. The second part is to connect this system to guildhouses, chests or player inventories to allow real exchange of items through the NPC.

Difficulty: Medium

Skills needed: For this project C++ knowledge is needed with some knowledge of mysql.

Mentor: Magodra

>>> Read here for details <<<

Gsoc6.png

Tribes

Gsoc2.png
Summary: The main goal of this project is to enhance the current Artificial Intelligence of the entities controlled by the server, allowing the server to simulate their movements, reproduction, harvesting, building villages and more. Even if certain areas are ignored by players, the NPC population can still grow and evolve there. The base concept is that NPCs should have a concept of a “tribe” they belong to and contribute to the growth of this group. NPCs should be able to find resources, and then (if an intelligent race) build huts, houses and villages, mate, have children, build defenses, grow in wealth and number, attack other tribes, etc. A central Tribe object will define the next needs for the tribe, and dispatch the members to complete certain tasks which are useful to the evolution of the tribe.

Difficulty: Composed of various tasks from medium to high

Skills needed: For this project C++ knowledge is needed.

Mentor: Magodra

>>> Read here for details <<<

Autogenerated dungeons

Summary: The dungeon generator aims to generate random dungeons using the idea of a "Superblock" which is a 9x9x9 unit box with a grid of connection points. This superblock will be used to generate the actual blocks part of the dungeon. With predefined connection points, a set of standard blocks can be used to create the final area by placing one block next to the other and generate a coherent set of tunnels, rooms, and passages. Additional props can be added to the generated area, like, for example, special locations, loot, chests, doors, etc... This project aims at creating the algorithms and the actual database tables to store the autogenerated areas.

Difficulty: Composed of various tasks from medium to high

Skills needed: For this project C++ knowledge is needed.

Mentor: Jilare

>>> Read here for details <<<

Gsoc7.png

Special volumetric areas

GsocSwim.png
Summary: The game engine today knows about moving entities in a 3d environment where the main interaction is through collision detection, which allows, for example, players to walk firmly on the ground, or buildings to block the way. This project is about defining special volumetric areas, which are not occupied by any 3d object part of the main area geometry. For example we may decide a certain area is made of water, and specific rules apply while an entity is inside the bounding box of that area. The entity may lose his weight and float, a player may play the swim animation, certain animals may die, others live. Other types can be areas made of cold, lava, magic. The new system should allow to define those areas with associated animations and scripts.

Difficulty: Medium

Skills needed: For this project C++ knowledge is needed with some knowledge of mysql. In addition some mathematical skills are needed to define movement vectors and bounding boxes.

Mentor: Lucubro

>>> Read here for details <<<


UI for editing entities

Summary: One of the most critical aspects of maintaining a virtual world and keeping it alive is to continuously provide new and updated content. The new content comes from game masters and other editors, which at the moment are using a web interface (web console) to edit most of the data. The issue is that web console doesn't give you the 3d positioning of items and the feeling of how things will look when loaded in game. This project will create new contextual UI to view and edit the most important parameters of items, NPCs, locations, natural resources, etc... The UI should be designed in a way that can be reused across all items we want to edit and should support all basic types of information.

Difficulty: Medium

Skills needed: For this project C++ knowledge is needed with some knowledge of mysql. UI design is also important.

Mentor: Eredin

>>> Read here for details <<<

Gsoc5.png

House building

Housing.png
Summary: The best way to have a dynamic world is to allow players to create new content, which will change the landscapes and the areas constantly. It will also make the virtual world more immersive and engaging, as players will have to gather resources, plan the layout of the house, then build it. This project is composed of many parts: planning which pieces will be available, planning how those pieces can be combined and allow the engine to list the rules for fitting (possible and not possible placements), allowing admins to define areas where new buildings can be placed, defining a strategy for collapsing vertexes of the 3d objects when assembled to reduce rendering times, and allowing definition of costs and time of building.

Difficulty: Hard

Skills needed: For this project C++ knowledge is needed with some knowledge of mysql. UI design is also important.

Mentor: Eredin

>>> Read here for details <<<

Dynamic Economy

Summary: Our virtual world has a vivid economy, with two main active actors: players and shopkeepers. Players can participate in the economy by finding items and selling those in shops or to other players. Shopkeepers (managed by the server) are producing items and repairing existing items. In addition, there are other producers/consumers of income like loot, trainers, crafting and more. With so many variables there is a need of a central Economy Manager, which can monitor and tweak the prices based on supply and demand, and better differentiate the shopkeepers depending on their location, nearest resources, type of city, etc... The main goal of this project is to build such an Economy Manager based on the existing implementation of shops and loot.

Difficulty: Medium

Skills needed: For this project C++ knowledge is needed with some knowledge of mysql.

>>> Read here for details <<<

Mentor: Weltall

Gsoc1.png

Statistics

Gsoc3.png
Summary: A mmorpg database contains millions data rows. At the present time we have thousands of accounts, entities, items, skills and every second dozens of transactions are executed, growing the database.

All this data is incredibly valuable information to us because we can extract from it player behaviours, economy trends, rate of item creation and destruction, and money that gets consumed. We need to build an easy to use web application which reads and presents the results.

Difficulty: Easy to Medium

Skills needed: For this project PHP knowledge is needed with some knowledge of mysql.

Mentor: Talad

>>> Read here for details <<<


Other ideas

You are welcome to propose ideas which are not in the list above. If you do so, we suggest you discuss it first with us, so we can guide you on the feasibility and complexity of implementing it. You can also check our additional ideas without documentation.