JXClient Features
This file briefly lists some of JXClient's features.
Implemented Features
Server Selection Screen
- metaserver2 support
- pre-selects last used server in server selection: after client-restart
the correct server is selected
- periodically updates available server list: updates the server list
every 15 minutes
- asynchronously queries metaserver: network operations do not block GUI
- limits maximum frequency of metaserver queries: never queries metaserver
more than once every 5 minutes
- bypass server selection screen with --server command line option
- supports host:port syntax for server names
- caches metaserver information to overcome metaserver outages: the server
list is displayed even if the metaserver is down
- provides default-entries in case no metaserver is available: includes
metalforge, invidious, and localhost even if metaserver is down when the
client is run for the first time
- always includes "localhost" entry
Login Dialog
- progress dialog: during connection setup a progress dialog is shown; it
displays the connection state. If an error occurs, it display the error
reason.
- login dialog: after connecting to a server the last used character name
is pre-selected. The character name is remembered per server.
Main View
- map view is considered most important. Therefore it uses all available
space; other information are overlayed.
- map square size defaults to 64 pixels; optionally 32 or 4 pixels
are supported (--tile-size option).
- painting of map view: displays map contents even before all needed
images are known
- displays question mark as placeholder until image becomes
available
- this prevents lags when a character enters a new map: such lags
may be be fatal for characters
- asynchronously requests missing images from server: at most 8
images are requested concurrently from the Crossfire server.
This prevents the socket from being flooded with "askface"
messages ensuring that "real" command messages (such
as character movement or map view updates) are transmitted
without huge lags.
- asynchronously loads images from disk cache: this prevents
stalling the client if a huge number of faces has to be read
and/or the cache device is slow.
- memory-sensitive image cache: drops images from main memory when
needed
- displays fog-of-war information
- graphically displays experience to reach next level; resolution is 1%
steps
Pickup Dialog
- settings are saved per-character and retained across logouts
Message Dialog
- supports
media
tags [colors, fonts, formatting]
- separate tabs for All/Important/Chat
- word-wrapping of long messages
- merges duplicated messages: prints "You pray. [43 times]" rather than
flooding the window with identical messages.
- prunes messages to 250 lines
Command Input
- command history: previously entered commands can be recalled with
Up/Down keys.
- paste: text can be pasted into input fields using
CTRL-V
- prefix repeat count: to drop 5 items from a pile, press
5,
then drop the pile
- limited command queue size: no more than 10 commands are sent to the
server concurrently. This prevents excessive lags for slowly executing
commands or during server or network lags.
Minimap Display
- displays small overview of known map contents
- includes magicmap information
- includes fog-of-war information
Inventory Dialog
- lock/unlock: SHIFT+left-click toggles locked state
- drop/pickup: right-click drops item; right-click into floor view takes
item
- apply: middle-click applies item
- examine: left-click examines item
- mark: SHIFT+middle-click marks item
Skills Dialog
- groups skills belonging together
- displays skill levels
- graphically displays experience needed to reach next level
Book Dialog
- popup dialog for books read by the character
- easily dismissible with
ENTER or SPACE key
User Interface
Skins
- skin definition files: the GUI is defined by
skin
definition files
- fallback to default skin if preferred skin cannot be loaded
- skin definitions are built-in files or loaded from directories
General
- simple user-interface: client works "out of the box"; few
configuration options
- built-in help dialog
- dialogs: help, status, ground view, inventory, skills, protections, book
popup, login popup, settings
- displays important information right next to the character:
- hp/sp/gr health bars
- low-food warning sign
- poisoned warning sign
- window size: default skin supports window resolutions starting from
1000x640; --resolution command-line option enforces fixed window or
screen size
- defaults to full-screen mode; does not change screen resolution unless
requested by --resolution command-line option
- supports window-mode; --no-full-screen command-line option enforces
windowed mode
- includes current server and current character in window title
- retains dialog positions across client restart; dialog positions are
remembered per skin
- tooltips: displays additional information when the mouse is inside the
GUI element
- quick logout: ESC+ENTER
Sound Support
- plays server-provided background music
- plays server-provided sound effects
- sound sources are:
- built-in (embedded into .jar file)
- file in current directory
- file in
$HOME/.crossfire/jxclient/sounds
- supports multiple concurrent sounds
- client-synthesized sound-effects
- level up
- poisoned, poison cured
- option to disable sound
Key Bindings
- default key bindings; defined per skin
- user-defined key bindings; override default key bindings
- per-character key bindings; override user-defined key bindings
Scripting
- scripting interface mostly compatible with classic clients:
- access to scripts from client similar to classic clients using
/script,
/scripts, /scriptkill, and
/scripttell commands.
Debugging
- crashes usually print stack traces to console; these may help locating
the problem
- unexpected messages received from the Crossfire server are reported;
this includes unexpected message types and known message types received
in unexpected connection states
- received messages from the Crossfire server are diligently parsed;
unexpected contents are reported
--debug-protocol command-line option logs protocol messages
and connection related information in human readable format
--debug-gui command-line option helps
debugging
skins
--debug-keyboard command-line option logs information about
key binding processing
--debug-sound command-line option logs information about
sound processing
/debug_messages command helps
debugging
skins
Client-sided Commands
/bind: creates a key binding; /bind -c creates
per-character key binding
/unbind: removes a key binding; /unbind -c
removes per-character key binding
/screenshot: creates a screenshot
/script command: create a new script
/scripts command: list running scripts
/scriptkill command: kills one script
/scriptkillall command: kills all scripts
/scripttell command: talks to running script
/exec <name> command: executes the
command
list <name> defined by the skin.
/set <option> <value>: sets an option's <value>
to "on" or "off".
Options
are defined by the skin.
/clear: clears the message log
/debug_messages: prints text using all available color
codes or message types; useful only when creating skins
Macros for Key Bindings
- commands bound to keys using
/bind support
macros
Not Implemented Features
- support for spell belt [not supported in default skin; not fully
implemented]
- support for shortcuts [not supported in default skin; not fully
implemented]
- smoothing in map view
- spells dialog
- auto-reconnect after unexpected disconnects
- command history retained per-character
- copy (CTRL-C) in message window and command input
- resizing of dialogs
- transparent message overlay into main window
- vertical ground view display
- access to items in inventory and on ground by keyboard
- scroll bar for inventory dialog