KDE Games/Tagaro: Difference between revisions

From KDE Community Wiki
(FAQ++)
Line 18: Line 18:
: Even earlier if you help out. :-) But seriously, I hope to get first parts into the 4.7 release.
: Even earlier if you help out. :-) But seriously, I hope to get first parts into the 4.7 release.


== Library layout ==
== Planned library layout ==


TODO
In the initial design, I plan to create multiple libraries, to allow each application to link only those libraries which are necessary for the particular application. We will evaluate at a later point whether the modularization is worth the effort.
 
=== libtagarocore ===
 
;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.
 
=== libtagarographics ===
 
;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 [http://api.kde.org/4.x-api/kdegames-apidocs/libkdegames/html/classKGameTheme.html KGameTheme])
* single SVG or bitmap images (like currently managed e.g. by [http://api.kde.org/4.x-api/kdegames-apidocs/libkmahjongg/html/classKMahjonggBackground.html 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.)
 
=== libtagarointerface ===
 
;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).
 
=== libtagarogaming ===
 
;Status: to be done
 
There is the [http://api.kde.org/4.x-api/kdegames-apidocs/libkdegames/kgame/html/index.html 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?)
* handling of input events (I envision an input framework that recognizes the context of input events, rather than just their receiver, like QtGui does; Palapeli has something like this, though with some serious design flaws)

Revision as of 21:25, 23 August 2010

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.

Planned library layout

In the initial design, I plan to create multiple libraries, to allow each application to link only those libraries which are necessary for the particular application. We will evaluate at a later point whether the modularization is worth the effort.

libtagarocore

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.

libtagarographics

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.)

libtagarointerface

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).

libtagarogaming

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?)
  • handling of input events (I envision an input framework that recognizes the context of input events, rather than just their receiver, like QtGui does; Palapeli has something like this, though with some serious design flaws)