GSoC 2013: Difference between revisions

From PSwiki
Jump to navigation Jump to search
Line 78: Line 78:
'''Skills needed:''' For this project C++ knowledge is needed.
'''Skills needed:''' For this project C++ knowledge is needed.


'''Details:'''  Artificial intelligence for [[Tribes expansion 2013]]
'''Details:'''  Artificial intelligence for [[Autogenerated Dungeons]]
|}
|}


== Dynamic Economy ==
== Dynamic Economy ==

Revision as of 00:54, 24 February 2013

Welcome To Google Summer of Code and Atomic Blue!

What is this program?

This is the central page for Google GSoC. Join the fun!

Atomic Blue will present itself as a mentoring organization for Google GSoC 2013. The applications for mentoring organizations start on March 18th 2013. So stay tuned for more news from us after this date. A selection will follow.

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.


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 machine. 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.


Mechanisms

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.

Difficulty: Medium

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

Details: Refer to this page for more details: Mechanisms

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 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.

Difficulty: Medium

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

Details: Please read the details in this page Scriptable Entities

Tribes

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.

Difficulty: Composed of various tasks from medium to high

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

Details: Artificial intelligence for Tribes expansion 2013

Autogenerated dungeons

Summary: Have an algorithm for creating a dungeon from the base building blocks.

Difficulty: Composed of various tasks from medium to high

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

Details: Artificial intelligence for Autogenerated Dungeons

Dynamic Economy

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.

Difficulty: Medium

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

Details: Please read the details in this page Dynamic Economy

Statistics

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.

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.

Difficulty: Easy to Medium

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

Details: Analysis package of data mining data (Medium) and better server reporting


GUI

  • Improved UI 2013 Includes improvements to the Help system, fixes to the interface, conversion to plugin. Enhancement to the Container System, and Crafting of books.

Hardcoding removal

  • Hardcoding removal: Involves moving some of the hardcoded skills/stats/rules/mechanics from the code to the database, making the engine more flexible and more maintainable. (easy to hard)

Other smaller / fragmented tasks

This section contains ideas which have not yet been developed into main ideas. We are not sure if one of these can really cover the 3 months period of GSoC and so those are pending review, discussion and expansion to be moved in the previous section.

Database

  • Database reconstruction: Optimise database with innodb triggers, rework of tables, new index, scalability and subdivision of data between different servers...(hard)

Networking

  • TCP layer: add a TCP layer so that clients have the option of connecting with TCP instead. TCP can be preferable for people connecting via wireless or high-bandwidth connections, which is increasingly the case. The relatively high latency to PS servers also means the latency benefits of UDP are not as useful. (hard)
  • IPV4 TO IPV6: changing the code so it doesn't rely specifically on IPV4 or IPV6, allow to define various listen interfaces either IPV4 and IPV6. Remove network logic which can be left to system libraries. Conversion to plugin.(easy to medium depending on the parts which are picked up)

Effect Library

  • PSEFFECT: conversion to plugin and performance optimizations. Maybe adding support for 2d objects.(medium)

Headless Client

  • Integration testing: Modify the client to have a headless option to allow for easy integration testing and for combat simulation. This can make it much easier to test balance changes. (medium)

Server reliability

  • Unit Testing: Implement a basic unit testing framework for common server commands and actions. (Medium)

Mail System

  • A way for player and gm to send in game mails to other players also with items "attached"

Click to move

  • From the work in crystal space of 2 years ago during GSOC last year we merged a functionality called NAVMESH in our npcclient. It would be nice if it was possible to show these generated navmesh in clients as a debug features (probably enable-able only from config files or compile time) and also make use of them to allow point and click reliable movement, as right now the algorithm is not able to know if it will hit a wall or a deep hole and will go toward those dangers.

Return to login

  • Add support to return to the login window instead of closing the client entirely.

Make the world less static

  • Add support to define or recognise in some way special area: for example water. Apply effects to the camera when inside the area and activate things like swimming and diving (with control of breath if applicable).
  • Add support for flying (not globally but only when allowed from the server) and prevent players to get out of bounds through this.
  • Add support for boats and flying mounts (this has the prerequisite of the previous entries)
  • Add support for things like night vision or other effects depending on current context and activated from the server.

Monsters' sounds perception

  • Implementation of monsters' sound perception. For example a thief that moves close to a monster without making too much noise will be able to attack it first, while a player with no sneaking skills will be heard by the monster and he will be attacked.