Bitfighter Code
Brought to you by:
watusimoto
<html>
<head>
<title>Torque Network Library Readme</title>
<style>
h1,h2,h3,h4 {
border-bottom-style: solid;
border-bottom-width: 1px;
text-align: center;
}
h5,h6 {
text-align: center;
}
.header { text-align: left; }
</style>
</head>
<body marginwidth=40px>
<h1>Torque Network Library</h1>
<h2>Readme</h2>
<h5>(c) GarageGames 2004</h5>
<h2 class="header">Introduction</h2>
<p>Developing computational simulations is a complex, interdisciplinary undertaking. To take a simulation of any sort and run it in a distributed environment introduces a whole new world of problems to overcome. The Torque Network Library provides a robust framework for message passing and efficient state replication, built on a UDP-based protocol.</p>
<h2 class="header">Features</h2>
<ul>
<li>Portable
<ul>
<li>Platforms
<ul>
<li>Mac OSX
<li>Linux
<li>Win32
</ul>
<li>Compilers
<ul>
<li>Xcode
<li>GCC
<li>Visual C++ 6/7
</ul>
</ul>
<li>Powerful RPC Support
<ul>
<li>Lightweight and efficient - not intended to be a replacement for CORBA.
<li>Extremely easy to use - two simple macro definitions and you're done.
<li>No complex wrapper classes to work with - write and call your functions as you normally would, and TNL will take care of the rest.
</ul>
<li>Robust UDP-based notification protocol
<ul>
<li>Supports fixed or adaptive rate data transfer.
<li>Arbitrary sized packet window.
<li>Robust connection handshaking.
<li>Handles packet loss/out of order delivery.
</ul>
<li>Networked Objects
<ul>
<li>Instantiation of objects by name or ID.
<li>IDs are assigned to NetGroups, so that only objects relevant to a connection can be references.
</ul>
<li>Event Support
<ul>
<li>Unguaranteed, guaranteed unordered, or guaranteed ordered event delivery.
<li>Notification to the event when it has been received or dropped by a client.
</ul>
<li>Ghost Support
<ul>
<li>Most-recent state information is transmitted to clienst.
<li>Scoping of objects to only those clients for which they are relevant - this helps prevent cheating or data sniffing and makes dramatically more effective use of available bandwidth.
<li>Prioritization of state updates by arbitrary criteria, such as relative velocity, team, ownership, etc.
</ul>
<li>Extensible Protocol Architecture
<ul>
<li>Easy to extend the protocol, for instance, to transmit player move information with every packet, or add voice support.
<li>See Torque for examples of additional capabilities that could be added to the protocol.
</ul>
</ul>
<h2 class="header">Compiling TNL</h2>
<h3 class="header">OSX/Xcode</h3>
<p>Under the <code>osx</code> subdirectory there is an XCode project. It is set up to build TNL and the TNLTest app.</p>
<h3 class="header">Linux/GCC</h3>
<p>From the top level directory, type</p>
<code>make</code>
<p>If you have OpenGL and wxWindows installed, and OpenGL support enabled in wxWindows, you can build the wxgui test client/server program with</p>
<code>cd test && make wxgui</code>
<p>The wxgui is not built by default.
<h3 class="header">Windows/VC6/VC7</h3>
<p>There are VC6 and VC7 project workspaces in the root directory of the checkout. Individual project files are in their respective directories.</p>
<h2 class="header">Documentation and Online Resources</h2>
<p>The TNL comes with extensive Doxygen documentation. You can access this documentation online at <a href="">Some URL</a>, or generate it by downloading Doxygen from <a href="http://www.doxygen.org/">www.doxygen.org</a> and executing the following command line (assuming you installed Doxygen in the standard place) from the root of your TNL checkout...</p>
<ul>
<li>Under Windows:<br>
<code>"c:\Program Files\doxygen\bin\doxygen.exe" docs\doxygen.html.cfg</code>
<li>Under Linux or OSX:<br>
<code>doxygen docs/doxygen.html.cfg</code>
</ul>
<p>This will produce a set of Doxygen docs in the docs\html subdirectory of your TNL checkout. Please note that these docs may ONLY be distributed to other TNL licensees.</p>
</body>
</html>