Qt QML desktop application − Games Launcher case study

Qt Framework, with its wide variety of modules, can be used to implement any type of project - from the military robot control panel, through medical applications, to games launcher and updater. The last case was the one we had the pleasure to implement. If you wonder how this desktop app was done, you can learn it in this post. Keep in mind, that you can find out about our other projects in our portfolio.

Technologies used

Purpose and requirements 

Eonic Games Launcher is a software project aiming to create a Windows app for managing games released by the Eonic Games Company. The main goal was allowing players to download, update and maintain their games easily. All of those can be done using one eye-catching and user-friendly app. On top of that, the launcher should also be a platform for not only games, but also all kinds of content related to Eonic Games and their activity – that includes news, videos, and blog posts to keep users up to date with what’s going on.

However, desktop apps like that cannot simply work on their own. Behind the scenes of application development, there has to be a backend service. In the case of Eonic Games Launcher backend consists of two servers: a service based on two-way TCP communication and a HTTP-based one. This separation was needed as multiple features and modifications planned for future releases required this approach. This made the app future proof which is highly expected in application development.

Therefore, our assignment was to develop a Qt Quick GUI application along with the program logic to process all the data. Because the gaming industry focuses mostly on the Microsoft Windows platform, this operating system was the release target of this program.

Qt technology is awesome 

The Qt Framework is an excellent choice for developing applications, especially like this one. It is a great choice, not only because it helps with GUI development but also comes with various business logic features like databasing, networking and many more. Qt offers a wide variety of easy-to-use tools, which makes the process of development convenient and fast.

This technology is well known in the gaming industry and is used to develop launchers for various games, such as “Mount & Blade: Warband” or “Age of Wonders III”. Even big companies use Qt Framework for their gaming hubs – Origin and Battle.net are great desktop applications examples with nice user interfaces written using Qt.

However, it is important to keep in mind that this technology is not limited to desktop apps only. With Qt framework, you can easily develop mobile, cross-platform or embedded devices apps.

Why Qt for this project?

The choice of the Qt Framework as the main technology and GUI framework for this project was an excellent solution that met the client’s expectations. First of all, this framework is based on C++ – a popular language that is well known for its efficiency. Thanks to that, we are sure that user experience won’t be disturbed by long loading times or poor system resource handling, when it comes to handling more complex issues, like checking if all game files are up to date.

On top of that, you can use a broad spectrum of C++ open libraries instead of wasting time creating a solution from scratch. This will improve the application development process and may come in handy if you need some specific functionality for your app.

Another great advantage of Qt Framework is the Qt Quick module, a library for writing QML applications. It delivers a visual canvas while providing everything you need to create a rich user interface using QML programming language. It is a great tool for creating responsive, eye-catching, smoothly animated and user-friendly GUI applications.

QML is written in C++ language, runs natively on target devices, and uses hardware acceleration. The language also benefits from the Just-In-Time and Ahead-Of-Time compilation. That combined with intuitive syntax makes it a powerful tool – this is why we used QML programming language with the Qt Quick module for implementing UI for Eonic Games Launcher.

Qt comes also with a wide range of tools that ease the life of software developers and designers. Great examples are Qt Creator – IDE dedicated to Qt QML programming and Qt Design Studio – a tool allowing the creation of user interface for QML app almost without coding. There is even a possibility to export the Figma project directly to the QML language.

Is Qt and Qt Quick the right choice for cross-platform desktop app development?

Despite the fact that this application was released on a single platform, it still could run on mac os and Linux. In fact, Qt is one of the best frameworks for cross-platform desktop app development. In this blog post, we compared Qt and other frameworks in order to figure out which one is the best for this purpose.

Actually, we like to call Qt a technology that supports the widest range of hardware platforms and operating systems. Indeed, Qt doesn’t limit itself to only desktop platforms. With Qt, you can also develop mobile applications as well as software targeted to embedded platforms. All of that using the same code base. There is even a possibility to develop web apps using this framework.

Approach to the project and challenges we faced

Life of high-quality software doesn’t begin when the team starts writing code – it starts well beforehand during the consultation phase with the client. In Scythe Studio we provide comprehensive consulting and architecture design, offered to all clients who have chosen our services. During this stage, we perform an in-depth analysis of requirements, client needs, use cases, and much more. Thanks to it, we end up with a clear vision of the product supported by graphs and documentation, as well as a full set of tasks for the team. With this background prepared, we can move on to developing the application to meet our client’s needs. You can find out more about our services here.

In order to allow a client to check the progress of the project we used a CI/CD system for generating an easy-to-use installer, every time new changes are applied to the app. CI/CD system provides another advantage – it builds an app on every code update and runs tests, allowing it to maintain high-quality and stable code.

Qt QML and C++ development part

We started by creating the heart of the launcher – the games section. In this part of the application, all information about the available games are being displayed. From there, the user can perform a wide variety of game-related actions: download, update, repair, adjust settings, select desired servers and channels.

Most operations are performed on live data fetched from the server, so this could cause issues with long loading times caused by data handling. With logic implemented in C++ language, we were able to provide lightning-fast data parsing, so that the user experience of using the app is smooth and responsive.

 

Qt QML application development

 

The next important section was the news tab, where users can find many types of content related to the games. To offer the experience closest to browsing the news web page, we used WebView which is a headless web browser allowing to render HTML content. This approach allows embedding many types of media easily in each post in the news section. Posts can include media such as YouTube videos, images, styled text and many more.

 

Qt QML app development

One of the critical functionality was the launcher’s self-updating system. In order to implement such functionality we created a stand-alone maintenance tool. This automatic launcher care system allows one to check on startup if any of the launcher files require an update and if so, runs a download system that updates those files without any unnecessary user involvement.

This system not only makes sure launcher and game files are up to date but also ensures none of the files is corrupted or modified to perform any harmful activities. To speed up the file verification process, we used the Qt Concurrent module, which allows multiple tasks to be performed simultaneously in an optimal way.

 

Qt Framework desktop applications development

How do we work on such projects?

The project was divided into several milestones. Therefore, we needed to provide the customer with flexibility in terms of the team members. In various stages of the project, a different number of our Qt software developers were assigned.

The best way to work on evolving projects is by agreeing on outsourcing our engineers along with the team leader or project manager. Then, the customer contacts Scythe Studio’s representative responsible for the project and they orchestrate the work of software engineers.

Of course, there is also a possibility to outsource the developers alone in case you want to organize their work on your own. That may be the case if you already have an existing team of specialists that you want to fuel with external Qt consulting experts.

On this page, we explain all of our service options in detail. Check it out to see which one would work best for you. One of our main values is the fact that usually we join projects fast.

Customer’s testimonial and opinion on our Qt QML

There are many factors that can describe the success of software development, but in Scythe-Studio we believe that client satisfaction is the most important one. So does Ricky, the Eonic Games Launcher originator, think about our Qt QML desktop application development services?

 

Summary

Delivering a high-quality software project is not only a matter of resolving technical problems in code and handling specific use cases. It is also about making sure that you share the same vision of the project as a client, focusing not only on end-user but also client satisfaction, and providing maintainable products.

This is why you should put your project in the hands of reliable, professional Qt experts from Scythe Studio. Depending on your needs, we can develop desktop, mobile, cross-platform apps or even ones for embedded devices. Forge your ideas into business, by contacting us today!