Improved UI 2013: Difference between revisions

From PSwiki
Jump to navigation Jump to search
Weltall (talk | contribs)
No edit summary
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
(Go back to the main [[GSoC_2012|GSoC 2012]] page)
(Go back to the main [[GSoC_2013|GSoC 2013]] page)


== UI In PlaneShift : PAWS ==
http://www.atomicblue.org/ui.png


The UI in PlaneShift is managed by a library called PAWS (PlaneShift Alternate Windowing System or PlaneShift Acraig Windowing System), where acraig is the creator of the system.
__NOTOC__


The library is made of C++ classes to define a widget and an associated XML file which describes the layout and formatting.
== Skills needed ==


Read more about the [http://planeshift.ezpcusa.com/pswiki/index.php?title=GUI syntax and usage here].
For this project C++ knowledge is needed, and basic knowledge of XML. No MySQL knowledge is required.


== Skills needed ==
== Overview ==
 
The UI in PlaneShift is managed by a library we created called PAWS (PlaneShift Alternate Windowing System). The library is made of C++ classes to define a widget and an associated XML file which describes the layout and formatting. It keeps a separation between the presentation layer and the logic layer. The core library (/src/common/paws) defines basic items such as windows, labels, checkboxes, button, etc.., then the UI game engine (/src/client/gui) defines a set of windows to be used in the client, built by the core pieces. This GSoC project includes improvements to the quick bar, to the help system, enhancement to the Container System, better skin management, new spellcasting widget, overall improvements to windows resizing.
 
To become more familiar with the UI, you can review the following:
* An example of how to [[Create New Widget|create a new widget]]
* An example of how to [[How to create a new window|create a new window]]


For this project C++ knowledge is needed, and basic knowledge of XML. No MySQL knowledge is required.
As a reference, here is the [[PAWS specification]]


== Improvements needed ==
== Improvements needed ==


* '''Active magic window''': today whenever you cast a buff spell on yourself, or when someone casts a debuff spell on you, the magic window opens showing all the buffs and debuffs, that's very annoying and clutters the screen. We want to remove this window and just have a series of icons on the top right corner with all the active buff and debuffs. This is a kind of toolbar, but just with the icon. Mouse-overing on the icons will tell you the type of spell and the duration.
* '''Progress bars''' Allow to show progress bars in items icons when work is being done on them, or when a spell is expiring.
* '''Hot bar''': for spells and items, with support for multiple rows, which can be resized and hidden.(medium)
* '''Active spell window''': This window has been constructed in the past to be a very simple list, but now this is not sufficient anymore. We need the window to be more similar to a shortcut bar, with icons for each active effect, have trasparent background and be smart in positioning/layout to host multiple icons when needed.
* '''New spell casting widget''': Spell casting today is not very handy, as casting a spell requires you to set the power bar manually, a new widget could allow selection of spell and power bar in the same widget.
* '''Shortcut window''' Improvements to this window allowing to add an arbitrary amount of shortcuts (or remove them from the list so there aren't hundred of empty boxes around). Allowing drag and drop position exchanging of shortcuts and copy and paste.
* '''Changing skin in game''': at the moment to change skin you need to restart the game. Will be good to allow changing of skin from in game.
* '''Help system''': add capability to incorporate 3d objects in the help widget, make it more configurable, context sensitive and allow links to other topics. Could be doable to put links support to other widgets in addition to the ones regarding the help system for example quests. (easy)
* '''Help system''': add capability to incorporate 3d objects in the help widget, make it more configurable, context sensitive and allow links to other topics. Could be doable to put links support to other widgets in addition to the ones regarding the help system for example quests. (easy)
* '''Duplicate pawsWidget by copy constructor''': During the last year GSOC copy constructors have been added to all classes. Now they will need to be put in use for example in the pawslistbox and be verified to be working correctly (easy)
 
* '''Active magic window''': today whenever you cast a buff spell on yourself, or when someone casts a debuff spell on you, the magic window opens showing all the buffs and debuffs, that's very annoying and clutters the screen. We want to remove this window and just have a series of icons on the top right corner with all the active buff and debuffs. This is a kind of toolbar, but just with the icon. Mouse-overing on the icons will tell you the type of spell and the duration.
* '''Crafting books''': Today the crafting techniques are special items which you can read like a book. Those allow you to complete crafting tasks, so for example to smelt and refine iron you need the "working with stock" crafting book. When you read this special book, the text displayed is the list of all possible combinations and transformations you can do with stocks. Even if it's simple to generate by the code, it's very hard to read and very hard to understand. We should show the books as ordered recipes and not only as a bunch of operations without any connection (needs to resolve a graph, also this needs to be cached somehow)(medium, graph algorithm knowledge is suggested)
* '''Chat window''': The last GSOC the chat window was improved to allow adding and removing tabs but the style of tabs was forced upon a specific positioning of tabs. It would be good to be able to add more options for positioning or even make it scriptable somehow, so skin makers can decide precisely how they want the tabs to show. An additional idea is to make the tabs configurable at runtime through in game event: For example adding the guilds tab when a player belongs to a guild. Also it might be nice to be able to split the window in separate windows with the tabs(easy)
* '''Chat window''': The last GSOC the chat window was improved to allow adding and removing tabs but the style of tabs was forced upon a specific positioning of tabs. It would be good to be able to add more options for positioning or even make it scriptable somehow, so skin makers can decide precisely how they want the tabs to show. An additional idea is to make the tabs configurable at runtime through in game event: For example adding the guilds tab when a player belongs to a guild. Also it might be nice to be able to split the window in separate windows with the tabs(easy)
* '''Rendering widget by RTT''': It may be a little expensive to render windows by using RTT. But Planeshift will also benefit if we use it at the right place such rendering the paws sketch window. The first step for this idea is to enable drawing windows by RTT. The second step is to make the way of rendering windows configurable. (medium to hard)
* '''Rendering widget by RTT''': It may be a little expensive to render windows by using RTT. But Planeshift will also benefit if we use it at the right place such rendering the paws sketch window. The first step for this idea is to enable drawing windows by RTT. The second step is to make the way of rendering windows configurable. (medium to hard)
* '''Hot bar''': for spells and items, with support for multiple rows, which can be resized and hidden.(medium)


* '''Duplicate pawsWidget by copy constructor''': During the last year GSOC copy constructors have been added to all classes. Now they will need to be put in use for example in the pawslistbox and be verified to be working correctly (easy)
* '''General''': fixes to the interface (focus issues for example, support for animated textures) and several bugs which can be found in the bug tracker. (easy to hard depending on the parts which are picked up)
* '''General''': fixes to the interface (focus issues for example, support for animated textures) and several bugs which can be found in the bug tracker. (easy to hard depending on the parts which are picked up)
* '''Container System''': Generalize the code so it's possible for the client to request to the server to be listening to a set of containers arbitrarily big and allow moving objects from the various open able container windows (medium to hard)
* '''Container System''': Generalize the code so it's possible for the client to request to the server to be listening to a set of containers arbitrarily big and allow moving objects from the various open able container windows (medium to hard)
* '''Scrollbars''' Allow to show progress scrollbars in items icons when work is being done on them.
* '''Shortcut window''' Improvements to this window allowing to add an arbitrary amount of shortcuts (or remove them from the list so there aren't hundred of empty boxes around). Allowing drag and drop position exchanging of shortcuts and copy and paste.


* '''Special effects''': Add support for special effects when drag and dropping items over widgets. For example writing their name in a textbox when dropped on it.
* '''Special effects''': Add support for special effects when drag and dropping items over widgets. For example writing their name in a textbox when dropped on it.
* '''Conversion to Plugin''' Allow to make paws a plugin which can be swapped seamlessy with other gui systems. (really hard, not really big priority)


== Additional ideas ==
== Additional ideas ==
* [[Improve NPC Dialogues]]
* allow changing of skin from in game
* allow changing of language from in game
* allow changing of language from in game
* New spell casting widget
* making all windows resizable without glitches, and more configurable
* making all windows resizable without glitches, and more configurable
* Split the items in the options window in game to be divided in basic and advanced. This will simplify readability.

Latest revision as of 23:45, 3 March 2013

(Go back to the main GSoC 2013 page)

ui.png


Skills needed

For this project C++ knowledge is needed, and basic knowledge of XML. No MySQL knowledge is required.

Overview

The UI in PlaneShift is managed by a library we created called PAWS (PlaneShift Alternate Windowing System). The library is made of C++ classes to define a widget and an associated XML file which describes the layout and formatting. It keeps a separation between the presentation layer and the logic layer. The core library (/src/common/paws) defines basic items such as windows, labels, checkboxes, button, etc.., then the UI game engine (/src/client/gui) defines a set of windows to be used in the client, built by the core pieces. This GSoC project includes improvements to the quick bar, to the help system, enhancement to the Container System, better skin management, new spellcasting widget, overall improvements to windows resizing.

To become more familiar with the UI, you can review the following:

As a reference, here is the PAWS specification

Improvements needed

  • Active magic window: today whenever you cast a buff spell on yourself, or when someone casts a debuff spell on you, the magic window opens showing all the buffs and debuffs, that's very annoying and clutters the screen. We want to remove this window and just have a series of icons on the top right corner with all the active buff and debuffs. This is a kind of toolbar, but just with the icon. Mouse-overing on the icons will tell you the type of spell and the duration.
  • Progress bars Allow to show progress bars in items icons when work is being done on them, or when a spell is expiring.
  • Hot bar: for spells and items, with support for multiple rows, which can be resized and hidden.(medium)
  • Active spell window: This window has been constructed in the past to be a very simple list, but now this is not sufficient anymore. We need the window to be more similar to a shortcut bar, with icons for each active effect, have trasparent background and be smart in positioning/layout to host multiple icons when needed.
  • New spell casting widget: Spell casting today is not very handy, as casting a spell requires you to set the power bar manually, a new widget could allow selection of spell and power bar in the same widget.
  • Shortcut window Improvements to this window allowing to add an arbitrary amount of shortcuts (or remove them from the list so there aren't hundred of empty boxes around). Allowing drag and drop position exchanging of shortcuts and copy and paste.
  • Changing skin in game: at the moment to change skin you need to restart the game. Will be good to allow changing of skin from in game.
  • Help system: add capability to incorporate 3d objects in the help widget, make it more configurable, context sensitive and allow links to other topics. Could be doable to put links support to other widgets in addition to the ones regarding the help system for example quests. (easy)
  • Chat window: The last GSOC the chat window was improved to allow adding and removing tabs but the style of tabs was forced upon a specific positioning of tabs. It would be good to be able to add more options for positioning or even make it scriptable somehow, so skin makers can decide precisely how they want the tabs to show. An additional idea is to make the tabs configurable at runtime through in game event: For example adding the guilds tab when a player belongs to a guild. Also it might be nice to be able to split the window in separate windows with the tabs(easy)
  • Rendering widget by RTT: It may be a little expensive to render windows by using RTT. But Planeshift will also benefit if we use it at the right place such rendering the paws sketch window. The first step for this idea is to enable drawing windows by RTT. The second step is to make the way of rendering windows configurable. (medium to hard)
  • Duplicate pawsWidget by copy constructor: During the last year GSOC copy constructors have been added to all classes. Now they will need to be put in use for example in the pawslistbox and be verified to be working correctly (easy)
  • General: fixes to the interface (focus issues for example, support for animated textures) and several bugs which can be found in the bug tracker. (easy to hard depending on the parts which are picked up)
  • Container System: Generalize the code so it's possible for the client to request to the server to be listening to a set of containers arbitrarily big and allow moving objects from the various open able container windows (medium to hard)
  • Special effects: Add support for special effects when drag and dropping items over widgets. For example writing their name in a textbox when dropped on it.

Additional ideas

  • allow changing of language from in game
  • making all windows resizable without glitches, and more configurable