File:  [NetBSD Developer Wiki] / wikisrc / projects / project / ui-plugins-for-games.mdwn
Revision 1.1: download - view: text, annotated - select for diffs
Wed Apr 2 15:24:58 2014 UTC (5 years, 7 months ago) by dholland
Branches: MAIN
CVS tags: HEAD
Add four new desktop-related projects.

[[!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