KDE Games/Porting

From KDE Community Wiki

Targets of porting

  • Rendering method: Current solutions commonly include usage of a QSvgRenderer, combined either with QGraphicsSvgItems or with (Q/K)PixmapCache. It is suggested to migrate to KGameRenderer instead. Integration with QGraphicsView is available through the KGameRenderedItem and KGameRenderedObjectItem classes. Integration with KGameCanvas is available through the KGameCanvasRenderedPixmap.
  • (more to come)

Porting status

The second column shows which graphics stack (e. g. QGraphicsView, KGameCanvas) is used by the application. The third column shows the rendering method.

If you want to take part in porting, pick an app, contact the author or the kde-games-devel mailing list to coordinate your effort, read into the KGameRenderer APIDOX and start hacking! Please note that this porting effort is mainly about porting rendering code to KGameRenderer. Usage of outdated graphics stacks should not be changed because this might cause severe and non-trivial bugs.

Warning: It is advised not to use the primaryView property of KGameRenderedObjectItem class in new ports. The existing ports using it (KDiamond and Klickety/KSame) made it clear that the primaryView property has design flaws (concerning performance), so it will probably be removed again.

Application Graphics stack Rendering method Who does/did the port? (if applicable)
bomber KGameCanvas KGameRenderer Stefan Majewsky
bovo QGraphicsView QGraphicsSvgItem
granatier QGraphicsView QGraphicsSvgItem and KPixmapCache Mathias Kraus (I had already a look at it and it seems to be easy doable, but I have limited time at the moment, so if this isn't done in some time and someone wants to do the porting, please contact me first, ot get the porting status)
kajongg QGraphicsView libkmahjongg
kapman QGraphicsView QGraphicsSvgItem
katomic QGraphicsView KGameRenderer Brian Croom
kbattleship QGraphicsView PixmapCache
kblackbox QGraphicsView QGraphicsSvgItem
kblocks QGraphicsView QGraphicsSvgItem Brian Croom
kbounce KGameCanvas KPixmapCache
kbreakout KGameCanvas KGameRenderer Brian Croom
kdiamond QGraphicsView KGameRenderer Stefan Majewsky
kfourinline QGraphicsView PixmapCache (and classes similar to KGameRendererClient)
kgoldrunner KGameCanvas KPixmapCache
kigo QGraphicsView KPixmapCache
killbots QGraphicsView KGameRenderer Parker Coates
kiriki QWidget with pre-rendered PNG N/A
kjumpingcube QWidget simple QSvgRenderer::render()
klickety/ksame QGraphicsView KGameRenderer (native QGV/KGR app)
klines QGraphicsView KPixmapCache Lindsay Mathieson (Blackpaw)
kmahjongg KGameCanvas libkmahjongg
kmines QGraphicsView KGameRenderer Brian Croom
knetwalk QGraphicsView KGameRenderer Brian Croom
kolf QGraphicsView KGameRenderer Stefan Majewsky
kollision QGraphicsView KGameRenderer Brian Croom
konquest QGraphicsView KPixmapCache
kpat QGraphicsView KGameRenderer Parker Coates
kreversi QGraphicsView KGameRenderer Brian Croom
kshisen QWidget libkmahjongg
ksirk QGraphicsView QGraphicsSvgItem and KPixmapCache
kspaceduel QGraphicsView QGraphicsSvgItem
ksquares QGraphicsView N/A N/A
ksudoku QGraphicsView KPixmapCache
ktron QWidget KPixmapCache
ktuberling QGraphicsView QGraphicsSvgItem
kubrick QGLWidget N/A N/A
libkmahjongg N/A QPixmapCache Stefan Majewsky (the special needs of libkmahjongg will be addressed by Project Tagaro)
lskat QGraphicsView PixmapCache (and classes similar to KGameRendererClient)
palapeli QGraphicsView N/A N/A