Aplikacja desktopowa Qt QML – Launcher do gier case study

Szeroki wybór modułów Qt pozwala na stworzenie dowolnego typu produktu. Przykładem może być opisany przez nas panel sterujący wojskowym robotem, czy projekt, który mieliśmy przyjemność wdrażać – aplikacja uruchamiająca i aktualizująca gry. Jeżeli ciekawi Cię, jak przebiegał proces tworzenia takiego oprogramowania, to pozostań z nami. Pamiętaj, że z resztą naszych projektów możesz zapoznać się w naszym portfolio.

Technologie

Przeznaczenie i wymagania

Eonic Games Launcher to platforma służąca do zarządzania grami komputerowymi wydanymi przez Eonic Games Company. Oprogramowanie to aktualnie działa na urządzeniach z systemem operacyjnym Windows (Choć sam Launcher może zostać uruchomiony na przykład w systemie Linux). Główną ideą projektu było umożliwienie graczom łatwego pobierania, aktualizowania i zarządzania posiadanymi grami. Wszystko to za pomocą przykuwającej oko i łatwej w obsłudze aplikacji. Dodatkowo launcher miał być miejscem skupiającym nie tylko gry, ale także wszelkie treści powiązane z Eonic Games i ich działalnością – czyli m.in. newsy, filmy i wpisy na blogu, aby użytkownicy byli ze wszystkim na bieżąco.

Jednakże tego typu aplikacja nie mogłaby funkcjonować samodzielnie. Kluczową rolę w tworzeniu aplikacji odgrywają tutaj backendowe usługi. W przypadku Eonic Games Launcher były to dwa, niezależne serwery: pierwszy bazujący na obustronnej komunikacji TCP, a drugi oparty na protokole HTTP. Zastosowanie takiego podziału było wymagane ze względu na wprowadzenie w przyszłości kolejnych funkcji.

Tym samym naszym zadaniem było stworzenie GUI aplikacji przy wykorzystaniu Qt Quick wraz z logiką do przetwarzania wszystkich danych oraz procesów. Ze względu na to, że branża gier skupia się głównie na platformie Windows, to właśnie ten system operacyjny był docelowy dla tworzonej aplikacji.

Framework Qt jest świetny!

Qt jest doskonały do tworzenia aplikacji, zwłaszcza takich jak opisywany projekt. To wybór odpowiedni nie tylko dla rozwoju aplikacji, ale również ze względu na różne funkcje logiki biznesowej wchodzące w skład frameworka. Zaliczyć do nich możemy między innymi funkcjonalności oparte na wykorzystaniu baz danych czy komunikację sieciową. Qt oferuje szeroki zakres łatwych w użyciu narzędzi, co sprawia, że proces tworzenia aplikacji jest niezwykle wygodny i szybki.

Technologia ta jest z powodzeniem wykorzystywana w branży gier komputerowych, czego przykładem mogą być launchery do takich produkcji jak „Mount & Blade: Warband”, czy „Age of Wonders III”. Nawet duże firmy używają Frameworka Qt do swoich aplikacji – Origin i Battle.net to świetne przykłady aplikacji desktopowych z przyjemnym interfejsem napisanym we wspomnianym frameworku.

Należy jednak pamiętać, że ta technologia nie ogranicza się tylko do aplikacji desktopowych, z jej pomocą można tworzyć aplikacje mobilne, cross-platformowe lub na systemy wbudowane.

Dlaczego padło na Qt przy realizacji tego projektu?

Wybór Frameworka Qt jako głównej technologii i frameworka GUI w tym projekcie był świetnym rozwiązaniem, które spełniło oczekiwania klienta. Przede wszystkim framework ten bazuje na języku C++, który słynie ze swojej wysokiej wydajności. Dzięki temu wrażenia użytkownika nie zostaną zakłócone przez długie czasy ładowania lub słabą obsługę zasobów podczas bardziej złożonych operacji, takich jak np. sprawdzanie integralności plików gry.

Ponadto Qt umożliwia integrację wielu zróżnicowanych bibliotek C++, co pozwala zaosczędzić mnóstwo czasu. Nie musimy tworzyć pewnych funkcji od zera i istniejące rozwiązania możemy wygodnie wdrożyć w dowolnym miejscu w projekcie.

Kolejnym sporym plusem tej technologii jest moduł QtQuick, który umożliwia użycie języka QML do tworzenia aplikacji. Zapewnia on szereg komponentów pozwalających na stworzenie zaawansowanego interfejsu użytkownika przy wykorzystaniu języka QML. . Jest to świetne narzędzie do tworzenia responsywnego, przyjaznego użytkownikowi graficznego interfejsu z płynnymi animacjami.

QML został stworzony przy wykorzystaniu C++ i uruchamia się on natywnie na docelowym urządzeniu, używając akceleracji sprzętowej. QML może być kompilowany zarówno metodą JIT(Just In Time), jak i metodą AOT (Ahead Of Time). W połączeniu z intuicyjną składnią, daje to naprawdę potężne narzędzie – to właśnie dlatego użyliśmy go wraz z modułem QtQuick przy tworzeniu interfejsu Eonic Games Launcher.

Qt posiada szeroką ofertę narzędzi, które ułatwiają życie zarówno programistom, jak i projektantom. Przykładami są Qt Creator – zintegrowane środowisko programistyczne dedykowane Qt QML oraz Qt Design Studio – narzędzie pozwalające tworzyć interfejs użytkownika niemal bez programowania. Istnieje nawet możliwość wyeksportowania projektu z programu Figma bezpośrednio do języka QML.

Czy Qt i Qt Quick to właściwy wybór do tworzenia cross-platformowych aplikacji desktopowych?

Mimo, że aplikacja została wydana na jednej platformie to nadal może działać na systemach MacOS oraz Linux. W rzeczywistości Qt jest jednym z najlepszych frameworków do tworzenia wieloptlatformowych aplikacji desktopowych. W tym poście porówaliśmy Qt z innymi frameworkami, aby sprawdzić który z nich jest najlepszy do tego celu.

Właściwie to lubimy nazywać Qt technologią, która wspiera największy zakres platform sprzętowych i systemów operacyjnych. Qt nie ogranicza się tylko do platform desktopowych – pozwala na tworzenie zarówno aplikacji mobilnych, jak i takich, które skupiają się docelowo na systemach wbudowanych. To wszystko wykorzystując jedną i tą samą bazę kodu. Istnieje nawet możliwość tworzenia aplikacji internetowych wykorzystując właśnie ten framework.

Realizacja projektu i trudności, które napotkaliśmy

Życie oprogramowania o wysokiej jakości nie zaczyna się wraz z powstaniem pierwszych linijek kodu. Jego narodziny mają miejsce już znacznie wcześniej – podczas fazy konsultacji. W Scythe Studio oferujemy wszechstronne usługi konsultacyjne, a także kompleksowy projekt architektury dla każdego z klientów, którzy wybrali nasze usługi. W tej fazie projektu dogłębnie analizujemy wymagania oraz potrzeby klienta, a także przypadki użycia i wiele innych czynników. Taka analiza daje nam pełną wizję finalnego projektu, wspieraną odpowiednimi wykresami oraz dokumentacją. Pomaga ona w stworzeniu zestawu zadań dla całego zespołu. Z takim przygotowaniem możemy przejść do tworzenia aplikacji zgodnej  z potrzebami klienta. Więcej o naszych usługach możesz dowiedzieć się tutaj.

Aby klient posiadał stały wgląd w prace nad projektem, wykorzystaliśmy system CI/CD, który pozwalał generować łatwe w użyciu pakiety instalacyjne za każdym razem, gdy wprowadzaliśmy zmiany w aplikacji. System ten posiada także inną zaletę – aplikacja jest budowana po każdej aktualizacji kodu, a następnie jest ona testowana, dzięki czemu możemy dostarczać stabilny i wysokiej jakości kod.

Część Qt QML i C++

Prace rozpoczęliśmy od stworzenia serca launchera – sekcji gier. W tej części aplikacji wyświetlane są wszelkie informacje na temat dostępnych produktów. To w tym miejscu użytkownik może na rozmaity sposób zarządzać swoimi grami – pobierać, aktualizować, naprawiać je, dostosowywać ustawienia, wybierać serwery i kanały oraz wiele więcej. Większość operacji wykonywana jest na danych pobieranych z serwera. Przetwarzanie takiej ilości informacji mogłoby skutkować długim czasem ładowania, lecz udało nam się rozwiązać ten problem przy użyciu logiki wdrożonej w języku C++. Dzięki niej byliśmy w stanie zapewnić efektywne oraz szybkie zarządzanie danymi, przekładające się na zwiększenie wrażeń z użytkowania aplikacji.

 

Qt QML application development

 

Kolejną, ważną sekcją aplikacji jest sekcja z newsami. To w niej użytkownicy mogą znaleźć wszelkie wiadomości i informacje związane z grami. Aby zapewnić wrażenia najbardziej zbliżone do przeglądania newsów w przeglądarce, skorzystaliśmy z WebView. Obiekt ten działa jak okno przeglądarki, wyświetlając zawartość strony HTML. Takie rozwiązanie pozwala na łatwe osadzenie wielu różnorodnych mediów w sekcji newsów. W pojedynczym wpisie mogą więc znaleźć się filmy, zdjęcia, załączniki YouTube, teksty stylizowane i wiele innych elementów typowych dla stron internetowych.

 

Qt QML app development

 

Jedną z kluczowych funkcji jest system automatycznej aktualizacji  samego launchera. W tym celu stworzyliśmy więc odrębne narzędzie do zarządzania plikami głównej aplikacji.

Narzędzie to sprawdza przy uruchomieniu, czy jakiekolwiek pliki launchera wymagają aktualizacji, a także czy instalacja nie zawiera uszkodzonych lub zmodyfikowanych plików. W każdym z tych przypadków narzędzie przywróci odpowiednie pliki do ich najbardziej aktualnej wersji. Aby przyśpieszyć proces weryfikacji plików wykorzystaliśmy moduł QtConcurrent, który pozwala na wykonanie wielu zadań równocześnie w optymalny sposób.

 

Qt Framework desktop applications development

 

Jak pracujemy nad takimi projektami?

Projekt został podzielony na kilka kamieni milowych. Z tego powodu musieliśmy zapewnić klientowi elastyczność w zakresie członków zespołu. Na poszczególnych etapach realizacji projektu przydzieliliśmy różną liczbę naszych programistów w zależności od skomplikowania etapu.

Najlepszym sposobem realizacji projektów, które stale się rozwijają jest uzgodnienie outsourcingu naszych programistów wraz z liderem zespołu lub project managerem. Dzięki temu klient kontaktuje się z osobą odpowiedzialną za projekt, aby organizować pracę zespołu.

Istnieje również możliwość powierzenia samych programistów, kiedy zależy Tobie na samodzielnej organizacji ich pracy. Jeżeli masz istniejący zespół specjalistów to możesz zasilić ich zewnętrznymi ekspertami Qt.

Na tej stronie znajdziesz opisane szczegółowo opcje naszych usług. Możesz sprawdzić, która z nich będzie dla Ciebie najlepsza. Warto wspomnieć o tym, że zazwyczaj szybko zasilamy istniejące projekty.

Opinia klienta o naszych usługach Qt QML

Istnieje wiele czynników decydujących o sukcesie osiągniętym przez oprogramowanie. W Scythe Studio wierzymy jednak, że satysfakcja klienta jest najważniejszą składową tego sukcesu. Co o naszych usługach tworzenia aplikacji desktopowych Qt QML sądzi Ricky –  pomysłodawca Eonic Games Launcher?

 

Podsumowanie

Dostarczenie wysokiej jakości produktu nie polega jedynie na rozwiązaniu problemów natury technicznej, czy obsłużeniu konkretnych przypadków wykorzystania aplikacji. Równie ważne jest zrozumienie wizji klienta, skupiając się nie tylko na wrażeniu użytkownika końcowego, ale także na satysfakcji pomysłodawcy i pełnej funkcjonalności finalnej aplikacji.

To właśnie dlatego swój projekt możesz powierzyć zaufanym ekspertom Qt z Scythe Studio. W zależności od Twoich potrzeb możemy stworzyć aplikacje desktopowe, mobilne, cross-platformowe, a nawet te na systemy wbudowane. Skontaktuj się z nami już teraz, a pomożemy Ci przekształcić Twoje pomysły w wysokiej jakości oprogramowanie!