Ideas Page for Google Summer of Code 2019
We are thrilled to share our carefully curated project ideas for this year’s Google Summer of Code.
Idea Overview
- Coding Tutorial Game
- Awesome Demo Game Project
- Testing Efficiency Catroid
- iOS: Scenes
- iOS: Features
- Your own Project Ideas
General Information
These ideas are just some topics we came up with, where currently nobody is working on. However, Catrobat is a project with a wide range of possibilities and we’re aware of our blindspots: So let’s live the spirit of Open Source and come up with improvements (e.g. new feautes, extensions,…) that are related to the project and you’re interested in. We do have many senior-contributors who would be happy to mentor such a project. Don’t be shy and check out the last point on the list: Your idea!
General Knowledge Prerequisites for all Projects
- Knowledge in the usage of Git and GitHub
- Basic knowledge in the concepts of software testing (e.g., test doubles) and test-driven development
- Basic knowledge in app development (for Android and iOS projects)
- Java, JUnit, Mockito, Robotium and Espresso for Android development
- Also please check that you have the proper hardware for the development (e.g., a Android/iOS smartphone for testing, Mac for iOS development)
Project Descriptions
Coding Tutorial Game
Brief explanation and expected results:
Spend the whole GSoC time developing and designing one tutorial game for coding using the Luna&Cat IDE app, i.e., programming in the Catrobat visual programming language.
More Information:
Tutorial games are available for many computer games, but extremely rarely for learning programming, and then are usually playable in a few minutes and not very exciting. A great exception for teenagers is Nintendo’s tutorial game in Wario Ware: Do It Yourself. Another example tutorial game for coding designed especially for girls is the one with WonderWoman.
If you have your own original idea about a tutorial game, please feel free to suggest it. Note that the focus in GSoC should be on the design and on coding.
You will create a tutorial game tailored specifically for younger teenage girls (13-14), allowing them to learn how to code apps with Luna&Cat on their own phones, without a PC or tablet. The focus of the project is on the conception, the design, as well as the development and testing of the tutorial game.
This game will serve as a coding tutorial game for a new flavor of our popular app Pocket Code with has the name Luna&Cat. Luna&Cat is a customized version for teenage girls (see our new themed webview with example/featured games: https://share.catrob.at/luna/). The Android version of Luna&Cat will become available on Google Play by March 2019. The tutorial game must be extremely engaging and motivating for this challenging target group of younger female teenagers. It should NOT be boring, so NO “chocolate-covered broccoli” game! At the same time, it should teach coding on small smartphone screens. Average duration of playing the entire tutorial game on the phone should be around 90 to 150 minutes. It should cover 60 - 80% of the functionality of Luna&Cat, the integrated paint editor, and the Catrobat sharing platform (note that prioritization is necessary — not everything is equally important).
The coding tutorial game will be integrated into the app and will be freely available on popular app stores around the world. Note that the tutorial game will be published under Catrobat’s licenses as described in detail on Licenses and that the game will thus become part of the Catrobat FLOSS project’s source code. Thus, all artwork, sounds, character names etc must be compatible with our licenses, i.e., freely publishable under our licenses, the AGPL version 3 and CC BY-SA 4.0, or under a compatible, possibly even freer license such as CC0. The artwork, sound effects, and background music must also be of high quality and high resolution, but do not have to be necessarily have been created originally by yourself, as long as the rights are compatible with our licenses (e.g., you can also use graphics from our media library or Luna and Cat as main characters).
In summary, this GSoC coding tutorial game should become an incredibly awesome, challenging & amazing tutorial game that supports younger female teenagers in a playful way to learn coding Catrobat apps.
In your GSoC application, please add a link to a proof of concept for such a game that you have created on your phone using Pocket Code (or Luna&Cat, if already available). Also describe shortly your ideas for the story of the coding tutorial game you want to develop in your GSoC project. Mentor contact: bernadette.spieler@catrobat.org
Awesome Demo Game Project
Brief explanation and expected results:
Spend the whole GSoC time developing one huge game using the Pocket Code IDE app, i.e., programming in the Catrobat visual coding language.
Desired Outcome:
The game must be playable both on a phone as well as when cast from the phone to a smart TV.
The game should be strongly inspired by a hugely popular recent 2D game. I am thinking The Binding of Isaac or its Rebirth variant, but your own suggestions of other popular games might be even better, and are highly welcome. You may also get inspiration by search for lists of the best OR popular 2d games.
If you have your own original idea about a game, please feel free to suggest it. Note, however, that the focus in GSoC should be on coding, not story design. Also, reusing existing already successful ideas will tremendously increase the probability that the game will be popular, and allow you to get much further in its implementation. Also note that the game will be published under Catrobat’s licenses as described in detail on Licences and that the game will thus become part of the Catrobat FLOSS project’s source code. Thus, all artwork, sounds, character names etc must be compatible with our licenses, i.e., freely publishable under our licenses, the AGPL version 3 and CC BY-SA 4.0, or under a compatible, possibly even freer license such as CC0.
The artwork, sound effects, and background music must also be of high quality and high resolution, but do not have to be necessarily have been created originally by yourself, as long as the rights are compatible with our licenses.
The development of the game may possibly also be a community effort, but that’s up to you. This means that if you want, you may involve a team of people who want to work together with you on the game, either coding extensions or additional levels, contributing media assets, testing, creating promotion videos of it, etc. How you put together your team is entirely up to you, and you alone are responsible for the recruitment of and coordination within your team. Some Catrobat games have been created by large crowds. You and your team working together on the game would be perfectly fine and welcome, as long as you by yourself spend the full GSoC period working 100% on it too, and you do the main part of the coding, since Google wants GSoC projects to basically be single developer coding subprojects. However, most FLOSS projects are community efforts, and collaboration has always been one of the tenets of such projects. Also note that there will be no T-Shirts etc from Google for the other members of your team, so all contributions by other team members must be motivated intrinsically, or by additional means left to your discretion.
In summary, this GSoC project’s game should become an incredibly awesome & amazing demo game that showcases what kind of mind boggling games can be created with Pocket Code.
In your GSoC application, please add a link to a proof of concept for such a game in landscape mode (because it should be payable when cast to a TV screen) that you have created on your phone using Pocket Code. Also describe shortly your ideas for the story of the game you want to develop in your GSoC project.
Boyakasha!
Mentor contact: wolfgang@catrobat.org
Testing Efficiency Catroid
Brief explanation and expected results:
Although the test-coverage and execution of Catroid got incredigly improved, there is still refactoring and new tests needed to guarantee the best test coverage possible.
More Information:
If you look up previous years’ Catrobat-GSoC-projects, you’ll find various projects to rewrite tests and introduce Espresso Tests. This was an important step that helped to get a good basis for future work. Wheras new features are already implemented with “good” tests, many old tests still don’t work as expected, don’t cover all needed cases, are unnecessary or include dependencies that lead to a certain flakiness in test execution (i.e. they influence the order they need to be executed). As GSoC project we would like you to refactor these still open issues and also introduce a new testing-structure, making it possible to characterize tests and enable developers to test on certain levels (e.g. IDE, just specific features, extensions, etc.). Therefore, as part of this GSoC project you will define these levels together with the community, collaborate with the Jenkins-Contributors to automate these levels and finally implement it as part of your refactoring. So once again, as for the last years’ GSoC projects: for Catroid testing never ends.
iOS: Scenes
Brief explanation and expected results:
Serialization of the Scenes for different levels in a Pocket Code program
More Information:
The introduction of “scenes” in Pocket Code should ease the creation of large programs by abstraction of semantically coupled objects including code, looks and sounds into independent sub units. This makes programming of different scenes of a game insofar easier that only those backgrounds and objects which are used in this particular scene are active, can be accessed by scripts and are subject to execution.Scenes can be seen as an independent Pocket Code program (like different levels in a Game/Program).
- Implementation of a functionality to group objects into so called „Scenes“
- Implementation of the new logic, data models and the UI
- Unit and Integration Tests
iOS: Features
Brief explanation and expected results:
ASupport of all Bricks for Catrobat Language version 0.992 (except physics bricks and extensions like Lego)
More Information:
In order to be able to support Catrobat Language version 0.992 it is necessary to implement a set of missing Bricks. New Bricks:
- WhenConditionBrick
- AskBrick
- ClearBackgroundBrick
- CloneBrick
- ComeToFrontBrick
- DeleteThisCloneBrick
- GoToBrick
- PenDownBrick
- PenUpBrick
- PlaySoundAndWaitBrick
- SetBackgroundAndWaitBrick
- SetPenColorBrick
- SetPenSizeBrick
- SetTextBrick
- StampBrick
- StopScriptBrick
- WhenBackgroundChangesBrick
- WhenClonedBrick
The robotic arm is to be interfaced with a Raspberry Pi. An Android testdevice is to be mounted on the robotic arm in a way, that it can be easily unmounted, that it has working USB Connection to the Jenkins, to upload the testsuite and run the tests. A REST-ful service has to be implemented which runs on the Raspberry Pi which takes commands to move the robotic arm in a way which is needed for testing the sensors in the device. The server mus be accessible via the network and accept command from the tests running on the device. Tests for this device test suite for the aforementioned sensors are to be written, that the device can be moved with the robotic arm and the sensor data can be read out and compared to expected values. A jenkins test job has to be implemented to run the sensor-tests on the device.
Tasks you have to accomplish:
- Create data models for new Bricks
- Implement serialization and deserialization
- Implement Brick visualization and related UI actions
- Implement new logic in Player Engine
- Write unit & integration tests
Your own Project Ideas
Please do not hesitate to bring forward your own ideas and discuss them with the Catrobat team members at #catrobat on Freenode or by contacting us via https://catrob.at/mailinglist!