GSOC - TheShubham99/Terasology GitHub Wiki

Google Summer of Code

We have participated in GSOC before, and hope to do so again. This page provides some overview information on how the program works and links to more details. Most importantly is the ideas page which we've moved to a simple Trello board.

We also have a GSOC label for our issue tracker where a few potential issues may not yet have been written up as ideas. But since we are spread across so many repositories (even GitHub organizations!) it made sense to pick a more central spot.

Ideas vary in maturity and more design may be needed for some. "Freestyle" proposals not based on any specific idea are of course also welcome but they need extra justification to be considered :-)

For more GSOC specific details see its site at https://summerofcode.withgoogle.com

What is Terasology

In short Terasology's goal is to make a heavily extensible voxel world game where actual gameplay can be defined in batches of modules. The engine is minimal, primarily serving to support modules of different kinds. Even systems that seem central to games in general, like a first person player, inventory, combat, and so on is here provided in modules instead and everything can be replaced with a customized version or disabled if not needed.

A few typical game modes are available, like a content creation sandbox mode, a twisted Alice in Wonderland style base warfare mode, a more difficult "start from scratch" world with a realistic tech tree to claw your way up while surviving, and so on.

Some inspiration has of course come from Minecraft, as well as other classics like Dwarf Fortress and Dungeon Keeper. One heavy focus is making sure the world contains more realistic creatures that'll interact with the player in a number of different ways as well as develop their own societies.

What is Destination Sol

Destination Sol is an arcade space shooter, originally started by Milosh Petrov and a small team on Steam and SourceForge.

After receiving highly positive reviews launching as an indie title on Steam Milosh and the remaining team members wanted to focus on different projects, having made Destination Sol primarily to try out the involved technology.

A call was put out to the player community for a new maintainer, and open source was an option praised by many and already somewhat in place on Sourceforge. The open source group MovingBlocks behind Terasology stepped in to offer infrastructure and maintenance.

Since then, we have been actively improving the game with the mechanisms and technologies that we already use in Terasology. Destination Sol also uses a modular system for including new ships and assets to the game (with limited code support).

Overall Requirements

As an incoming student you should meet these general requirements:

  • Intermediate level Java skills (for most projects. Exceptions do exist)
  • Knowledge of version control, preferably Git (the project is hosted on GitHub)
  • Experience with an IDE such as IntelliJ or Eclipse would be helpful
  • A good attitude and willingness to learn!

At some point before the student deadline you need to have submitted at least one meaningful Pull Request somewhere to one of our repositories. It doesn't need to have been merged yet, but a mentor must have at least looked at it (ask for review on Discord if your PR goes without for a little while - it can sometimes be hard to spot some of them) and considered it valid - but just about anything can qualify for that :-)

More specific requirements (if any) can be found listed with corresponding ideas.

To earn some bonus points familiarize yourself with the Codebase Structure and the concepts of our entity system. Get an overview of the project and get set up!

How to get involved

The sooner you contact us the better! As mentioned above, set up your environment, browse through our primary Issue Tracker and get your hands on some minor fixes or a simple module.

For a bunch of sample small tasks you could also see archived Google Code-In tasks for 2016, 2017, and 2018 - plenty of them are still repeatable and all of them were easily doable since they got done! :-)

If you have any questions don't hesitate to enter #terasology on Freenode IRC, join us on Discord or post a thread in our introduction forum.

Here is a more step-by-step guide:

  • Check our main site, look at the associated resources like our source code and read the various guidelines
  • Pick an idea that you think is interesting from our ideas list (available on GSoC) or come up with your own idea
  • Get familiar with what exactly GSOC is! We can provide you with some information to get started, and most of the time give you some feedback, but its still you working out an idea
  • Post an introduction of yourself in our intro forum and of what your interests are, including what you might like to do for GSOC

Writing a proposal

After we get to know each other a bit and you've picked an idea, the next step is to write and submit a project proposal. This proposal is meant to detail your work plan around the chosen idea - what are you planning to do, what you expect to achieve, and how you are going to achieve it. We suggest that you structure your proposal as follows:

  • Project Summary: explain the overall concepts about your idea, and why do you think it's important to the game in terms of contribution (improvements, additions, etc.).

  • Goals: the tangible contributions of your project, in the form of deliverables and milestones. All of your goals must be achieved within the GSoC timeline.

  • Stretched goals: in the case you have enough time after reaching your goals, anything else that you could add or improve (as long it is related to your main idea).

  • Detailed work plan: explain is as much detail as you can each of the goals and stretched goals you defined before. In order to do so, it is important to discuss your ideas with the community beforehand. This will allow you to have a better sense of the code/structure that will be impacted by your idea, some of the challenges you might find, and a clearer vision on how to implement your idea.

  • Timeline: Following GSoC's official timeline, place each of the proposed goals within the timeline. This will allow us to have a clearer view of how long you expect to take to implement each goal.

  • Personal details: We will be in touch beforehand through one of the chat channels, but we recommend that you include some information about you in the proposal: your technical background/experience, and why do you think you'd be a good fit as a contributor for Terasology.

We encourage you to check our ideas list, but - as mentioned before - you can submit a brand new idea, as long as it is well justified. Also - you can find some examples of proposals accepted in past GSoC editions here and here.