KDE Games/Tagaro

From KDE Community Wiki

Tagaro is the top secret codename for my redesign of libkdegames.

Goals

  • deprecate unmaintained frameworks like KExtHighscore
  • create tools that allow KDE games to scale to new form factors
  • use new and state-of-the-art Qt and KDE technology to its full extent

FAQ

Where is the code?
Clone the repository from my Git server. I want to move it to git.kde.org when this becomes available, but it is not yet. If you want to participate, send me your push requests. I can also give you commit access, or put it on a more publicly available place, if you plan to work on it regularly.
What does the name mean?
Tagaro is an oceanic deity which is said to have created mankind in a game of bowling. A perfect fit for a library which allows you to create games.
Is its feature set/API/ABI stable?
No way. Work has just begun, and we're by far not done desigining and implementing everything.
When will it be ready?
Even earlier if you help out. :-) But seriously, I hope to get first parts into the 4.7 release.

Modules

Core

Status
configuration facilities are available

This library will (if necessary) define common data types used throughout the other Tagaro libraries.

libtagarocore also provides configuration facilities in order to allow users and packagers to control the behavior of all Tagaro-based games from one central point.

Graphics

Status
mostly finished; support for bitmap images missing

libtagarographics manages and renders theme components. Possible theme formats include:

  • SVG-based component themes (like currently managed by KGameTheme)
  • single SVG or bitmap images (like currently managed e.g. by KMahjonggBackground)

The KGameRenderer framework has become a part of libtagarographics for this purpose.

Furthermore, libtagarographics provides some convenience classes for embedding these theme components into QGraphicsView and possibly QDeclarativeView. (We have not made a final decision whether Tagaro will have built-in QML support.)

Interface

Status
to be done

Today, the user experience of our KDE games resembles very much the interface of desktop GUI applications: They have a menubar, a toolbar, a statusbar. There is no homogeneous API for on-screen game interface elements.

libtagarointerface will provide these on-screen game interface elements, and automatically substitute them for the traditional KXmlGuiWindow chrome on mobile devices, or in fullscreen mode (which will be available to all games automatically).

Input

Status
to be done

This is where the dreaming starts. :-D

I envision an input framework that recognizes the context of input events, rather than just their receiver, like QtGui does. Palapeli has something remotely similar with its InteractorManager, but these classes have serious design flaws.

Gaming

Status
to be done

There is the KGame namespace in libkdegames, which provides an abstraction for general game components (like players, data exchange in network games, chat channels). Like most parts of libkdegames, KGame is near ancient, and (from what I can see) cannot easily be used with current data exchange frameworks like Telepathy.

More?

We certainly need more modules for Tagaro, for example for...

  • multiplayer networking (GGZ, Telepathy, Jabber, or whatever provides a solid base)
  • sound output (from our experience, Phonon and KNotify are not up to the task; GluonAudio or OpenAL might be candidates; or an abstraction layer that can switch between multiple output channels?)
  • social gaming (definitively an area to collaborate with the Gluon people on)