Wie ein amerikanisches Gaming-Studio seine kreativen Prozesse mit einer maßgeschneiderten Desktop-App optimierte

Project overview
Die Geschichte eines führenden plattformübergreifenden Multiplayer-Spieleentwicklungsstudios, das seinen Entstehungsprozess dank eines maßgeschneiderten Content-Management-Systems beschleunigte
Inside this article
Überblick
Jackbox Games (Funkmaster) ist ein spezielles Content Management System für Jackbox Games Inc., Marktführer im Bereich Partyspiele, Autor von Titeln wie den Serien „The Jackbox Party“, „Fibbage“, „Quiplash“ oder „YOU DON'T KNOW JACK“. Ein in Electron entwickeltes Tool wird von Autoren, Redakteuren und Medienkünstlern für Quizfragen verwendet, die zusammenarbeiten, um die Inhalte für die einzelnen Jackbox Games Inc. effizient vorzubereiten.
Herausforderung
Obwohl die Projektidee darin bestand, eine neue Version eines Tools zum Erstellen, Bearbeiten, Verwalten und Veröffentlichen der Inhalte für Jackbox Games zu entwickeln, gab es mehrere Herausforderungen:
- den Arbeitsablauf zwischen Autoren, Sprechern, Redakteuren und Spieleentwicklern von Spielinhalten (und damit deren Produktivität) verbessern,
- bieten eine großartige Benutzererfahrung,
- frischen Sie das Aussehen und das Feel einer alten App auf, indem Sie eine neue, trendige Benutzeroberfläche erstellen,
- verwenden die neuesten und zuverlässigsten Technologien, um einen langen App-Lebenszyklus und eine hohe Erweiterbarkeit zu gewährleisten,
- erstellen Sie eine eigenständige App, unabhängig vom Betriebssystem (dank Electron).

Lösung
Die größte Herausforderung, vor der wir bei der Entwicklung von Jackbox Games (Funkmaster) standen, war die Integration mit Perforce. Leider gab es keinen nativen Perforce-Client für node.js. Das bedeutete, dass wir einen Client und einen Model Manager von Grund auf neu schreiben mussten.
Nachdem dieses Hindernis überwunden war, mussten wir dafür sorgen, dass es nahtlos mit der Desktop-Anwendung funktioniert, ohne auf die Dateien im Dateisystem zugreifen zu müssen, um eine Aufgabe auszuführen. Außerdem musste der Benutzer in der Lage sein, Suchanfragen nicht nur auf der Grundlage der Metadaten der Fragen, sondern auch auf deren Inhalt durchzuführen, und wir mussten verhindern, dass mehr als ein Benutzer dieselbe Frage (in irgendeiner Weise) änderte.
Wir haben diese Probleme gelöst, indem wir eine Datenbankebene zwischen dem Perforce-Client und der Anwendung hinzugefügt haben. Die Datenbank funktioniert mit der Indexierung der Fragen (sowohl Metadaten als auch Inhalte), was eine effiziente Suche in jedem Feld und einen schnellen Zugriff auf den Inhalt ermöglicht. Zusätzlich würden wir den Status der Fragen speichern (d. h. ob ein Benutzer eine bestimmte Frage bearbeitet), um zu vermeiden, dass dieselbe Datei gleichzeitig bearbeitet wird. Diese Änderungen würden in Echtzeit an die Benutzer der Desktop-Anwendung mit WebSockets übertragen.

Technologie-Stack
Die Anwendung wurde auf dem Electron-Framework aufgebaut und verwendete React zum Schreiben der Komponenten und Redux zur Verwaltung des Zustands. Das Backend war für die Integration von Perforce CMS in die Desktop-Clients verantwortlich. Wir verwendeten Express, um die Anfragen zu bearbeiten, und eine MongoDB-Ebene, um den Inhalt von Perforce-Depot zu indizieren, sodass die Benutzer schnell nach den im Depot gespeicherten Inhalten suchen konnten. Darüber hinaus verwendeten wir SocketIO an beiden Enden, um eine Kommunikation in Echtzeit zu erreichen und sicherzustellen, dass die Kunden immer mit aktuellen Daten arbeiteten.