Google Summer of Code 2018 - Introductions


(Thorbjørn Lindeijer) #1

Last year, Tiled participated as a mentoring organization in the Google Summer of Code for the first time. Since it was a great success with three students completing their projects, we’ve applied to be a mentoring organization again this year. Of course, until 12th of February, we don’t know whether we’ll actually get to participate.

Warning and Call for Mentors

Note that from our participation last year we realize there are many students interested, yet as a very small organization we can only accept a few students. Last year we managed to mentor three, but this year we will probably only be able to mentor one or two because my wife is expecting our third child in June (you heard it here first!). The only way we may be able to accept more students is with the help of experienced mentors (that can also do thorough C++/Qt code reviews), so if you’re a mentor reading this please get in touch!

Introduce Yourself Here

To avoid the creation of too many introduction threads, please use this thread to introduce yourself if you’re interested to be one of our students. You can find an updated list of suggested projects and the information we’re interested in on the wiki.

Finally, note that everybody is welcome to contribute to Tiled at any time, also outside of the Google Summer of Code! If you want to learn your way around Git, C++ and Qt, there are people here willing to help you. Just get started and have fun!


(Satvik Ramaprasad) #2

Hello,

I would like to work for Tiled in GSOC - 2018.
Project: Add Scripting Capabilities

About me

  1. Why would you like to work with us?
    Game development has been my childhood passion. Unfortunately, I couldn’t pursue it much in recent times. Back in the day, I used to do lots of mini flash and HTML5 games. I also wrote a small program where the user can design his own platform game level design(basic) and export the data and use in his/her game. This is broadly similar to what Tiled does.

  2. What previous programming experience do you have?
    Been developing for about 5 years. Worked on mostly web-based projects. I also occasionally participate in competitive programming contests.

  3. What projects have you worked on before?
    Big Project:
    CircuitVerse - link: Digital Circuit Simulator, we are going to launch next month. This aims to provide a platform for beginners to explore the digital world using our simulator and community features. We are a non-profit organisation.
    Small Projects:
    LightXLab: Ray_ Optics Simulator
    LedCube Animation Editor: Arduino developers can design the animations for their LED cubes using this tool.
    Othello AI game: Wrote an AI for Othello board game, its pretty intelligent :stuck_out_tongue:
    All small projects can be viewed live in my portfolio

  4. Which languages and technology did you use for them?
    Mostly JS, Bootstrap for the front end work. For the backend, we used Ruby on Rails.
    For the mini-games, I used Flash and HTML5. Used basic php for simple projects.

  5. Did you work in a team or alone?
    Worked in a team. I am currently the Product Manager (CircuitVerse) .

  6. Have you done any contribution to any open source project before?
    Not really. Have worked on a few projects with my friends which are public on GitHub.

  7. Do you have any previous experience working with Git or any versioning software?
    Yes, I have used Git extensively in the past few months.

  8. Do you have any prior experience with C++ and Qt?
    C++ : Mostly used for Competitive Programming
    Qt: No appreciable experience.

  9. Do you have any project in a public repository we can take a look at?
    My main projects are unfortunately private. However, you can look at the following public repos.
    LightXlabHTML5
    Python Interpreter With Graphs

Discourse isn’t allowing me to post more than two links as I am a new member.

I did one PR: Multiple - Frame Animation (Pull request 1784). I aspire to get selected for GSoC 2018, but I am kinda lost as far as the direction is concerned. I’d really appreciate it if someone could guide me through this.
Thank You.


(Erik Schilling) #3

Hi,

cool that you are interested in the program :slightly_smiling_face:

Generally posting on the forum is a great start. It looks like your already found https://github.com/bjorn/tiled/wiki/GSoC-2018 since you replied to the questions there (which is also a great start). Otherwise you still have plenty of time. The “real” application phase starts at March 12. Until February 12 we do not even know whether we will be accepted officially ;). But generally being active (via Pullrequests, here or on IRC) is a great way for us to get to know you better. So if you got the time, feel free to dive into the code (and maybe open PRs while on it ;))

Regards,
Ablu


(Thomas Ferrand) #4

Hi,
I’ve heard of the Google Summer of Code and I’m interested in participating.
For the moment I’m not sure on which project to choose but as someone else want to work on the plug-in integration, I won’t pick this one

  • Why would you like to work with us? Well, I was looking for, preferably, a C++ project as this is my favorite language an working on Qt is one of next target skill. Of course the fact that tiled is linked with game development is another reason as -like many programmers- I’m at least partly interested in game development.
  • What previous programming experience do you have? I began programming like 5 years ago, I initially learned C then switched to C++ (despite that, C-style C++ code is something I don’t like as I learned C++ as a completely new language with its own practices). I’ve also done some web development.
  • What projects have you worked on before? I’ve worked on two website on my spare time and on many other as part of an internship. As school projects, I’ve worked on a basic console-based application but we were encourage to add our own functionalities, we add a gui and generation of a report in html format; another project was an implementation of the Huffman compression algorithm; the last one was a game, some kind of a multiplayer bomberman. Other than they are some personal projects, which aren’t really important, the most notable one is a 3D mine sweeper (done in only a WE during a game jam so not nice nor optimized).
  • Which languages and technology did you use for them? For the web projects, I used PHP for the back-end (with sometimes some framework) and html/css/js as front-end. For the first two school project, I used C++ (with Qt for the gui in the first one), the bomberman was done using C# and the C# binding for the SFML library and the mine sweeper with python and pyGame.
  • Did you worked in a team or alone? For the school projects or the one during my intership, I was part of a team, for the other ones listed I was alone. I’m currently part of two more projects with friends, a C++ shoot’em up and Zelda fan game.
  • Have you done any contribution to any open source project before? Not really, the most I’ve done is modifying an existing program to make it feet my need on one specific case
  • Do you have any previous experience working with Git or any versioning software? Yes, I began using Git one year ago, since then I use it one every of my projects
  • Do you have any prior experience with C++ and Qt? Yes, as stated before I have many experiences with C++ itself, I think I have a really good level in C++ including knowledge on the standard library, the modern idioms and all. With Qt, I only have little experience.
  • Do you have any project in a public repository we can take a look at? I do have a repository https://github.com/aTom3333?tab=repositories but there isn’t much in it : a fork of the program I needed to modify, the ongoing shoot’em up project with friends and some utilities in C++ I’ve made (undocumented and some of then aren’t even finished).

I’ll try in the next days to become more familiar with code.
Thanks :slight_smile:


(Erik Schilling) #5

Hi,

if you need any help with getting into the code feel free to ask here or on the IRC channel :slight_smile:.

Regards,
Ablu


(Axel POULAT) #6

Hi, I was looking at the GSoC 2017 when i saw Tilded. If you’re selected for GSoC 2018 I want to work with you. I don’t know which project to pick yet.

  • Why would you like to work with us?
    I am more familiar with C++ and i am interested in game development.
    Tiled have both of them that’s why I want to work with you. And it is an opportunity to improve my English.

  • What previous programming experience do you have?
    My first experience was 3 years ago (a Mental calculation game in Python).
    Then I learn the C++ and the C#. I have done some web development too but nothing really impressive.

  • What projects have you worked on before?
    I have worked on something like an application for fast food drive.
    It is an interface in which you can select products to make a command. The products are stored in a database.
    I am working on a personal project : a game like pokemon GBA. I am trying to reproduce the game mechanics of the generation 1, with the graphics of the generation 1 to 4.

  • Which languages and technology did you use for them?
    For the first project i used C# and an SQL database. For the second one I use C++ and SFML

  • Did you worked in a team or alone?
    I worked in team for the first one and alone for the second one.

  • Have you done any contribution to any open source project before?
    No this may be the first experience like that :wink:

  • Do you have any previous experience working with Git or any versioning software?
    No I just begin working with Github.

  • Do you have any prior experience with C++ and Qt?
    Yes I have a prior experience with C++ but I don’t have any with Qt.

  • Do you have any project in a public repository we can take a look at?
    I am putting my files of the pokemon like game in my Github if you want to take a look at. But i am still working on it so there is a lot to correct/create.
    I will put the files of the application for fast food too.
    My git ID is sganayon
    https://github.com/sganayon?tab=repositories

If you see some language mistakes don’t hesitate to correct me so i’ll be better, thanks for reading :slight_smile:


(Erik Schilling) #7

Hello,

nice to see that you are interested :slight_smile:. Looking forward to see some Tiled related PRs from you ;).

Regards,
Ablu


(Keshav Sharma) #8

Hello everyone :slight_smile:
I’m a 2nd year CSE Undergrad Student and I’ve chosen Tiled as an organization for GSoC 2018 and also interested in contributing to its development.

The project(s) I’m Interested in :

  1. Adding Scripting Capabilities
  2. Connections Between Object

Why would you like to work with us?
My interest lies in Game programming and media software (i.e animator tools, game engines, etc) and so I wanted to choose an organization that can match my interest, I came across organizations like Inkscape, Blender and also Tiled being one of them. Among them, Tiled was the only application which seems to match my area of interest plus due to the fact that its majorly written in C++ and Qt, this seems like a perfect choice for me because I’m familiar with C++, and the only thing left to study was the Qt framework, and being familiar to Java Swing, I have some idea of GUI Programming. So picking Tiled was the perfect choice for understanding how these applications are designed and work behind the scene without worrying too much about technology stack.

What previous programming experience do you have?
I’m very much comfortable in C++, Java and familiar with JavaScript. I’ve been programming in C++ mainly and Java for 4 to 5 years. I’ve been involved in competitive programming and use C++ as my preferred language there. Apart from these, I’ve worked on few projects and mostly all of them are either written in C++ and few in Java.
I’m also familiar with Unity (and C#) and also been developing games in Unity , Game Maker since my junior school year.

What projects have you worked on before?

  1. PicoCLI : this is a small application written in C++ in my free time for merely personal use and just for fun, user can interact with picoCLI via set of instructions and produce specified behaviour , such as reading/writting to notepad files or shutdown windows OS. It also includes alarm-instructions, these are special instruction that execute a code after ‘n’ seconds, where value of n is specified by user. These alarm instructions can also be nested.
    Link : https://github.com/keshav2010/picoCLI
  2. Student Data Manager : this is a java application that uses Swing for GUI and allows user to manage student data effectively, This program was merely written to get familiar with GUI Programming. This was also my first ever GUI application and so code organization is very poor.
    Link : https://github.com/keshav2010/sdm
  3. ALAN-SE ( wip - inactive) : ALANSE is a simulator tool that aims to simulate ALN (assembly Language notations). The main purpose behind this application was to be able to simulate ALN in order to understand addressing modes. In 3rd Semester, students are introduced to computer system architecture and assembly through use of notations known as ALNs. Since we were expected to write few lines of ALN in exams, my goal was to simulate them in order to boost my preparation for exams. The GUI includes a memory table, register table and a text-editor window where user can write ALN. I dropped this application midway due to my studies and also because i was involved with some other projects. Though i stopped paying attention to this project as i was too busy with university examinations and later started with another software project (for simplying my dad’s life :slight_smile: ), and planning to complete this project soon. Link : https://github.com/keshav2010/alanse
  4. Insurance Data Manager ( wip - temporarily inactive ) : This is an application written for managing insurance data. This is being made for my dad as he isn’t much familiar with MS-Excel and wanted a custom tool to simply his work, Im planning to use libraries by apache-poi to read/write excel files and a clean interface to interact with data in a tabular form. I’ve stopped working on this so as to focus on this project temporarily in order to focus on GSOC preparation.
    Link : https://github.com/keshav2010/InsuranceDataManager
  5. ProtoAnimator _(wip - active)_ : This is a new project that i’ve been working on recently in C++ and Qt, the goal is to create a software application that enable sprite-based animation design approach, User would be able to import images and specify parent-child relation between objects in order to flexibly animate them. The process of animating would be similar to that in Pivot-Animator with an added feature of linear interpolation that should be able to generate the frames within specified key-frames. The application is in very initial stage of development and this is where im putting my focus right now apart from Tiled. Since i’ve never really worked on anything close to this, my goal is to ultimately understand how memory is managed as multiple frames are expected to hold similar sprites with merely different data (position, scale, etc), thus i’ve been struggling with an efficient architecture that should be memory efficent as well as fast, and also this is serving as one of the way for me to learn Qt framework.
    Link : https://github.com/keshav2010/ProtoAnimator

Apart from this , i’ve made a simple game framework in SDL and made few small prototype games with it. Also familiar with Unity, Game Maker and often release games under tagname “bugless-bytes”, link to my additional work : http://buglessbytes.webs.com/

Which languages and technology did you use for them?
Most of the above projects are written entirely in a specific language (either in C++ or Java) with no third party library support, although i will be using apache-poi’s library in one of the project and one recent project uses Qt. Apart from this, I’ve used Unity, SDL, game-maker for game projects.
As for web development, I’m familiar with javascript, and node.js and express although never really made anything worth mentioning in web development domain.

Did you worked in a team or alone?
for my open source projects, i work alone meanwhile for game related projects, i work in a team ( Bugless Bytes) mostly as programmer while other members help with level design and assets.

Have you done any contribution to any open source project before?
No, i’ve never really contributed to a third party open source project and Tiled is my first large scale open source project, apart from this i’ve only contributed to projects started by my friends but at very tiny scale.

Do you have any previous experience working with Git or any versioning software?
Yes, I’ve been using git for about 7 months now.

Do you have any prior experience with C++ and Qt?
Yes for C++, as for Qt, im still on a learning phase.

Do you have any project in a public repository we can take a look at?
Already mentioned my public projects above :slight_smile:

I’ve submitted 2 PR so far , one was a feature to reset layout to default layout (https://github.com/bjorn/tiled/pull/1809) and a recent one is to show information about object tools in bottom status bar (https://github.com/bjorn/tiled/pull/1862) .
I’m interested in any of the 2 above projects although as for scripting project, i’m still trying to understand as to exactly how API should interact with an application like a map-editor (like Tiled), since i’ve never really used Tiled in my personal game projects so i wish i could get some example of some hypothetical script and result it may achieve for an user.

As for connecting an object, it would be again helpful if i could be given some reference to link or anyone can explain significance of object connections and issues that this will eventually solve if successfully implemented. It would be really helpful if i could be given reference to some videos or readings that can help me understand exactly what problem is being targeted and simplified by working on this project ( “Connecting Objects”)

Once i could get my mind around it, i can eventually begin writing my final proposal and possibly submit a very tiny prototypes for admins to review :slight_smile:
Thank you :slight_smile:


(Erik Schilling) #9

Hello :slight_smile:

just a short comment: The “Adding Scripting Capabilities” project probably has enough content to fill the entire GSoC time span. But of course it is fine to state interest into both topics :slight_smile:. I only wanted to point this out in case you planned to target for both projects at the same time.

Regards,
Ablu


(Keshav Sharma) #10

Thank you for replying: slight_smile: Yea although im interested in both, im aware that scripting capabilities project is quite a big project :blush: and it is not possible to work on both simultaneously. I’m just not sure if it would be practical for me to pick up something that big especially when I’ve never really used Tiled for my personal project so I won’t be able to realize its importance from a user point of view, meanwhile another project that involves connection of objects make some sense to me, its more like I want to pick up scripting one for learning purpose but also don’t want to make an unrealistic choice. :confused:
Also, i often hesitate to post in IRC channel because im afraid i might break up a rule or something :stuck_out_tongue: , I wonder if i should prefer sending my doubts on tiled IRC room or to personal IRC account of either admin ?


(Thorbjørn Lindeijer) #11

You can always try the IRC channel, it’s very hard to break any rules there. The important bit is to stay connected, so once somebody reads your message you’re there to receive a reply (which you can then read later). I would recommend using https://riot.im/app/#/room/#freenode_#tiled:matrix.org to access the room.

There’s a mockup in issue #707 that should give a good first impression of the use of such a feature. Imagine working on such a map without having those connections visualized. It’s a real pain to figure out how things are connected then. And if you would use polylines to make visible connections, then it’s a pain to keep them in the right place when you move connected objects around. Another example that was mentioned, is that often in games you have areas that take you to another map. That’s also a connection, and it would be great if you could use it to navigate to that other map in Tiled.


(Thorbjørn Lindeijer) #12

Welcome @satu0king, @a_Tom, @sganayon and @Keshav_Sharma! I’m happy to see already such a large interest in GSoC this early!

As you noticed I’ve moved all your introductions into this thread, and I’ve adjusted the wiki page to mention this topic for further introductory posts. Otherwise I’m afraid we may soon we have the whole topic list full of introduction posts. :slight_smile:

Like I said in the post I wrote to start this topic, I of course hope we will get to participate again this year. But even if we don’t, or even if we can’t select you, you are all welcome to contribute to Tiled and learn from the experience, at any time. As time allows I will be here (or on IRC, or GitHub) to answer questions and so are others, like our other admin and mentor @Ablu or previous GSoC participants like @ketanhwr. We are looking forward to have you!


(Erik Schilling) #13

Always prefer the public channel :slight_smile:. People are often busy and if you only message a single person the others have no chance to reply if they know the answer. So unless you have private questions, always use the public channel :wink:


(Harindu Dilshan) #14

What kind of students do you wish for the program? I am personally not interested in game development but i have experience with Qt(C++/Python).


(Erik Schilling) #15

Generally for the Tiled code base itself you do not really need game development specific skills. However, if, at some point, you have worked on a game which uses Tiled-like maps, you might have a better understanding of the type of features being useful for a map editor. But this is a might and not something which we filter the applications on. Now, with that being said, you should of course still try to apply for a GSoC project into which you are interested :slight_smile: (the project should be fun for you ideally :wink: ). So as long your application comes with an understandable motivation of why you want to work on Tiled that is fine :slight_smile:.


(Harindu Dilshan) #16

Well here is my introduction. At the moment I am interested in the following projects:
1.Custom Property Improvements
2.Add Scripting Capabilities

Why you would like to work with us.?
I would like to work with C++ and on a GUI application.

What previous programming experience you have.?
I first learned Java 4 years ago. Then I started learning python and c++.
I have done couple of toy GUI applications.

What projects you have worked on before?
launcher (C++/Qt) - An application launcher for Linux, for my personal use.
youtube-douwnloader(Python, pyqt) - A small app written with youtube-dl

Whether you worked in a team or alone?
I worked alone for all my individual projects.

Whether you have done any contribution to any open source project before?
I have done some contributions to Albert(an Application launcher :smiley:) , pytube and quicktile.

Whether you have any previous experience working with Git or any versioning software?
Yes I have experience working with Git.

Whether you have any prior experience with C++ and Qt.?
Yes I have experience with C++ and Qt.

What project(s) you have in a public repository that we could can take a look at?
You can find all of repositories at https://github.com/harindu95?tab=repositories


(Harindu Dilshan) #17

By the way I am curious as to why do you guys think adding scripting ability is hard ? Isn’t it just the following steps?
1. Set up QJSEngine with globals
2. Run the scripts in the directory with QJSEngine
3. Retrieve the objects from QJSEngine
4. Convert the objects if you have to.


(Erik Schilling) #18

It will be required to expose a defined API which the scripts can use to manipulate the Tiled data structures, callbacks which allow the scripts to react on certain user input / actions will be required, a generic save / export / load scripting functionality could be developed. Also UI for integrating the scripting functionality needs to be integrated (enable, disable, maybe the ability to add buttons in the menu bar?). The task is really large and definitely will need to be broken down into multiple subtasks.

Sure, some tasks will be easy, but a full integration (how this one will look will also depend on the students proposal) has an endless number of extension possibilities. So yes, we think it is a large task :slight_smile:.

Regards,
Ablu


(Harindu Dilshan) #19

As it seems most classes inherit from QObject that seems to be an easy task. https://doc.qt.io/qt-5/qjsengine.html#newQObject

I think allowing callbacks would be the largest task ,or it may not be depending on Tiled implementation.


(Erik Schilling) #20

Of course. But still the API will need to be defined, implemented and documented. “Simply” exposing the current Tiled internal API is likely not enough since it would not result in a very nice scripting interface.