GSoC 2019 - Terasology Launcher 4.0

raj

New Member
Project Overview
Terasology uses a desktop launcher to help users manage different game versions and tweak additional settings. The launcher is developed using JavaFX, but the mode of distribution of JavaFX has caused multiple issues for users. This project proposes to enhance the launcher while continuing the use of JavaFX and embedding a runtime to provide a hassle-free experience for end-users who don’t have Java installed.

Mentors: skaldarnar, eviltak, cervator, arpitkamboj, llvieira
Student: raj
Github: https://github.com/orgs/MovingBlocks/projects/18
Trello: https://trello.com/c/EkfSScjw
Slack / Discord: #launcher
Blog: Ovenbyte/GSoC
Proposal: Open in Docs

All weekly status updates for the project are posted in this thread.
 
Last edited:

raj

New Member
Week 1 updates
May 27 - June 2

What I achieved this week
Most of the time was spent learning more about and experimenting with the launcher's architecture as well as laying out plans for the upcoming Server Manager.
  • Got acquainted with Swagger and websockets
  • Created the base layout for the new UI
What I'm currently working on
  • Writing dedicated Controller classes for the new UI
  • Implementing a basic server manager
What problems I'm currently facing
Nothing yet

Anything blocking me from making progress
Nothing yet

List of PRs and issues
Topics discussed in the weekly meeting
  • Properly managing the GitHub board
  • Using Swagger to generate client SDK
Blog post
GSoC 2019: Week 1 updates
 
Last edited:

raj

New Member
Week 2 updates
June 3 - June 9

What I achieved this week
  • Prepared Gradle task to generate web API client code
  • Replaced the old UI code with new
What I'm currently working on
  • Planning the architecture for the Server Manager
  • Implementing the Game Manager
What problems I'm currently facing
Due to the lack of sufficient experience in multiplayer game architectures and networked apps, I'm having problems deciding how to properly implement the Server Manager, which essentially monitors multiplayer gaming.

Anything blocking me from making progress
The confusion regarding the architecture and plans for properly implementing the Server Manager.

List of PRs and issues
Topics discussed in the weekly meeting
  • Fixed minor Gradle issues on client code generation
  • Server manager designs
  • Plans for upgrading Gradle version
  • Internationalization for the upcoming launcher
Blog post
GSoC 2019: Week 2 updates
 
Last edited:

raj

New Member
Week 3 updates
June 10 - June 16

What I achieved this week
  • Designed the new Settings UI and made it default
  • Connected the old settings API to port all functionalities
What I'm currently working on
  • Checking availability of Jenkins during launcher initialization
  • Replacing the main launcher UI with the new one
What problems I'm currently facing
Nothing yet

Anything blocking me from making progress
Nothing yet

List of PRs and issues
Topics discussed in the weekly meeting
  • Correctly breaking down chunks of code into separate PRs
  • Reverted some of the complicated code
  • Future plans regarding the launcher
Blog post
GSoC 2019: Week 3 updates
 
Last edited:

raj

New Member
Week 4 updates
June 17 - June 23

What I achieved this week
  • Gradle now bundles a JRE with the launcher packages
  • Running game using the bundled JRE
  • Checking Jenkins availability during initialization and skipping launcher updates if not
What I'm currently working on
  • Moving the JRE bundling tasks into a dedicated GitHub repo
  • Gradle task for shrinking the JRE size by removing unused java packages
  • Making splash screen optional
What problems I'm currently facing
Nothing yet

Anything blocking me from making progress
Nothing yet

List of PRs and issues
Topics discussed in the weekly meeting
  • Upgrading Gradle to version 5.4.1
  • Jenkins pushing the Terasology zips into Artifactory or GitHub's package repo
  • Separation of JRE-bundling code from Launcher's repo
  • Downloading, caching and shrinking of the JRE by new Jenkins
  • Several cards got rearranged
Blog post
GSoC 2019: Week 4 updates
 
Last edited:

raj

New Member
Week 5 updates
June 24 - June 30

What I achieved this week
  • End of the first phase and evaluations
  • Set up a new repo for customizing JRE builds
  • Tasks for downloading JRE from Bellsoft and for publishing them to our Artifactory
What I'm currently working on
  • Laying out the framework for improving the package management functionality
  • Tasks for launcher download the customized JREs from Artifactory
  • Tasks to shrink the size of JREs to be bundled
What problems I'm currently facing
Nothing yet

Anything blocking me from making progress
Nothing yet

List of PRs and issues
Topics discussed in the weekly meeting
  • An advanced game package management functionality
  • Users will be able to download game packages from 3rd parties when specified in the launcher
  • New Jenkins got set up
Blog post
GSoC 2019: Week 5 updates
 
Last edited:

raj

New Member
Week 6 updates
July 1 - July 7

What I achieved this week
  • The base API for the upcoming package manager
  • Caching support for the package manager
  • Documented the TerasologyJRE repo
What I'm currently working on
  • Downloading, installation and removal support for the package manager
  • Replacing old package handling codebase in the launcher
  • 3rd-party package provider support for the package manager
What problems I'm currently facing
Nothing yet

Anything blocking me from making progress
Nothing yet

List of PRs and issues
Topics discussed in the weekly meeting
  • Design of the new package manager API
Blog post
GSoC 2019: Week 6 updates
 
Last edited:

raj

New Member
Week 7 updates
July 8 - July 14

What I achieved this week
  • Tracked down the cause of weird test failure in TestBaseLauncherSettings and fixed it
  • More work on the package manager API, along with a diagram of it
What I'm currently working on
  • Integrating package manager into the original codebase for a test drive
  • Ensuring the other parts depending on the version classes stay intact while doing those integrations
What problems I'm currently facing
TerasologyGameVersions.java is complicated and hard to understand

Anything blocking me from making progress
Nothing yet

List of PRs and issues
Topics discussed in the weekly meeting
  • Design of the new package manager API
Blog post
GSoC 2019: Week 7 updates
 
Last edited:

raj

New Member
Week 8 updates
July 15 - July 21

I was inactive around this week because of some serious, untimely issues. I also had to shift to my college's city, as classes were about to restart. So there's no contribution to show in this update. I'll try to make up for the lost time in the upcoming week and take care of the package manager.
 
Last edited:

raj

New Member
Week 9 updates
July 22 - July 28

What I achieved this week
  • The launcher now successfully starts up, integrating with the package manager
  • Clean stream-based code inside TerasologyGameVersions to interoperate with the package manager
  • The package manager wrapper can now successfully load cached TerasologyGameVersion objects, or create them if not found
What I'm currently working on
  • Improving the integration, and trying to restore the functionalities broken by the package manager wrapper
  • Adding more functionalities to the package manager
What problems I'm currently facing
The attempt on integrating TerasologyGameVersions with the package manager is quite hard due to its complicated structure.

Anything blocking me from making progress
Nothing yet

List of PRs and issues
No new items

Topics discussed in the weekly meeting
  • Separation of the package manager into its own dedicated project, due to the absence of similar tools in java world
  • Rewriting the game package handling codebase from scratch, instead of replacing TerasologyGameVersions bit-by-bit
Blog post
GSoC 2019: Week 9 updates
 
Last edited:

raj

New Member
Week 10 updates
July 29 - August 4

What I achieved this week
  • The package manager now provides all the build numbers, whether they were successful or not
  • The launcher setup can detect previously installed games
  • Added the latest placeholder object in the version list, just as it previously used to be
  • Tested the launcher to be fully functional: Downloading, starting and removing games work fine now
What I'm currently working on
  • Adding more functionalities to the package manager
  • Replacing the old TerasologyGameVersions codebase bit by bit
What problems I'm currently facing
Nothing yet

Anything blocking me from making progress
Nothing yet

List of PRs and issues
No new items

Topics discussed in the weekly meeting
  • Improving the package manager architecture to be more domain-specific
  • Separate PRs for each package manager functionality
Blog post
GSoC 2019: Week 10 updates
 
Last edited:

raj

New Member
Week 11 updates
August 5 - August 11

What I achieved this week
  • A fair amount of research on how package managers like apt, pacman and npm work
  • Upgraded architecture plans for the new package manager
What I'm currently working on
  • Implementing the new package manager architecture
  • Third-party package repository support
  • Replacing the old codebase (TerasologyGameVersions).
What problems I'm currently facing
Nothing yet

Anything blocking me from making progress
Nothing yet

List of PRs and issues
Topics discussed in the weekly meeting
  • Rearranging cards in the project board
  • Upgraded package manager architecture
Blog post
GSoC 2019: Week 11 updates
 
Last edited:

raj

New Member
Week 12 updates
August 12 - August 18

What I achieved this week
  • Implementation of PackageDatabase, as per the revised architecture plans
  • JenkinsHandler class to enable support for our Jenkins
What I'm currently working on
  • Integrating PackageDatabase with the PackageManager
  • Downloading and caching of packages
  • Handling local installations and cache
What problems I'm currently facing
Nothing yet

Anything blocking me from making progress
Nothing yet

List of PRs and issues
Topics discussed in the weekly meeting
  • Testing out the PackageDatabase
  • Proper submissions for last GSoC evaluation
Blog post
GSoC 2019: Week 12 updates
 
Last edited:
Top