[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

GUI draft - index



Hi,


Here's the main page of my GUI draft. Please add your comments...


----------------------------------------
<h1 align=center>The PenguinPlay GUI subsystem</h1>


<br>
<h3>Disclaimer (or so)</h3>

<p>This set of documents describes our current reflections about the
PenguinPlay GUI system. Most of these items are subject to change in the
near future.</p>

<p>The intention behind these texts is to give a first impression to
the "rest of the world" and to provide a base for discussion. This
discussion wil mainly be in the mailing list, but everyone is strongly
encouraged to write
<a href="mailto:warewolf@chris.mayn.de?Subject=GUI-comments">me</a>
a personal e-mail with her/his comments</p>


<br>
<h3>Why would anyone want to use a GUI system in games??</h3>

<p>
Well, actually almost every game I saw up to now used some kind of GUI
elements. This becomes clear if "GUI" is not interpreted in the conventional
sense as something looking like Wind*ws etc but literally - "GUI" standing
for "Graphical User Interface", i.e. something presenting information
graphically to the user and optionally accepting user input.</p>

<p> As this description is quite abstract, I'll list a few examples of GUI
usage in games:</p>
<ul>
	<li>The status bar (= GUI window) of a 3d shooter, containing an lcd
		ammo counter (= numeric value display 1), a bar showing
		the player's health (= numeric value display 2) etc.</li>
	<li>The cockpit (= GUI window) of a flightsim, containing several
		gauges (= numeric value displays), a MFD (subscreen emulation
		(explanation later)), damage indicators (boolean value displays) etc. </li>
	<li>The character screen of a RPG, showing the inventory boxes (image
		containers), the character's name (text edit box), his/her race
		(text display box), abilities (numeric value displays) etc.
	<li>A mouse pointer ;)</li>
</ul>

<p>Using this view of a "GUI" it should be clear that all but the simplest
games will use it somehow.</p>


<br>
<h3>Ok, I see. So what exactly will it have to cover?</h3>

<p>As showed above the GUI system would have to be extremely tolerant about
the graphical representation of its components, while still providing
most of the functionality of conventional GUIs. It however will not be used
(in contrast to the conventional gui systems) to create entire applications,
but for adding GUI elements to non-GUI-based programs.</p>

<p>"But," you will ask, "how can such vastly different, often totally
unconventional and weird GUIs be supported by some general GUI system?
Pushbuttons for example usually are not rectangular and monochrome, but
may look like Bill Clinton, a whisky bottle or a mountain!".</p>

<p>Well, you're totally right - it can't be done with a widget library like
the ones used for all these neat GUI applications. It is impossible to
provide more than a framework. But if such a framework exists and if it
is neatly integrated into Penguinplay, if it is quite powerful, versatile,
consistent and easily extensible we would have a base on which concrete
GUI components could be built quite easily. And as we are dealing with free
software, I'm sure that quite soon a library of more or less specific GUI
components and -primitives will develop.</p>

<p>So what can be done as this framework? Here is a list of concepts and
generally things that could (and should) be covered:

<ul><a name="gui_parts"></a>
	<li>Support for a <a href="mouseptr.html">Mouse Pointer</a></li>
	<li>A <a href="kb_buffer.html">keyboard buffer</a></li>
	<li><a href="signals.html">Inter-component communication</a>
		(GUI events/signals and Drag'n'Drop support)</li>
	<li>A <a href="window.html">Window primitive</a></li>
	<li>A general <a href="widget.html">Widget primitive</a></li>
	<li><a href="sysevent.html">System event translation</a></li>
	<li>Some more or less concrete
		<a href="basecomp.html">widget implementations</a>
</ul>


<br>
<h3>Well, how could this be realized?</h3>

<h4>(1) Component appearance</h4>

<P>As the major difference between "standard" GUIs and this one is the
diversity in the component "looks", let's start with this point.</P>

<p>As you surely have noticed most GUI-like elements in games are displayed
using some kind of pixmaps, so the GUI system should at least be able to
handle pixmap-based components. Currently we are even extending this
functionality by using the general notion of "2D images" as graphical
representation of the GUI components.</p>

<p>This concept of "2D images" covers static pixmaps, pixmap animations
and maybe also vector images, solid-color-areas and propably some more
(this is still being discussed). As a result, we could not only support
pushbuttons looking like roger rabbit but also some looking like him and
starting to eat a carrot when pushed ;-)</p>

<p>And if also vector images are supported, it would be quite easy to
design a GUI with a conventional look&feel. For more information about this
2d image concept you should have a look at the PenguinGraphics Page
(LINK COMING SOON!)</p>

<p>For displaying the GUI components the 2D API (Layer O) will be used.</p>

<br>
<h4>(2) Timing</h4>

<p>The entire GUI system is (as almost the entire PenguinPlay API) event
driven. For more information on this check the PenguinPlay event manager
docs, the document about <a href="signals.html">GUI events and signals</a>
and the section "Overall control" below.</p>

<br>
<h4>(3) Overall control</h4>

<p>There has to exist some instance taking care of the
<a href="mouseptr.html">mouse pointer</a>,
<a href="sysevent.html">translating system events</a> according to the
specific needs of the GUI, keeping track of the active window (if any) etc.
</p>

<p>I'm currently thinking of some "GUI Control Center" object (existing
only once) for that purpose, but this issue can change drastically in the
near future. I'll keep you informed.</p>

<br>
<h4>(4) And the details??</h4>

<p>Just check <a href="#gui_parts">the links above</a> about that - it's
simply too much stuff for this document ;-)</p>


<br>
<h3>Final words</h3>

<p>Comments are of course always welcome - just drop
<a href="mailto:warewolf@chris2.mayn.de?Subject=GUI-Comments">me</a>
some lines.</p>

<p>If you want to participate in the project, please mail
<a href="mailto:warewolf@chris2.mayn.de?Subject=PPlay-membership">me</a>
or
<a href="mailto:a.ratnapala@mailbox.uq.edu.au?Subject=PPlay-membership">Adrian</a>
(the graphics team leader)!</p>

<p>In any case (even if you just want to stay up-to-date about the project)
I strongly advise you to subscribe to one (or more) of our mailing lists
(PLEASE INSERT LINK).</p>

<br>
<br>
<p><font size=-1>This document was written by
<a href="mailto:warewolf@chris2.mayn.de">Christian Reiniger</a>. Last
modification: 12.03.1998</font></p>


-----------------------------------------------


Cu
        Christian


Christian Reiniger (Germany)
e-mail: warewolf@chris2.mayn.de