Difference between revisions of "Viewer Architecture"

From Second Life Wiki
Jump to navigation Jump to search
m (add reference to AW_Groupies#Communications)
(Link to Viewer Roadmap)
Line 89: Line 89:
* Known [[defines]]
* Known [[defines]]
* [[Godmode]] - what Lindens can do
* [[Godmode]] - what Lindens can do
== See also ==
*  [[Viewer Roadmap]] - how everything you read here could be changing or might have already changed.

Revision as of 14:55, 17 July 2008

The Second Life client (also known as the "viewer") is a complex piece of software. It can be visualized as a streaming media client like RealPlayer, a game engine like Quake 3, or a web browser.

First you'll need to learn some terminology like "agent", "sim", and "region" in the glossary.

Learn by Example

Major Systems

Threads

The viewer is a single process with a few threads:

  • Main thread -- The input/output main program function (including rendering).
  • VFS thread -- Thread responsible for reading/writing to the local virtual file system.
  • LFS thread -- Thread responsible for some reading/writing to the local native file system.
  • Image thread -- Thread responsible for requesting and decoding image data
  • Error Thread -- Thread responsible for catching exceptions, calling the (currently unused?) error handler, and retiring
  • Worker Threads -- Threads designed to do cpu intensive background tasks
    • These threads may be paused during rendering so as not to reduce performance (design in-progress)

Program Flow

  1. Initialize - newview/viewer.cpp :: main()
  2. Loop - newview/viewer.cpp :: main_loop()
    • Gathers keyboard and mouse input
    • Pumps the TCP i/o
    • idle()
    • Render the frame
    • let filesystem and worker threads process
  3. Shutdown

One way to see what goes on in the main loop is to bring up the debug menus (Ctrl-Alt-D) then Client->Consoles->Fast Timers (or Ctrl-Shift-9) and expand the entries in the caption.

see also: AW Groupies protocol and login documentation links

Sources of Input

User Guides

See also

  • Viewer Roadmap - how everything you read here could be changing or might have already changed.