Skip to content

GSoC 2014

Tom Reynolds edited this page Feb 13, 2014 · 7 revisions

This page lists project proposals for Google Summer of Code 2014.

Table of Contents

Guidelines

Information for Students

These ideas were contributed by our developers. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you may wish to contact the developers and find out more about the particular suggestion you're looking at.

Being accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. Simply copying and pasting an idea here will not work. On the other hand, creating a completely new idea without first consulting potential mentors is unlikely to work out.

When writing your proposal or asking for help from the general MegaGlest community don't assume people are familiar with the ideas here.

If there is no specific contact given you can ask questions on our IRC channel on freenode at #megaglest. For more context see the MegaGlest development web page and contact the developers on the projects' forums and mailing lists.

Adding a Proposal

Project:

Brief explanation:

Expected results:

Knowledge Prerequisite:

Mentor:

When adding an idea to this section, please try to include the following data:

  • a brief explanation
  • the expected results
  • pre-requisites for working on your project
  • if applicable, links to more information or discussions
  • mailing list or IRC channel for your demo/library/module
  • your name and email address for contact (if you're willing to be a mentor)
If you are not a developer but have a good idea for a proposal, please get in contact with relevant developers first.

Ideas

How to find ideas?

Obvious sources of projects are

New Pathfinder

Currently MegaGlest uses an A* (a-star) implementation for its pathfinding algorithm. During times in game where many units need to be moving and pathfinding, this can cause performance problems (or lagging). We would like someone to investigate plugging in an accurate / fast performing (possibly an AI pathfinding technique called flocking or swarm AI) alternative and possible replacement.

An idea that looks promising:
This teamliquid.net forum post discusses how Blizzard software handles pathfinding in SC2.

Expected results:

A pathfinder in game that performs well under a load of 1000 -> 1500 concurrent units of different sizes on a complex map with various obstacles.

The work is to be delivered as a series of pull requests against the project Git repository.

Knowledge prerequisite:

C++ is the main language of MegaGlest, therefore the code should be in C++. The more you know about C++, OpenGL, and Pathfinding techniques the better.

This idea encompasses so much different stuff the student is not expected to know everything before he starts coding (but will certainly get to know a lot in the process!).

The work is to be delivered as a series of pull requests against the project Git repository.

Skill level: medium to advanced

Mentor:

Mark Vejvoda (SoftCoder) as general mentor and someone to ask for directions.

Upgrade from SDL 1.2 to 2.0

Currently MegaGlest uses SDL 1.2. The current use (especially for multi-language keybaord input) among other things is messy. We'd like to take advantage of the VAST IMPROVEMENTS in SDL 2.0 (see here: https://icculus.org/SteamDevDays/SteamDevDays2014-SDL2.pdf)

Likewise there are many other wonderful items in SDL 2 such as cross platform dialog boxes and many other clean interfaces that would allow us to clean up a lot of our input handling as well as some resource management offered by this great update.

Expected results:

A clean implementation of input device handling using SDL2.0 using a unified way of processing input and handling resource and libraries in a unified manner.

Knowledge prerequisite:

C/C++ is the main language of MegaGlest, therefore the code should be in C++. The more you know about C++, OpenGL, SDL, and internationalization the better.

This upgrade would aim to streamline code that SDL2.0 handles better than our custom implementations, offering a more stable cross platform experience.

Skill level: medium to advanced

Mentor:

Mark Vejvoda (SoftCoder) as general mentor and someone to ask for directions.

Masterserver REST API

The MegaGlest network game architecture consists of multiple game clients, optionally a headless server and a masterserver which retrieves, stores and returns information on past and present game servers, games played and attending players, as well as about available game mods. Currently, clients and headless server use simple HTTP GET queries to make requests to the masterserver to both send and retrieve information. The master server is currently written in simple procedural PHP 5.2 code.

As part of this project, the communication protocol between game clients and headless servers on the one hand, and the masterserver on the other end, is to be redesigned to become a HTTP REST API. Additionally, a new masterserver implementation based on this API shall be developed.

Expected results:

  • HTTP REST API design documentation (on the project wiki), similar to http://developer.github.com/v3/
  • Masterserver implementation in (object oriented) Python, Ruby, or PHP
  • The work is to be delivered as a series of pull requests against the project Git repository
Knowledge Prerequisite:
  • Prior experience (must be demonstrated) in designing or implementing a RESTful API
  • Alternatively experience in designing or implementing any structured communication protocol and >= 2 years experience in using a common RESTful API
Skill level: medium to advanced

Mentor:

Tom Reynolds (tomreyn) as general mentor and someone to ask for directions.

Clone this wiki locally