Skip to content

GSoC 2022

Thorbjørn Lindeijer edited this page Mar 31, 2022 · 15 revisions

Google Summer of Code 2022

Tiled would have liked to participate for the second time at Google Summer of Code, but unfortunately we were not accepted in GSoC 2022.

This page contains a list of projects we suggested. They're still great projects if you want to start contributing to Tiled!

Please note that Google Summer of Code projects are a full (day-) time job.

Contents

Project Ideas

We are open to your ideas! If you have your own ideas for improving Tiled, you are more than welcome to send them. Below are listed several of our suggestions, representing large areas of improvement.

Next-generation Tiled Extensions

Tiled can be extended by using JavaScript, using either plain .js files or JavaScript modules (.mjs). However, Qt provides QML, a powerful declarative language. It would be great if we could use it to declare custom actions, file formats, tools, etc. Additionally, we could ship the necessary QML modules to enable extensions to implement custom UI.

Expected outcome: Tiled extensions can be written in a convenient declarative language and can define custom UI.
Required skills: Qt, C++ (preferred: JavaScript, Qt Quick)
Possible mentors: bjorn, Ablu, Leonidax
Expected size: 175 hours when excluding UI work, or 350 hours for the full project
Difficulty: Medium

Read more...

New Hardware Renderer

Modernize the rendering engine to use the Qt Scene Graph instead of QPainter.

Expected outcome: Tiled performs better and is more flexible thanks to a new renderer based on a modern graphics API.
Required skills: Qt, C++ (preferred: Qt Quick, experience with modern graphics APIs)
Possible mentors: bjorn, Ablu, Leonidax
Expected size: 350 hours
Difficulty: Medium

Read more...

Enhanced World Editing

Tiled 1.2 added displaying multiple maps within the same view by setting up a World. Since Tiled 1.4, a basic "World Tool" was added, which enabled basic editing of the world. This project is about making several improvements to the world editing functionality.

Expected outcome: Worlds are a natural and convenient part of creating game content with Tiled.
Required skills: C++ (preferred: Qt)
Possible mentors: bjorn
Expected size: 350 hours (or 175 hours, by selecting a sub-set of listed improvements)
Difficulty: Medium

Read more...

glTF Export for Maps

Implement a glTF export feature for maps, allowing them to be quickly imported for use in other frameworks without that framework needing to implement support for all of Tiled's features.

Expected outcome: Maps can be exported in glTF format as a quick way of rendering them in multiple frameworks.
Required skills: C++ or JavaScript (preferred: glTF)
Possible mentors: bjorn, Leonidax
Expected size: 350 hours (or 175 hours, for somebody who already knows glTF very well)
Difficulty: Medium

Rendering a Tiled map generally consists of determining the texture coordinates for each tile and setting up a mesh for each layer and tileset. At each step, a host of Tiled-specific properties and behaviors have to be taken into account, from tileset margin and spacing to map orientation and tile alignment.

With the growing support for glTF in many engines and frameworks, all this application-specific logic could be performed ahead of time, greatly simplifying the importing of a Tiled map in a game. Hence, this project is about writing a Tiled plugin, preferably in C++ but could also be done in JavaScript, to enable exporting a map, or an entire world, to the glTF format.

Special considerations include how to handle tile animations, logic-related layers and in general dynamic changes to the glTF scene when used in a game. In addition, for optimal rendering performance we'll probably want to look into texture packing and creating an optimized tileset.

Related issue: #2741

Application Process

If you are interested in any of our projects and looking forward to join us in improving Tiled further, follow the below guidelines to apply.

  • Sign-up in our forum and introduce yourself.

  • Tell us in which project you are interested.

  • Tell us a little bit about yourself. We are interested to hear:

    • Why you would like to work with us.
    • What previous programming experience you have.
    • What projects you have worked on before.
    • Which languages and technology you used for them.
    • Whether you worked in a team or alone.
    • Whether you have done any contribution to any open source project before.
    • Whether you have any previous experience working with Git or any versioning software.
    • Whether you have any prior experience with C++ and Qt.
    • What project(s) you have in a public repository that we could can take a look at.

None of the above information is mandatory, but the better our impression is the more confident we will be that you can succeed in your proposal. If you have a personal website or a CV/resume online, feel free to include a link.

Organization

Mentors