[[!template id=project
title="User interface plugins for games"
contact="""
[tech-x11](mailto:tech-x11@NetBSD.org),
[tech-toolchain](mailto:tech-toolchain@NetBSD.org),
"""
category="desktop"
difficulty="medium"
description="""
Some of the games in base would be much more playable with even a
simple graphic interface.
The card games (e.g. canfield, cribbage) are particularly pointed
examples; but quite a few others, e.g. atc, gomoku, hunt, and sail if
anyone ever fixes its backend, would benefit as well.
There are two parts to this project: the first and basically mostly
easy part is to pick a game and write an alternate user interface for
it, using SDL or gtk2 or tk or whatever seems appropriate.
The hard part is to arrange the system-level infrastructure so that
the new user interface appears as a plugin for the game that can be
installed from pkgsrc but that gets found and run if appropriate when
the game is invoked from /usr/games.
The infrastructure should be sufficiently general that lots of
programs in base can have plugins.
Some things this entails:
* possibly setting up a support library in the base system for program
plugins, if it appears warranted;
* setting up infrastructure in the build system for programs with
plugins, if needed;
* preferably also setting up infrastructure in the build system for
building plugins;
* choosing a place to put the header files needed to build external
plugins;
* choosing a place to put plugin libraries, too, as there isn't a
common model out there yet;
* establishing a canonical way for programs in base to find things in
pkgsrc, which is not technically difficult but will require a lot of
wrangling to reach a community consensus;
* setting up any pkgsrc infrastructure needed to build plugin packages
for base (this should take little or no work).
It is possible that plugins warrant a toplevel directory under each
prefix rather than being stuffed in lib/ directories; e.g.
/usr/plugins, /usr/pkg/plugins, /usr/local/plugins, so the
pkgsrc-installed plugins for e.g. rogue would go by default in
/usr/pkg/plugins/rogue.
Note that while this project is disguised as a frivolous project on
games, the infrastructure created will certainly be wanted in the
medium to long term for other more meaty things.
Doing it on games first is a way to get it done without depending on
or conflicting with much of anything else.
"""
]]
CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb