<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.bzflag.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Constitution</id>
	<title>BZFlagWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.bzflag.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Constitution"/>
	<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/Special:Contributions/Constitution"/>
	<updated>2026-05-19T13:41:43Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Bz_BaseURLHandler&amp;diff=8682</id>
		<title>Bz BaseURLHandler</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Bz_BaseURLHandler&amp;diff=8682"/>
		<updated>2013-06-02T00:17:52Z</updated>

		<summary type="html">&lt;p&gt;Constitution: spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BZFS_API_Doc}}{{BZFS_API_Class}}&lt;br /&gt;
==Delcaration==&lt;br /&gt;
 class bz_BaseURLHandler&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
  bz_BaseURLHandler();&lt;br /&gt;
  virtual ~bz_BaseURLHandler();&lt;br /&gt;
  virtual void done(const char* URL, void * data, unsigned int size, bool complete);&lt;br /&gt;
  virtual void timeout(const char* URL, int errorCode);&lt;br /&gt;
  virtual void error(const char* URL, int errorCode, const char *errorString);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
This is the base class for callbacks from [[bz_addURLJob]]. It is used to return info about a URL request back to the calling plug-in.&lt;br /&gt;
&lt;br /&gt;
Plugins should derive there own callback class from this class and implement their own versions of the virtual methods that they require.&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
 void done(const char* URL, void * data, unsigned int size, bool complete);&lt;br /&gt;
 This is called as data is returned from the request. The complete paramater will be true on the last call for this job.&lt;br /&gt;
&lt;br /&gt;
 void timeout(const char* URL, int errorCode);&lt;br /&gt;
 This is called when the URL job times out. This is usually because the server is offline&lt;br /&gt;
&lt;br /&gt;
 void error(const char* URL, int errorCode, const char *errorString);&lt;br /&gt;
 This is called when the URL job errors out. This is usually because the URL is bad.&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Plug-ins&amp;diff=8677</id>
		<title>Plug-ins</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Plug-ins&amp;diff=8677"/>
		<updated>2013-05-14T12:11:14Z</updated>

		<summary type="html">&lt;p&gt;Constitution: Added step to remove preceding &amp;quot;lib&amp;quot; from plugin targets on Xcode.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BZFS can be built to support the loading of external libraries as plug-ins. These plug-ins can alter or replace the logic applied by the server, as well as automate many common tasks. &lt;br /&gt;
&lt;br /&gt;
Plug-ins are one of the more popular ways to apply modifications to the game. They do not require modifications of the BZFS application source code so it can be kept up to date with out the need to constantly apply patches. They have also proven to be a very simple method for distributing modifications from developers to players.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
Plug-ins are compiled dynamic link libraries, that are built for the same OS/RuntimeEnvironment as the BZFS server that hosts them. On [http://www.microsoft.com/windows Microsoft Windows] they are built as [http://en.wikipedia.org/wiki/Dynamic-link_library DLL] files. On [http://www.linux.org Linux] and other [http://www.unix.org/ Unix]-like systems they are built as .so files.&lt;br /&gt;
&lt;br /&gt;
==Use==&lt;br /&gt;
Plug-ins are loaded at startup by the &#039;&#039;&#039;-loadplugin&#039;&#039;&#039; option, or at run time with the &#039;&#039;/loadplugin&#039;&#039; command. If the full path to the plug-in is not specified, then [[BZFS]] will search a number of known sub directories for the plug-in as it attempts to load it. Using a valid path to the plug-in on load is highly recommended. While playing, all plug-ins loaded onto the server are visible with the /listplugins command.&lt;br /&gt;
===Parameters===&lt;br /&gt;
Some plug-ins take parameters that are passed to the plug-in on load. This is often a numeric value, or a path to a file. To pass a parameter to a plug-in, simply add a &#039;,&#039; after the plug-in name or path, and then add the parameter. Parameters can not have spaces, due to the way [[BZFS]] parses command line options and / commands.&lt;br /&gt;
&lt;br /&gt;
On load, plug-ins install a number of callbacks and event handlers with the hosting [[BZFS]] that are called when specific events happen. This allows the plug-in to perform additional actions on these events, or if need be, alter the results of the default logic of the server.&lt;br /&gt;
===Search Paths===&lt;br /&gt;
[[BZFS]] searches for plug-ins in two standard locations: the config directory and the global plug-ins directory.  The config directory is where the BZFlag config.cfg file is located, and the global plug-ins directory is $(prefix)/lib/bzflag/.&lt;br /&gt;
&lt;br /&gt;
==BZFS API==&lt;br /&gt;
All plug-ins are linked to the [[BZFS API]]. This programing layer provides the interface to the BZFS application. All events and functions that a plug-in can call are in the [[BZFS API]].&lt;br /&gt;
&lt;br /&gt;
==Standard plug-ins==&lt;br /&gt;
The [[BZFlag Source]] distribution contains a number of plug-ins that are maintained by the project [[:Category:Developer|developers]].&lt;br /&gt;
These plug-ins are located in the &#039;&#039;/plugins&#039;&#039; directory.&lt;br /&gt;
&lt;br /&gt;
As of March 2013, [[BZFlag SVN|SVN]] TRUNK contains the following plug-ins:&lt;br /&gt;
&lt;br /&gt;
*[[airspawn]]&lt;br /&gt;
*[[autoFlagReset]]&lt;br /&gt;
*[[bzfscron]]&lt;br /&gt;
*[[chathistory]]&lt;br /&gt;
*[[customflagsample]]&lt;br /&gt;
*[[fairCTF]]&lt;br /&gt;
*[[fastmap]]&lt;br /&gt;
*[[flagStay]]&lt;br /&gt;
*[[hiddenAdmin]]&lt;br /&gt;
*[[HoldTheFlag]]&lt;br /&gt;
*[[keepaway]]&lt;br /&gt;
*[[killall]]&lt;br /&gt;
*[[koth]]&lt;br /&gt;
*[[logDetail]]&lt;br /&gt;
*[[nagware]]&lt;br /&gt;
*[[Phoenix]]&lt;br /&gt;
*[[playHistoryTracker]]&lt;br /&gt;
*[[plugin_utils]]&lt;br /&gt;
*[[pushstats]]&lt;br /&gt;
*[[rabbitTimer]]&lt;br /&gt;
*[[rabidRabbit]]&lt;br /&gt;
*[[recordmatch]]&lt;br /&gt;
*[[regFlag]]&lt;br /&gt;
*[[RogueGenocide]]&lt;br /&gt;
*[[SAMPLE_PLUGIN]]&lt;br /&gt;
*[[serverControl]]&lt;br /&gt;
*[[serverSidePlayerSample]]&lt;br /&gt;
*[[shockwaveDeath]]&lt;br /&gt;
*[[superUser]]&lt;br /&gt;
*[[teamflagreset]]&lt;br /&gt;
*[[thiefControl]]&lt;br /&gt;
*[[timedctf]]&lt;br /&gt;
*[[TimeLimit]]&lt;br /&gt;
*[[webReport]]&lt;br /&gt;
*[[webstats]]&lt;br /&gt;
*[[wwzones]]&lt;br /&gt;
&lt;br /&gt;
==Third Party Plug-ins==&lt;br /&gt;
A number of non-developers have created plug-ins for BZFS, and usually release them on the [http://my.bzflag.org/bb/ BZFlag Forums].&lt;br /&gt;
&lt;br /&gt;
Here are the steps to compile a hypothetical third party plug-in named &amp;quot;Example&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
# In the plugins directory of the BZFlag source tree run the command &#039;&#039;&#039;./newplug.sh Example&#039;&#039;&#039;&lt;br /&gt;
# Remove all of the files from the newly created plugins/Example directory (they were created by newplug.sh)&lt;br /&gt;
# Copy all of the distributed Example files into the plugins/Example directory&lt;br /&gt;
# In the top-level BZFlag source directory run &#039;&#039;&#039;autogen.sh&#039;&#039;&#039;, &#039;&#039;&#039;configure&#039;&#039;&#039;, and &#039;&#039;&#039;make&#039;&#039;&#039; as usual&lt;br /&gt;
&lt;br /&gt;
When that finishes successfully the plug-in should be ready to use as described above.&lt;br /&gt;
&lt;br /&gt;
In Xcode on Mac OS X, follow these instructions:&lt;br /&gt;
&lt;br /&gt;
# Click on the BZFlag project name in the project navigator. Click Add Target, and create a new C/C++ Library. Name the plugin, and select &amp;quot;Dynamic&amp;quot; for type.&lt;br /&gt;
# In the project navigator, move the new library target from the bottom of the screen into the &amp;quot;Targets&amp;quot; group.&lt;br /&gt;
# Click on the BZFlag project name in the project navigator again. In the list of targets, select the BZFlag application target. In the Build Phases tab, in the Target Dependencies pane, add your new library target as a dependency of the application target. Also add it to the Copy Files phase for the PlugIns directory.&lt;br /&gt;
# Select your new library target. Select the Build Settings tab, and locate the Other Linker Flags option. Add the option &amp;quot;-undefined dynamic_lookup&amp;quot;&lt;br /&gt;
# Find the Architecture build setting for your new library. Make sure it is the same architecture as the main codebase, or click Levels, click the Architecture setting under your library target, click Other, and delete the setting. This will make it assume the overall project build architecture.&lt;br /&gt;
# Find the Executable Prefix build setting for your new library, and delete the &amp;quot;lib&amp;quot; setting.&lt;br /&gt;
# Add your source file(s) to the project, and make them members of your library target.&lt;br /&gt;
# Build as usual.&lt;br /&gt;
&lt;br /&gt;
==Preparing a Linux BZFS==&lt;br /&gt;
&lt;br /&gt;
In order to run plugins in BZFS, you need to recompile it with the --enable-shared option on the configure script.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note that as of 2.4.0 the BZFlag configuration has --enable-shared automatically enabled.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $ ./configure --enable-shared --disable-client;&lt;br /&gt;
       make;&lt;br /&gt;
       make install;&lt;br /&gt;
&lt;br /&gt;
==Plug-in Development==&lt;br /&gt;
{{DoDoc|Describe the basics of plug-in development.}}&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
The plug-in system was added in BZFlag V. 2.0.4 and was initially met with a lukewarm reception by some of the core developers and the maintainer. The community has since embraced the concept and built a multitude of useful modifications, many that have been incorporated into the project as standard plug-ins.&lt;br /&gt;
&lt;br /&gt;
For Version 3.0 major changes to the [[BZFS API]] have been made to increase its lifespan.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Plug-Ins]]&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Master-ChildAccountSystem&amp;diff=8590</id>
		<title>Master-ChildAccountSystem</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Master-ChildAccountSystem&amp;diff=8590"/>
		<updated>2013-02-12T00:22:29Z</updated>

		<summary type="html">&lt;p&gt;Constitution: sp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DesignDocument}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The main goal of the Master/Child account system is twofold;&lt;br /&gt;
# To limit or remove the liability of project services under the COPPA laws [http://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act]&lt;br /&gt;
# To provide additional features for parents to use when managing a child&#039;s time online.&lt;br /&gt;
&lt;br /&gt;
==Concept==&lt;br /&gt;
In order to support children that current authentication system will be converted into what will be known as &amp;quot;master accounts&amp;quot;. These master accounts will only be given out to users who are 13 years of age or older and will store personally identifiable information such as an e-mail address. Users who sign up for an master account must agree to the site terms and be 13 or older. Any user who has a master account and is found to be under the age of 13 will have the account delete and all saved data flushed from the system.&lt;br /&gt;
&lt;br /&gt;
Master accounts will be have the option of creating a fixed number of &amp;quot;child&amp;quot; accounts that are linked to the master account. These child accounts will NOT store any identifying information and will only contain a callsign and a randomly generated password. A parent can then allow his/her children to use these accounts for play. A user who creates a child account will agree to a separate set of site terms that will grant the server the rights to store the call-sign and randomly generated password.&lt;br /&gt;
&lt;br /&gt;
Since a parent is required to create the child account and no personal information for the child is stored, this will limit the liability for the project under COPPA.&lt;br /&gt;
&lt;br /&gt;
==Additional Features==&lt;br /&gt;
Since the child accounts will be linked to a master account we can add a number of parental control features based on the child account, including&lt;br /&gt;
&lt;br /&gt;
# Listing the servers and log-in times or linked accounts&lt;br /&gt;
# Limiting what servers the child accounts are shown in the list server based on parent defined filters&lt;br /&gt;
# Preventing child accounts from authenticating on forbidden servers based on parent defined filters.&lt;br /&gt;
# Preventing authentication based on parent defined time-frames.&lt;br /&gt;
# Allowing the master account to reset the child password to a new random password, or revoking access to the account.&lt;br /&gt;
&lt;br /&gt;
==Other uses==&lt;br /&gt;
Players that wish to play under multiple callsigns could also create child accounts to use. This would prevent the large number of account renames that happen and limit the number of times an account gets &amp;quot;stolen&amp;quot; during a name change.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
===General Plan===&lt;br /&gt;
The initial implementation can be built upon the current authentication system. Child accounts would be stored in a separate database or table and tied to the BZID of the master account. Child accounts would be given a BZID in a specific range so they would not collide with the normal BZID system (use negative numbers, or a prefix?). A website would be made to allow users who authenticate with Weblogin to create and manage child accounts. The list server would be modified to check the child user list if the callsign was not found in the master password database.&lt;br /&gt;
&lt;br /&gt;
When this is complete the current COPPA group on BZBB would be mass emailed and asked to provide proof that they are over 13 years of age. Those users who provide proof would be removed from the COPPA group and made normal users. The users who were left would all be notified that they now need to have a parent create a child account for them and the current accounts will be deleted. This will let us purge the COPPA group of users who are no longer too young.&lt;br /&gt;
&lt;br /&gt;
When the COPPA group is purged the forum system will be changed to disallow users under 13 from registering new accounts and direct them to the child account system.&lt;br /&gt;
&lt;br /&gt;
===Specifics===&lt;br /&gt;
# Child accounts should never be able to set a password, they must always use the password set by the master account. This password will be defaulted to a randomly generated password for enhanced security against weak passwords.&lt;br /&gt;
# A separate table would need to store a record that stored the data from every master user that created a child account. This includes the Child account name, date, IP address used, and a flag indicting that the user checked the &amp;quot;I agree&amp;quot; checkbox on the new child account form. This table is the proof that the user is agreeing to let us store the data for the child.&lt;br /&gt;
# The current PHPBB system will need to be modified to check the child account list when creating new accounts to know what names are invalid.&lt;br /&gt;
# Child accounts should not be allowed to login to webauth and only be allowed to authenticate in game by default. The master account can enable web logins if it desires.&lt;br /&gt;
# Child accounts should be added to a special &amp;quot;group&amp;quot; on the list server to identify them as child accounts. This will let servers know if the account is a child and they can set permissions appropriately.&lt;br /&gt;
# A method should exist for converting a child account to a master account with the master account&#039;s permission. This can be used when a child turns 13 and is capable of maintaining their own account. The master account would be asked to agree to a set of terms that state that the new user is of age.&lt;br /&gt;
&lt;br /&gt;
===Database Design===&lt;br /&gt;
&lt;br /&gt;
[[Image:BZ_Child_Accounts_DB.png]]&lt;br /&gt;
&lt;br /&gt;
===GUI Design===&lt;br /&gt;
The GUI should be done in a manner that can be extended into a full user manager.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Main log-in page.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This page should look as similar as possible to the current weblogin system to show consistency and trust. Eventually the same log-in page should be used for both systems.&lt;br /&gt;
&lt;br /&gt;
[[image:Users_BZFlag_Org_Login_Mockup.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Child account page.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This page will list the child accounts that the master currently has. Here they can add/remove and edit the child accounts. On creation the user will be asked for the child account name, and a randomly generated password will be show in the password field after the account is created. Normally the password field will be blank and will only be used if/when the user wishes to set the password manually or use the Random button to generate a new random password. The system will NOT store the password, only a hash to it.&lt;br /&gt;
&lt;br /&gt;
[[image:Users_BZFlag_Org_ChildAccounts_Mockup.png|450px]]&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Master-ChildAccountSystem&amp;diff=8589</id>
		<title>Master-ChildAccountSystem</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Master-ChildAccountSystem&amp;diff=8589"/>
		<updated>2013-02-12T00:19:38Z</updated>

		<summary type="html">&lt;p&gt;Constitution: sp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DesignDocument}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The main goal of the Master/Child account system is twofold;&lt;br /&gt;
# To limit or remove the liability of project services under the COPPA laws [http://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act]&lt;br /&gt;
# To provide additional features for parents to use when managing a child&#039;s time online.&lt;br /&gt;
&lt;br /&gt;
==Concept==&lt;br /&gt;
In order to support children that current authentication system will be converted into what will be known as &amp;quot;master accounts&amp;quot;. These master accounts will only be given out to users who are 13 years of age or older and will store personally identifiable information such as an e-mail address. Users who sign up for an master account must agree to the site terms and be 13 or older. Any user who has a master account and is found to be under the age of 13 will have the account delete and all saved data flushed from the system.&lt;br /&gt;
&lt;br /&gt;
Master accounts will be have the option of creating a fixed number of &amp;quot;child&amp;quot; accounts that are linked to the master account. These child accounts will NOT store any identifying information and will only contain a callsign and a randomly generated password. A parent can then allow his/her children to use these accounts for play. A user who creates a child account will agree to a separate set of site terms that will grant the server the rights to store the call-sign and randomly generated password.&lt;br /&gt;
&lt;br /&gt;
Since a parent is required to create the child account and no personal information for the child is stored, this will limit the liability for the project under COPPA.&lt;br /&gt;
&lt;br /&gt;
==Additional Features==&lt;br /&gt;
Since the child accounts will be linked to a master account we can add a number of parental control features based on the child account, including&lt;br /&gt;
&lt;br /&gt;
# Listing the servers and log-in times or linked accounts&lt;br /&gt;
# Limiting what servers the child accounts are shown in the list server based on parent defined filters&lt;br /&gt;
# Preventing child accounts from authenticating on forbidden servers based on parent defined filters.&lt;br /&gt;
# Preventing authentication based on parent defined time-frames.&lt;br /&gt;
# Allowing the master account to reset the child password to a new random password, or revoking access to the account.&lt;br /&gt;
&lt;br /&gt;
==Other uses==&lt;br /&gt;
Players that wish to play under multiple callsigns could also create child accounts to use. This would prevent the large number of account renames that happen and limit the number of times an account gets &amp;quot;stolen&amp;quot; during a name change.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
===General Plan===&lt;br /&gt;
The initial implementation can be built upon the current authentication system. Child accounts would be stored in a separate database or table and tied to the BZID of the master account. Child accounts would be given a BZID in a specific range so they would not collide with the normal BZID system (use negative numbers, or a prefix?). A website would be made to allow users who authenticate with Weblogin to create and manage child accounts. The list server would be modified to check the child user list if the callsign was not found in the master password database.&lt;br /&gt;
&lt;br /&gt;
When this is complete the current COPPA group on BZBB would be mass emailed and asked to provide proof that they are over 13 years of age. Those users who provide proof would be removed from the COPPA group and made normal users. The users who were left would all be notified that they now need to have a parent create a child account for them and the current accounts will be deleted. This will let us purge the COPPA group of users who are no longer too young.&lt;br /&gt;
&lt;br /&gt;
When the COPPA group is purged the forum system will be changed to disallow users under 13 from registering new accounts and direct them to the child account system.&lt;br /&gt;
&lt;br /&gt;
===Specifics===&lt;br /&gt;
# Child accounts should never be able to set a password, they must always use the password set by the master account. This password will be defaulted to a randomly generated password for enhanced security against weak passwords.&lt;br /&gt;
# A separate table would need to store a record that stored the data from every master user that created a child account. This includes the Child account name, date, IP address used, and a flag indicting that the user checked the &amp;quot;I agree&amp;quot; checkbox on the new child account form. This table is the proof that the user is agreeing to let us store the data for the child.&lt;br /&gt;
# The current PHPBB system will need to be modified to check the child account list when creating new accounts to know what names are invalid.&lt;br /&gt;
# Child accounts should not be allowed to login to webauth and only be allowed to authenticate in game by default. The master account can enable web logins if it desires.&lt;br /&gt;
# Child accounts should be added to a special &amp;quot;group&amp;quot; on the list server to identify them as child accounts. This will let servers know if the account is a child and they can set permissions appropriately.&lt;br /&gt;
# A method should exist for converting a child account to a master account with the master account&#039;s permission. This can be used when a child turns 13 and is capable of maintaining there own account. The master account would be asked to agree to a set of terms that state that the new user is of age.&lt;br /&gt;
&lt;br /&gt;
===Database Design===&lt;br /&gt;
&lt;br /&gt;
[[Image:BZ_Child_Accounts_DB.png]]&lt;br /&gt;
&lt;br /&gt;
===GUI Design===&lt;br /&gt;
The GUI should be done in a manner that can be extended into a full user manager.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Main log-in page.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This page should look as similar as possible to the current weblogin system to show consistency and trust. Eventually the same log-in page should be used for both systems.&lt;br /&gt;
&lt;br /&gt;
[[image:Users_BZFlag_Org_Login_Mockup.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Child account page.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This page will list the child accounts that the master currently has. Here they can add/remove and edit the child accounts. On creation the user will be asked for the child account name, and a randomly generated password will be show in the password field after the account is created. Normally the password field will be blank and will only be used if/when the user wishes to set the password manually or use the Random button to generate a new random password. The system will NOT store the password, only a hash to it.&lt;br /&gt;
&lt;br /&gt;
[[image:Users_BZFlag_Org_ChildAccounts_Mockup.png|450px]]&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Compiling&amp;diff=8481</id>
		<title>Compiling</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Compiling&amp;diff=8481"/>
		<updated>2013-01-30T02:03:15Z</updated>

		<summary type="html">&lt;p&gt;Constitution: Updated the instructions for Mac OS X and removed some outdated information.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
Compiling BZFlag is the act of building executable applications for a target system using the raw source code. This is usually not necessary to [[Installing|install the game]].&lt;br /&gt;
&lt;br /&gt;
==Obtaining sources==&lt;br /&gt;
In order to compile a user must have his or her own copy of the [[BZFlag_Source|Source Code]]. The code can be obtained from a source archive from the [[Download]] page, or from the BZFlag [[BZFlag_SVN|Subversion]] server.&lt;br /&gt;
&lt;br /&gt;
==README files==&lt;br /&gt;
Users should always read the README files for the appropriate operating system. These files are located in the root directory of the source code tree.&lt;br /&gt;
&lt;br /&gt;
==Compilers==&lt;br /&gt;
BZFlag is capable of being built on a number of compilers. The compiler used will depend in some way on the operating system of the computer doing the build.&lt;br /&gt;
&lt;br /&gt;
* Windows computers can use the Visual C++ compiler, or the MinGW compiler (based on GCC). Windows is the most popular client OS and nearly all clients are built with the Visual C++ compiler, including the official binaries.&lt;br /&gt;
* Macintosh OS X computers use the Xcode compiler (or optionally gcc, see notes). OS X is the second most popular client OS, official builds are built with Xcode, not GCC.&lt;br /&gt;
* Linux and BSD computers use the GCC compiler. Linux is the third most common client OS and packages for distributions are built using GCC.&lt;br /&gt;
&lt;br /&gt;
===Visual C++===&lt;br /&gt;
The most common way to build on windows to to use the Visual C++ 2010 compiler (Both Express and Retail versions are supported).&lt;br /&gt;
The current free Express version of Visual C++ can be found at [http://www.microsoft.com/express/vc/ http://www.microsoft.com/express/vc/]&lt;br /&gt;
&lt;br /&gt;
===GCC===&lt;br /&gt;
If the required dependencies are installed, the user must then run the following commands from at root level of the source tree&lt;br /&gt;
&lt;br /&gt;
  ./autogen.sh&lt;br /&gt;
  ./configure&lt;br /&gt;
  make&lt;br /&gt;
  make install&lt;br /&gt;
&lt;br /&gt;
Please note that depending on permissions levels the &#039;&#039;&#039;make install&#039;&#039;&#039; command may need to be run as an administrator or root. On Macintosh OS X, do not run make install when building with GCC. Run the program from the source directory or install it manually as desired instead.&lt;br /&gt;
&lt;br /&gt;
===Xcode===&lt;br /&gt;
The Xcode system uses the  &#039;&#039;&#039;Xcode/BZFlag.xcodeproj&#039;&#039;&#039; project. Building is fairly straightforward. Follow the instructions in the README.MacOSX file.&lt;br /&gt;
&lt;br /&gt;
==Dependencies==&lt;br /&gt;
In order to compile BZFlag, some third party libraries may be required depending on the operating system being built for. The readme file for each OS will contain the current dependencies for each OS and should be consulted before attempting any build.&lt;br /&gt;
&lt;br /&gt;
The following is a general dependency list for version 2.4.&lt;br /&gt;
&lt;br /&gt;
===Windows (Visual Studio)===&lt;br /&gt;
The only third party dependency required to build the client is the DirectX SDK that is available from Microsoft. A download is available at http://www.microsoft.com/en-us/download/details.aspx?id=6812.&lt;br /&gt;
&lt;br /&gt;
If a user wishes to build a full set of windows installers, they will need to install the NSIS installer system, available from http://nsis.sourceforge.net.&lt;br /&gt;
&lt;br /&gt;
All other dependencies are included.&lt;br /&gt;
&lt;br /&gt;
===Linux (GCC)===&lt;br /&gt;
====Required Libraries====&lt;br /&gt;
* SDL development libraries (1.2.10 or greater)&lt;br /&gt;
* SDL-sound development libraries (1.2.10 or greater)&lt;br /&gt;
* libtool&lt;br /&gt;
* automake&lt;br /&gt;
* autoconf&lt;br /&gt;
* g++&lt;br /&gt;
* mesa development libraries (gl, and glu)&lt;br /&gt;
* mesa development libraries&lt;br /&gt;
&lt;br /&gt;
====Required Libraries====&lt;br /&gt;
These libraries are included with the source tree but users may have better results using ones included with a Linux distribution.&lt;br /&gt;
&lt;br /&gt;
* curl development libraries&lt;br /&gt;
* c-ares development libraries&lt;br /&gt;
* glew development libraries&lt;br /&gt;
* zlib development libraries&lt;br /&gt;
&lt;br /&gt;
===Macintosh OS X (Xcode or GCC)===&lt;br /&gt;
====Required Libraries====&lt;br /&gt;
* SDL framework 1.2 (1.3 may not work on all versions of OSX)&lt;br /&gt;
&lt;br /&gt;
==Other build systems==&lt;br /&gt;
Other build systems may be supported in the various readme files (minGW, IRIX, SOLARIS,etc..) see the [[Compiling/Solaris_Notes]] page for more info.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Compiling]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Plug-ins&amp;diff=8399</id>
		<title>Plug-ins</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Plug-ins&amp;diff=8399"/>
		<updated>2012-12-16T12:35:58Z</updated>

		<summary type="html">&lt;p&gt;Constitution: Added instructions for adding a plug-in to the Mac OS X Xcode project&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BZFS can be built to support the loading of external libraries as plug-ins. These plug-ins can alter or replace the logic applied by the server, as well as automate many common tasks. &lt;br /&gt;
&lt;br /&gt;
Plug-ins are one of the more popular ways to apply modifications to the game. They do not require modifications of the BZFS application source code so it can be kept up to date with out the need to constantly apply patches. They have also proven to be a very simple method for distributing modifications from developers to players.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
Plug-ins are compiled dynamic link libraries, that are built for the same OS/RuntimeEnvironment as the BZFS server that hosts them. On [http://www.microsoft.com/windows Microsoft Windows] they are built as [http://en.wikipedia.org/wiki/Dynamic-link_library DLL] files. On [http://www.linux.org Linux] and other [http://www.unix.org/ Unix]-like systems they are built as .so files.&lt;br /&gt;
&lt;br /&gt;
==Use==&lt;br /&gt;
Plug-ins are loaded at startup by the &#039;&#039;&#039;-loadplugin&#039;&#039;&#039; option, or at run time with the &#039;&#039;/loadplugin&#039;&#039; command. If the full path to the plug-in is not specified, then [[BZFS]] will search a number of known sub directories for the plug-in as it attempts to load it. Using a valid path to the plug-in on load is highly recommended. While playing, all plug-ins loaded onto the server are visible with the /listplugins command.&lt;br /&gt;
===Parameters===&lt;br /&gt;
Some plug-ins take parameters that are passed to the plug-in on load. This is often a numeric value, or a path to a file. To pass a parameter to a plug-in, simply add a &#039;,&#039; after the plug-in name or path, and then add the parameter. Parameters can not have spaces, due to the way [[BZFS]] parses command line options and / commands.&lt;br /&gt;
&lt;br /&gt;
On load, plug-ins install a number of callbacks and event handlers with the hosting [[BZFS]] that are called when specific events happen. This allows the plug-in to perform additional actions on these events, or if need be, alter the results of the default logic of the server.&lt;br /&gt;
===Search Paths===&lt;br /&gt;
[[BZFS]] searches for plug-ins in two standard locations: the config directory and the global plug-ins directory.  The config directory is where the BZFlag config.cfg file is located, and the global plug-ins directory is $(prefix)/lib/bzflag/.&lt;br /&gt;
&lt;br /&gt;
==BZFS API==&lt;br /&gt;
All plug-ins are linked to the [[BZFS API]]. This programing layer provides the interface to the BZFS application. All events and functions that a plug-in can call are in the [[BZFS API]].&lt;br /&gt;
&lt;br /&gt;
==Standard plug-ins==&lt;br /&gt;
The [[BZFlag Source]] distribution contains a number of plug-ins that are maintained by the project [http://my.bzflag.org/wiki/index.php/Category:Developer developers].&lt;br /&gt;
These plug-ins are located in the &#039;&#039;/plugins&#039;&#039; directory.&lt;br /&gt;
&lt;br /&gt;
As of August 2009, [[BZFlag SVN|SVN]] TRUNK( version [[BZFlag 3.0|2.99]]) contains the following plug-ins:&lt;br /&gt;
&lt;br /&gt;
*[[airspawn]]&lt;br /&gt;
*[[bzfscron]]&lt;br /&gt;
*[[chathistory]]&lt;br /&gt;
*[[chatlog]]&lt;br /&gt;
*[[customflagsample]]&lt;br /&gt;
*[[fastmap]]&lt;br /&gt;
*[[flagStay]]&lt;br /&gt;
*[[hiddenAdmin]]&lt;br /&gt;
*[[HoldTheFlag]]&lt;br /&gt;
*[[HTTPServer]]&lt;br /&gt;
*[[httpTest]]&lt;br /&gt;
*[[keepaway]]&lt;br /&gt;
*[[killall]]&lt;br /&gt;
*[[koth]]&lt;br /&gt;
*[[logDetail]]&lt;br /&gt;
*[[mapchange]]&lt;br /&gt;
*[[nagware]]&lt;br /&gt;
*[[Phoenix]]&lt;br /&gt;
*[[playHistoryTracker]]&lt;br /&gt;
*[[python(plug-in)|python]]&lt;br /&gt;
*[[rabidRabbit]]&lt;br /&gt;
*[[recordmatch]]&lt;br /&gt;
*[[regFlag]]&lt;br /&gt;
*[[RogueGenocide]]&lt;br /&gt;
*[[SAMPLE_PLUGIN]]&lt;br /&gt;
*[[serverControl]]&lt;br /&gt;
*[[serverSideBotSample]]&lt;br /&gt;
*[[shockwaveDeath]]&lt;br /&gt;
*[[soundTest]]&lt;br /&gt;
*[[teamflagreset]]&lt;br /&gt;
*[[thiefControl]]&lt;br /&gt;
*[[timedctf]]&lt;br /&gt;
*[[torBlock]]&lt;br /&gt;
*[[unrealCTF]]&lt;br /&gt;
*[[weaponArena]]&lt;br /&gt;
*[[webadmin]]&lt;br /&gt;
*[[webReport]]&lt;br /&gt;
*[[webstats]]&lt;br /&gt;
*[[wwzones]]&lt;br /&gt;
&lt;br /&gt;
==Third Party Plug-ins==&lt;br /&gt;
A number of non-developers have created plug-ins for BZFS, and usually release them on the [http://my.bzflag.org/bb/ BZFlag Forums].&lt;br /&gt;
&lt;br /&gt;
Here are the steps to compile a hypothetical third party plug-in named &amp;quot;Example&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
# In the plugins directory of the BZFlag source tree run the command &#039;&#039;&#039;./newplugin.sh Example&#039;&#039;&#039;&lt;br /&gt;
# Remove all of the files from the newly created plugins/Example directory (they were created by newplugin.sh)&lt;br /&gt;
# Copy all of the distributed Example files into the plugins/Example directory&lt;br /&gt;
# In the top-level BZFlag source directory, edit configure.ac, and add plugins/Example/Makefile to the list of AC_CONFIG_FILES&lt;br /&gt;
# In the top-level BZFlag source directory run &#039;&#039;&#039;autogen.sh&#039;&#039;&#039;, &#039;&#039;&#039;configure&#039;&#039;&#039;, and &#039;&#039;&#039;make&#039;&#039;&#039; as usual&lt;br /&gt;
&lt;br /&gt;
When that finishes successfully the plug-in should be ready to use as described above.&lt;br /&gt;
&lt;br /&gt;
In Xcode on Mac OS X, follow these instructions:&lt;br /&gt;
&lt;br /&gt;
# Click on the BZFlag project name in the project navigator. Click Add Target, and create a new C/C++ Library. Name the plugin, and select &amp;quot;Dynamic&amp;quot; for type.&lt;br /&gt;
# In the project navigator, move the new library target from the bottom of the screen into the &amp;quot;Targets&amp;quot; group.&lt;br /&gt;
# Click on the BZFlag project name in the project navigator again. In the list of targets, select the BZFlag application target. In the Build Phases tab, in the Target Dependencies pane, add your new library target as a dependency of the application target. Also add it to the Copy Files phase for the PlugIns directory.&lt;br /&gt;
# Select your new library target. Select the Build Settings tab, and locate the Other Linker Flags option. Add the option &amp;quot;-undefined dynamic_lookup&amp;quot;&lt;br /&gt;
# Find the Architecture build setting for your new library. Make sure it is the same architecture as the main codebase, or click Levels, click the Architecture setting under your library target, click Other, and delete the setting. This will make it assume the overall project build architecture.&lt;br /&gt;
# Add your source file(s) to the project, and make them members of your library target.&lt;br /&gt;
# Build as usual.&lt;br /&gt;
&lt;br /&gt;
==Preparing a Linux BZFS==&lt;br /&gt;
&lt;br /&gt;
In order to run plugins in BZFS, you need to recompile it with the --enable-shared option on the configure script.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note that as of 2.4.0 the BZFlag configuration has --enable-shared automatically enabled.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $ ./configure --enable-shared --disable-client;&lt;br /&gt;
       make;&lt;br /&gt;
       make install;&lt;br /&gt;
&lt;br /&gt;
==Plug-in Development==&lt;br /&gt;
{{DoDoc|Describe the basics of plug-in development.}}&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
The plug-in system was added in BZFlag V. 2.0.4 and was initially met with a lukewarm reception by some of the core developers and the maintainer. The community has since embraced the concept and built a multitude of useful modifications, many that have been incorporated into the project as standard plug-ins.&lt;br /&gt;
&lt;br /&gt;
For Version 3.0 major changes to the [[BZFS API]] have been made to increase it&#039;s lifespan.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Plug-Ins]]&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=DevelopmentPlans/2.3&amp;diff=7617</id>
		<title>DevelopmentPlans/2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=DevelopmentPlans/2.3&amp;diff=7617"/>
		<updated>2011-05-12T22:06:55Z</updated>

		<summary type="html">&lt;p&gt;Constitution: Sign up for a few of the changes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
BZFlag 2.3 will be a development version that will be released as 2.4.0.0. This is to get around the problem that [[BZFlag 3.0]] development has stalled and does not look like it will continue. This is a last ditch effort to get development moving again.&lt;br /&gt;
&lt;br /&gt;
==Goal==&lt;br /&gt;
The goal is to release a new version of [[Main Page|BZFlag]] that is incompatible with 2.0.x for a good reason, and has at least one new feature that will make many players &#039;&#039;&#039;want&#039;&#039;&#039; to upgrade.&lt;br /&gt;
&lt;br /&gt;
The hope is that this process will renew developer motivation and attract new developers.&lt;br /&gt;
&lt;br /&gt;
==Schedule==&lt;br /&gt;
* Solicit specific change proposals that can be completed within one month.  Each proposal must be sponsored by an individual developer who will lead its implementation. &#039;&#039;&#039;In Progress&#039;&#039;&#039;&lt;br /&gt;
* When proposals are in and accepted by consensus, start the 1-month countdown clock.&lt;br /&gt;
* Move trunk to a v2_99_branch.&lt;br /&gt;
* Copy v2_0branch to trunk and change protocol number.&lt;br /&gt;
* Implement accepted proposals and test.&lt;br /&gt;
* Change the version docs to make compatibility be the minor version number.&lt;br /&gt;
* Document server upgrade process for the many server owners.&lt;br /&gt;
* After 1 month, revert any changes that have caused unfixed regressions.&lt;br /&gt;
* Do a release candidate before final release?&lt;br /&gt;
* Make trunk into 2.4.0.0 for release.&lt;br /&gt;
* Tag Trunk to 2_4branch and release.&lt;br /&gt;
&lt;br /&gt;
==Projects==&lt;br /&gt;
These are the many ideas, both new and old, for changes to BZFlag.&lt;br /&gt;
&lt;br /&gt;
===Viable Projects===&lt;br /&gt;
The developers believe any (but not all) of the following could be added to 2.3 within the proposed schedule.&lt;br /&gt;
&lt;br /&gt;
====Backports====&lt;br /&gt;
These 2.99 features are suitable for porting to 2.3.&lt;br /&gt;
&lt;br /&gt;
* Connection header change (HTTP-style) &#039;&#039;JeffM&#039;&#039;&lt;br /&gt;
* New GUI elements &#039;&#039;DTRemenak&#039;&#039;&lt;br /&gt;
* Server-side scoring &#039;&#039;DTRemenak&#039;&#039;&lt;br /&gt;
* Segmented simulation loop (to prevent wallwalking)&#039;&#039;JeffM&#039;&#039;&lt;br /&gt;
* Server-side flag ID and pickup&lt;br /&gt;
* [[2.3_NewShotGraphics|New shot graphics]] (geolaser/geothief)&#039;&#039;JeffM&#039;&#039; &#039;&#039;&#039;Discuss on IRC&#039;&#039;&#039;&lt;br /&gt;
* HUD markers &#039;&#039;JeffM&#039;&#039;&lt;br /&gt;
* [[2.3_QualityChanges|Removal of low graphics, promotion of experimental to high]]. &#039;&#039;JeffM&#039;&#039;&lt;br /&gt;
* Server list from GSoC &#039;&#039;DTRemenak&#039;&#039;&lt;br /&gt;
* BZFS API rework &#039;&#039;JeffM&#039;&#039;&lt;br /&gt;
* Remove local authentication (the /identify command)&lt;br /&gt;
* Windows project cleanup &#039;&#039;JeffM&#039;&#039;&lt;br /&gt;
* New make system&lt;br /&gt;
* New source docs (authors etc...) &#039;&#039;Constitution&#039;&#039;&lt;br /&gt;
* Server-side handicap&lt;br /&gt;
* Guided Missile shot checks&lt;br /&gt;
* Stealth fixes for rabbit &#039;&#039;mdskpr&#039;&#039;&lt;br /&gt;
* Asynchronous screenshot compression so client won&#039;t freeze up during screenshots &#039;&#039;DTRemenak&#039;&#039;&lt;br /&gt;
* BZFlag update notification &#039;&#039;DTRemenak&#039;&#039;&lt;br /&gt;
* Wings velocity change (additive flap instead of instant upward velocity) &#039;&#039;blast007&#039;&#039;&lt;br /&gt;
* Message protection (ensure network messages are valid)&lt;br /&gt;
* Add message types so that actions (/me) are properly implemented&lt;br /&gt;
* New artwork &#039;&#039;JeffM&#039;&#039;&lt;br /&gt;
* Server option to disable teamkills &#039;&#039;JeffM&#039;&#039;&lt;br /&gt;
* OpenFFA &#039;&#039;JeffM&#039;&#039;&lt;br /&gt;
* Download URL change (to force just images.bzflag.org, not any .org or .bz) &#039;&#039;Constitution&#039;&#039;&lt;br /&gt;
* Remove option to turn off fog &#039;&#039;JeffM&#039;&#039;&lt;br /&gt;
* Require OpenGL 1.2 &#039;&#039;JeffM&#039;&#039;&lt;br /&gt;
* Only allow a single end shot credit for holding the shield flag &#039;&#039;Thumper&#039;&#039;&lt;br /&gt;
* Only players with POLL permission are eligible to take part in a vote &#039;&#039;Thumper&#039;&#039;&lt;br /&gt;
* Add the /serverdebug command &#039;&#039;Thumper&#039;&#039;&lt;br /&gt;
* bzfs: Report errors to stderr instead of stdout &#039;&#039;Thumper&#039;&#039;&lt;br /&gt;
* bzfs: Add -utc switch to output log messages in UTC instead of localtime &#039;&#039;Thumper&#039;&#039;&lt;br /&gt;
* bzfs: Fix timestamp buffer size so -ts micros output fits &#039;&#039;Thumper&#039;&#039;&lt;br /&gt;
* Joystick input fixes/enhancements &#039;&#039;DTRemenak&#039;&#039;&lt;br /&gt;
* Remove -geometry and make -window take a size &#039;&#039;JeffM&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====New Changes====&lt;br /&gt;
* Round Robin for services&lt;br /&gt;
* Fix the protocol bug that version [[BZFlag 2.0.16|2.0.16]] was a band-aid for&lt;br /&gt;
* Facilitate moving global services (e.g., my.bzflag.org) to new hardware, if any changes will help &#039;&#039;JeffM&#039;&#039; &#039;&#039;Blast007&#039;&#039; &#039;&#039;JoeVano&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===To Evaluate===&lt;br /&gt;
These items need further evaluation to see if they can be or should be backported from 2.99. These may exist as code or patches.&lt;br /&gt;
&lt;br /&gt;
====Backports====&lt;br /&gt;
* Map changes&lt;br /&gt;
* HTTP plugins &#039;&#039;JeffM&#039;&#039;&lt;br /&gt;
* New API events &#039;&#039;JeffM&#039;&#039;&lt;br /&gt;
* Custom flag system &#039;&#039;DTRemenak&#039;&#039;&lt;br /&gt;
* BZFSCron &#039;&#039;Thumper&#039;&#039;&lt;br /&gt;
* Server Side Players &#039;&#039;JeffM&#039;&#039;&lt;br /&gt;
* Bug fixes not in notes &#039;&#039;Thumper&#039;&#039;&lt;br /&gt;
* New flags&lt;br /&gt;
* Rabbit as proper team&lt;br /&gt;
&lt;br /&gt;
====New Changes====&lt;br /&gt;
* Countdown/reload timer position fix for when showCoordinates is enabled &#039;&#039;mdskpr&#039;&#039;&lt;br /&gt;
* SVN props cleanup&lt;br /&gt;
* Display BZBB rank images in game. &#039;&#039;JeffM&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Exclusions===&lt;br /&gt;
These items should not be done or backported at this time due to stability issues or the large effort required. These are generally the blocking items preventing 3.0&#039;s current release.&lt;br /&gt;
&lt;br /&gt;
* Network buffering&lt;br /&gt;
* Lua&lt;br /&gt;
* Lag compensation (needs a lot more testing)&lt;br /&gt;
* Acceleration changes&lt;br /&gt;
* Font system (still has some bugs/glitches and possible performance issues)&lt;br /&gt;
* New Translations (requires the new font system)&lt;br /&gt;
* Map geometry changes (requires flag zap zone support or breaks existing servers)&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=DevelopmentPlans/2.3&amp;diff=7581</id>
		<title>DevelopmentPlans/2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=DevelopmentPlans/2.3&amp;diff=7581"/>
		<updated>2011-05-11T21:21:09Z</updated>

		<summary type="html">&lt;p&gt;Constitution: Added section for trivial/polish features&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BZFlag 2.3 will be a development version intended to sidestep the abandonment of [[BZFlag 3.0]] development.&lt;br /&gt;
&lt;br /&gt;
==Goal==&lt;br /&gt;
The goal is to release a new version of [[Main Page|BZFlag]] that is incompatible with 2.0.x for a good reason, and has at least one new feature that will make many players &#039;&#039;&#039;want&#039;&#039;&#039; to upgrade.&lt;br /&gt;
&lt;br /&gt;
The hope is that this process will renew developer motivation and attract new developers.&lt;br /&gt;
&lt;br /&gt;
Note: This proposal requires changing the version docs to make the compatability be the minor version number.&lt;br /&gt;
&lt;br /&gt;
==General ideas==&lt;br /&gt;
* Facilitate moving global services (e.g., my.bzflag.org) to new hardware.&lt;br /&gt;
* Add one or two non-trivial client features so the players will be motivated to upgrade&lt;br /&gt;
  - graphics quality?&lt;br /&gt;
  - server list backport?&lt;br /&gt;
  - Cloaked Shot flag (hoping for better than this)&lt;br /&gt;
* anti-cheating?&lt;br /&gt;
* Fix the protocol bug that version [[BZFlag 2.0.16|2.0.16]] was a bandaid for.&lt;br /&gt;
* Remove the /identify command.&lt;br /&gt;
* BZBB rank promotions! ;-)&lt;br /&gt;
&lt;br /&gt;
==Schedule==&lt;br /&gt;
* Immediately open 2.0.17 up for whitespace, Subversion properties, copyright notices, and other easy changes that don&#039;t break protocol.&lt;br /&gt;
* Solicit specific change proposals that can be completed within one month.  Each proposal must be sponsored by an individual developer who will lead its implementation.&lt;br /&gt;
* When proposals are in and accepted by consensus, start the 1-month countdown clock.&lt;br /&gt;
* Copy trunk to a V3_FAIL tag.&lt;br /&gt;
* Copy v2_0branch to trunk and commit a change that requires a new protocol number.&lt;br /&gt;
* Implement accepted proposals and test.&lt;br /&gt;
* After 1 month, revert any changes that have caused unfixed regressions.&lt;br /&gt;
* Update version docs and make trunk into 2.4.0.0 for releease.&lt;br /&gt;
* Tag Trunk to 2_4branch trelease.&lt;br /&gt;
&lt;br /&gt;
==Backports==&lt;br /&gt;
These items should be moved back from V3 into the new version.&lt;br /&gt;
&lt;br /&gt;
* Connection Header Change&lt;br /&gt;
* Round Robin for services&lt;br /&gt;
* New GUI elements&lt;br /&gt;
* Server Side Scoring&lt;br /&gt;
* Sim loop breakup (to prevent F5)&lt;br /&gt;
* Server Side Flag ID and pickup&lt;br /&gt;
* New Shot Graphics&lt;br /&gt;
* Hud Markers&lt;br /&gt;
* Removal of low graphics, promotion of experimental to high.&lt;br /&gt;
* Server List from SOC&lt;br /&gt;
* API rework&lt;br /&gt;
* Remove Identify&lt;br /&gt;
* Windows Project Cleanup&lt;br /&gt;
* New Make system&lt;br /&gt;
* New source docs ( authors etc..)&lt;br /&gt;
* Server side handicap&lt;br /&gt;
* Gm shot checks&lt;br /&gt;
* Stealth fixes for rabbit&lt;br /&gt;
* Screenshot fixes&lt;br /&gt;
* Update Notification&lt;br /&gt;
* Wings Velocity Change&lt;br /&gt;
* Message Protection&lt;br /&gt;
* New artwork&lt;br /&gt;
* no Tks&lt;br /&gt;
* open FFA&lt;br /&gt;
* download URL change ( to force just images.bzflag.org, not any .org or .bz )&lt;br /&gt;
* remove fog options ( let server force)&lt;br /&gt;
* require GL 1.2&lt;br /&gt;
&lt;br /&gt;
==Backport evals==&lt;br /&gt;
These items should be evaluated to see if they can be or should be moved back, but are not critial.&lt;br /&gt;
&lt;br /&gt;
* Map changes.&lt;br /&gt;
* HTTP plugins&lt;br /&gt;
* New API events&lt;br /&gt;
* BZFChron&lt;br /&gt;
* Server Side Players&lt;br /&gt;
* Bugfixs not in notes&lt;br /&gt;
* New flags&lt;br /&gt;
* Rabbit as team&lt;br /&gt;
&lt;br /&gt;
==Things NOT to backport==&lt;br /&gt;
These items should not be moved back due to stability issues. These are generaly be the blocking items preventing V3s current release.&lt;br /&gt;
&lt;br /&gt;
* Network buffering&lt;br /&gt;
* Lua&lt;br /&gt;
* Lag Comp&lt;br /&gt;
* Acceleration Changes&lt;br /&gt;
* Font System&lt;br /&gt;
* New Translations&lt;br /&gt;
* Map geometry changes ( requires flag zap zone support or breaks existing servers. )&lt;br /&gt;
&lt;br /&gt;
==Trivial/Polish features==&lt;br /&gt;
The following limited number of trivial/non-invasive new features or changes should be considered for implementation before the final stable release. These may already exist as patches which were rejected because they were for branch rather than trunk.&lt;br /&gt;
&lt;br /&gt;
* Countdown/reload timer position fix for when showCoordinates is enabled&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_2009&amp;diff=5683</id>
		<title>Google Summer of Code: 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_2009&amp;diff=5683"/>
		<updated>2009-04-07T01:06:06Z</updated>

		<summary type="html">&lt;p&gt;Constitution: Add myself to the mentors list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The 2009 Google Summer of Code was announced in February, 2009.  BZFlag is once again participating as a mentoring organization.  Given our enormously successful participation in the program in 2007 and 2008, we are very excited to be participating again.  We are accepting student project proposals from March 23 until April 3.  Hints and tips on [[Google_Summer_of_Code|getting started, preparing a submission, and the application process]] are available.&lt;br /&gt;
&lt;br /&gt;
Note that for 2009, we&#039;re expecting to only accept two or three new students so that we can focus our time and attention on those individuals and our upcoming major release.  That means you&#039;re really encouraged to talk with us early on and make an outstanding project proposal.  The best way to get our attention at this time is to make bug fixes.  We look forward to working with you!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Promotion Flyers =&lt;br /&gt;
&lt;br /&gt;
We&#039;re now soliciting designs for our 2009 GSoC promotional flyer.  If you are interested in providing a design, please contact us! &lt;br /&gt;
&lt;br /&gt;
= Proposal Ideas =&lt;br /&gt;
&lt;br /&gt;
While there are lots of [[Ideas]] floating around of varying utility to the game, the ideas listed below are the specific areas that we are predominantly interested in seeing worked on as part of the GSoC.  Please note that students are also welcome and encouraged to apply with their own ideas.  They should run those ideas by one of the developers beforehand to make sure they are consistent with the scope and focus of the project, though, as there are some ideas which will not be accepted regardless of the quality of the application and applicant.  We&#039;ve additionally provided several project ideas important to BZFlag development that we would very much like to see proposals for, shown in following. &lt;br /&gt;
&lt;br /&gt;
==High-Priority Project Ideas==&lt;br /&gt;
&lt;br /&gt;
This year our focus is on quality.  We need to stabilize our codebase and prepare for a major release.  That being the case, a &#039;&#039;&#039;*very*&#039;&#039;&#039; strong preference will be given to cleanup and refactoring projects over &#039;&#039;new code&#039;&#039; projects.  Please keep that in mind when preparing your application and do contact the developers if there are any questions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Suggest your own idea ===&lt;br /&gt;
BZFlag is always open to new development ideas and is under constant improvement.  If you are familiar with BZFlag&#039;s current capabilities and would like to propose some new enhancement, we&#039;d be happy to hear about.  Please discuss any new ideas with the existing core developers (on our IRC channel), if only to make sure the ideas are in-line with the spirit and constraints of the game.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: variable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lots o&#039; Bug fixing ===&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;It is often very complicated, difficult, and sometimes not very glamorous but this is our top-priority for 2009.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Basically, this project idea is right up in line with helping new developers become familiarized with the BZFlag code and to help us improve our code quality for an upcoming major release.  Propose fixing bugs.  You can propose fixing a lot of them or just a few, but you should be detailed and methodical in your approach.  Refactoring work related to fixing a bug is great.  A progressive/agile/iterative approach to identifying which bugs you intend to look into and fix would also be fantastic.&lt;br /&gt;
&lt;br /&gt;
There is an extensive list of bugs that need to be addressed at https://sourceforge.net/tracker2/?group_id=3248&amp;amp;atid=103248 and http://bzflag.svn.sourceforge.net/svnroot/bzflag/trunk/bzflag/BUGS at your disposal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
*Familiarity with C/C++&lt;br /&gt;
*Good problem solving and diagnostic skills&lt;br /&gt;
*(optional) Proficient with a debugger (you will be by the end)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: variable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cheat preventions ===&lt;br /&gt;
This task involves making BZFlag more robust towards preventing various cheats from working in the game.  This task implicitly requires adding protections on the server, moving game logic from the client to the server, and/or adding heuristics and other measures for detecting and dealing with cheat clients.  The student should have a strong grasp of the variety of BZFlag cheats that are available.  Please go into detail about which cheats you&#039;re interested in preventing and how you intend to employ those preventive measures. For information on known cheats, check out the [[Known Cheats]] wiki page.  &#039;&#039;This is a high-priority idea.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
*Strong familiarity with C/C++&lt;br /&gt;
*Basic familiarity with client/server networking applications&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modularization of game logic ===&lt;br /&gt;
Much of the game logic is presently mixed in with BZFlag&#039;s graphics code. This lack of organization make it difficult to find code when necessary, and does not allow bzfs, bzrobots, or other tools to utilize the game logic. The game code should be modularized into [[DevelopmentGoals#libGame|libgame]] so that all that is left in the client code is the graphics subsystem. This will also ease the possible future integration of a 3D graphics engine.  &#039;&#039;This is a high-priority topic.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
*Familiarity with C/C++&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: low&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modularization of OpenGL logic===&lt;br /&gt;
BZFlag&#039;s graphics code is (unfortunately) spread throughout the codebase with OpenGL calls being made in thousands of places.  The goal of this project would be to encapsulate *all* of the OpenGL calls into one place as a first step towards encapsulating all of the graphics code so that we can adopt a 3D rendering engine.  This project should not be to integrate with an engine, though, as there&#039;s too much that needs to happen beforehand.  Step one is getting all of the graphics code contained. &#039;&#039;This is a high-priority topic.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
*Familiarity with C/C++&lt;br /&gt;
*Basic familiarity with OpenGL&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: low&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Network Testing and Simulation Environment ===&lt;br /&gt;
This task should provide a controlled testing environment for simulating network behavioral characteristics, including the ability to change virtual network parameters to induce different network conditions of lag and packet loss.  This environment should provide a viewer capability to observe interactions of BZFlag clients being tested from the perspective of the player, the server, and third-party observers.  This simulation framework should work with the client and server directly so that testing of actual changes may be performed in a stand-alone environment.  &#039;&#039;This is a high-priority topic.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
*Familiarity with C/C++&lt;br /&gt;
*Strong familiarity with networking applications and implications&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: medium&lt;br /&gt;
&lt;br /&gt;
==Additional Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
While code cleanup and refactoring projects are our top-priority, other projects will certainly be considered if the idea is well thought-out and the student is passionate about the idea.  Continuing a previously successful GSoC project is also something very highly desired (even if it does entail new code).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== BZWorkBench world editor enhancement ===&lt;br /&gt;
&#039;&#039;This project is a continuation of a previous GSoC project.  Please contact the developers before proposing this idea to determine the current status of the work and how you can help continue the effort.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As a participant in last year&#039;s program, Jude Nelson started work on BZWorkBench.  It is a world file editor with a very solid foundation but much work still remains to be done, including a cross-platform GUI, mesh support, and other editor features.  Ideally, two students would work on this.  For example, one student could focus on improving the GUI&#039;s workflow and ease-of-use, and another could focus on finishing the back-end object manipulation.&lt;br /&gt;
&lt;br /&gt;
The current GUI does not conform to a specific HIG, nor does its usability resemble many other 3D editors; this should change.  The back-end still lacks support for many of the objects added in BZFlag 2.0, such as Meshes, texture matrices, dynamic colors, etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
*Familiarity with C/C++&lt;br /&gt;
*Ability to read through other people&#039;s code&lt;br /&gt;
*Basic GUI, interaction, and usability design&lt;br /&gt;
*Acceptance testing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: high&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Global authentication daemon ===&lt;br /&gt;
&#039;&#039;This project is a continuation of a previous GSoC project.  Please contact the developers before proposing this idea to determine the current status of the work and how you can help continue the effort.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The goal of this project would be to provide global account management system daemon that the client and servers would communicate with for account, group membership, and profile information.  This effort preferably be written in C++, would need to talk to an LDAP server for persistent storage on the backend, and allow chaining across multiple daemons for data replication and failover service.  The daemon would need to provide a well structured simple communications API that the game client and game servers can securely talk to.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
*Familiarity with C/C++&lt;br /&gt;
*Familiarity with LDAP&lt;br /&gt;
*Familiarity with client/server networking applications&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Enhanced server listing ===&lt;br /&gt;
&#039;&#039;This project is a continuation of a previous GSoC project.  Please contact the developers before proposing this idea to determine the current status of the work and how you can help continue the effort.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The game client includes a simplistic listing of publicly available servers.  This task would involve significantly enhancing the listing section in BZFlag to allow for various sortings (e.g. ping time, country, name, etc), favorites, recently used, specific additional information on specific servers, and all existing information.  The task would involve coming up with a user-friendly design that is fully keyboard-accessible.  It could leverage external gui toolkits, use BZFlag&#039;s existing gui library, and/or extend the existing capabilities.  The focus would be on creating an intuitive and informative listing enhancement within the constraints of the gaming interface.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
*Familiarity with C/C++&lt;br /&gt;
*GUI, usability, and interaction design&lt;br /&gt;
*Acceptance testing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: low&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== BZRobots ===&lt;br /&gt;
&#039;&#039;This project is a continuation of a previous GSoC project.  Please contact the developers before proposing this idea to determine the current status of the work and how you can help continue the effort.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
BZFlag now has a programmable game client that can be used to implement artificially intelligent (AI) computer players.  More work is needeed, though, to clean up the code and deliver bzrobots as a new easy-to-use feature to users.  More work is needed.  BZRobots conforms to the Robocode API with a few minor (yet necessary) deviations, yet there are a few protocol actions that still need to be implemented.  There is also lots of code quality and refactoring issues that need to be addressed.  Presently, the code is a copy of the entire client code with user input removed so when a change or bug fix happens to the client, it has to also be manually changed in the bzrobots copy of the code.  The code needs to be refactored into common logic shared by both game clients.  &lt;br /&gt;
&lt;br /&gt;
See [[BZRobots]] for more information on the current status as well as src/bzrobots in a source checkout.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
*Familiarity with C/C++&lt;br /&gt;
*Ability to read through an existing code base and refactor appropriately&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: low&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Finish server-side players ===&lt;br /&gt;
BZFlag includes players that can be run and managed from the server through a server-side plugin.  Unlike the client-side BZRobots project, server-side robots have entirely different issues that they have to account for and information that they have access to.  This project would entail taking the work that has already been started to completion.  As this is a continuation, please do contact the developers before proposing this idea to determine the current status and work required.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
*Familiarity with C/C++&lt;br /&gt;
*Ability to pick up a work-in-progress&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: medium&lt;br /&gt;
&lt;br /&gt;
=== Dead Reckoning and other Networking Enhancements ===&lt;br /&gt;
The basic idea is to improve BZFlag&#039;s networking by performing dead reckoning on the server along with context-sensitive packet delivery culling.  Much work has gone into the game towards moving more and more of the game state to the server, but there is additional migration and protocol changes required.  Similarly, network utilization can be optimized by not relaying certain packets (like miniscule position updates to distant players) based on the current game state.  Some useful background reading for this task include &amp;quot;[http://www.research.ibm.com/netgames2005/papers/aggarwal.pdf Fairness in Dead-Reckoning based Distributed Multi-Player Games (pdf)]&amp;quot; and &amp;quot;[http://www.sigcomm.org/sigcomm2004/workshop_papers/net610-aggarwal.pdf Accuracy in Dead-Reckoning Based Distributed Multi-Player Games (pdf)]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
*Strong familiarity with C/C++&lt;br /&gt;
*Strong familiarity with networking applications&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: high&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Two-player tanks ===&lt;br /&gt;
This always gets some folks excited, but you will have to have already done a lot of research and make a good proposal before this idea will be considered.  That said, the topic of having two-player tanks where only one player drives and the other player only shoots has come up many times over the years.  BZFlag doesn&#039;t allow turret control specifically as a game design feature.  An initial two-player tank arrangement would probably not deviate from that requirement initially.  Lots of testing, interaction, and feedback are required for this feature to make it to release given how much it potentially would affect gameplay.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
*Familiarity with C/C++&lt;br /&gt;
*Strong ability to read through existing code&lt;br /&gt;
*Acceptance testing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: high &lt;br /&gt;
(the implementation itself is not hard at all, the acceptance testing will be) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Multiple display support===&lt;br /&gt;
Add the ability to effectively manage multiple display environments from within the game allowing for the detection, alignment/orientation specification, and resolution parameters for each display via menu options as well as proper full-screen and/or windowed support. An additional feature could involve allowing the user to dedicate a display to the various primary gui elements (the 3D environment, the radar, and the chat console). BZFlag&#039;s current context management is mostly handled by SDL or other platform-specific modules, so this could be taken into consideration. There&#039;s also the possibility of our move to an integrated graphics engine would similarly impact how multidisplay contexts are created and managed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
*Familiarity with C/C++&lt;br /&gt;
*Familiarity with SDL&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: low&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cross-server communications system ===&lt;br /&gt;
&#039;&#039;This project is a continuation of a previous GSoC project.  Please contact the developers before proposing this idea to determine the current status of the work and how you can help continue the effort.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This task would be the design and implementation of a server spanning chat system. It would allow players from one server to send chat messages to players on other servers. It should also be able to be used to allow players to know where there friends or &amp;quot;buddies&amp;quot; are playing if they are online. The system should tie into the central user name registration system. Added benefits would be the use of existing protocols or applications, such as Jabber or IRC, if they can be integrated cleanly. Support for using off-line apps for chat and friends list access as well as server management would be a plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
*Familiarity with C/C++&lt;br /&gt;
*Familiarity with networking applications&lt;br /&gt;
*Acceptance testing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: low&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===In-game profile management===&lt;br /&gt;
BZFlag allows players to specify a callsign and team in addition to other player characteristics and preferences. This enhancement would focus on allowing the user to specify and manage multiple profiles from within the game. Profiles could be linked together and should be presented in an intuitive manner (proposal should highlight how you&#039;d go about achieving that). The profiles would need to associate with global account information as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
*Familiarity with C/C++&lt;br /&gt;
*Familiarity with GUI, interaction, and usability design&lt;br /&gt;
*Acceptance testing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: low&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Integrated BZFS web interface (aka BZ&#039;s WebAdmin plugin) ===&lt;br /&gt;
&#039;&#039;This project is a continuation of a previous GSoC project.  Please contact the developers before proposing this idea to determine the current status of the work and how you can help continue the effort.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The BZFlag game server, BZFS, could benefit from having a browser-accessible http/https interface for viewing server statistics, setting various parameters, and otherwise controlling the server daemon while it is running. Similar to how your network router has a web interface for changing configuration parameters, this idea is simply to create this interface in a maintainable and portable manner. There was a previous GSoC project that worked on a server-side plugin that provides this feature, but it needs a lot more work both on the interface and in the logic.  Be sure to discuss this with the developers before suggesting it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
*Familiarity with C/C++&lt;br /&gt;
*Familiarity with GUI, interaction, and usability design&lt;br /&gt;
*Acceptance testing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: low&lt;br /&gt;
&lt;br /&gt;
= Mentors =&lt;br /&gt;
&lt;br /&gt;
BZFlag operates with a &#039;&#039;group mentoring&#039;&#039; approach meaning that students may (and should) call upon any developer within the community if they have questions.  The mentors for 2009 are:&lt;br /&gt;
&lt;br /&gt;
* Sean Morrison (brlcad/learner)&lt;br /&gt;
* Daniel Remenak (DTRemenak/Erroneous)&lt;br /&gt;
* Jeffrey Myers (JeffM/JeffM2501)&lt;br /&gt;
* Julio Jiménez Borreguero (Manu/jujibo)&lt;br /&gt;
* Scott Wichser (Blast/Blast007)&lt;br /&gt;
* David Wollner (JB diGriz)&lt;br /&gt;
* Joe VanOverberghe (joevano/Donny_Baker)&lt;br /&gt;
* James Lawrence (spldart)&lt;br /&gt;
* Bernt Hansen (Thumper_)&lt;br /&gt;
* Jeff Makey (BulletCatcher)&lt;br /&gt;
* Jørgen Pedersen Tjernø (jorgenpt)&lt;br /&gt;
* Joshua Bodine (Constitution)&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Modular_Collisions&amp;diff=4771</id>
		<title>Modular Collisions</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Modular_Collisions&amp;diff=4771"/>
		<updated>2008-07-22T07:23:11Z</updated>

		<summary type="html">&lt;p&gt;Constitution: Initial edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In present trunk code, collisions between tanks and shots are detected and reported from clients and do not undergo any kind of server-side verification. This is a straightforward approach that allows for a single authority on collisions and keeps the synchronization issues at a minimum, but because the server does not verify the information sent by the clients, it is possible to modify clients to have a smaller hit zone (or none at all). Thanks to lag compensation and timestamps in messages, the server has all the information it needs to do basic checks on collisions between tanks and shots. Implementing such a verification system is the goal of the collisions branch, which is the subject of one of the 2008 Google Summer of Code students&#039; projects.&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZFlag_on_IRC&amp;diff=4617</id>
		<title>BZFlag on IRC</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZFlag_on_IRC&amp;diff=4617"/>
		<updated>2008-05-20T03:37:41Z</updated>

		<summary type="html">&lt;p&gt;Constitution: update ICF team name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The BZFlag communities use the [http://freenode.net/ freenode IRC network] for communication and collaboration. [http://en.wikipedia.org/wiki/IRC IRC]&lt;br /&gt;
&lt;br /&gt;
The [http://freenode.net/ freenode network] is used for all IRC communications.&lt;br /&gt;
Common channels include:&lt;br /&gt;
* [irc://irc.freenode.net/#bzflag #bzflag]&lt;br /&gt;
* [irc://irc.freenode.net/#bzchat #bzchat]&lt;br /&gt;
&lt;br /&gt;
A web interface is provided to these channels at http://my.BZFlag.org/irc/irc.cgi&lt;br /&gt;
==Channels==&lt;br /&gt;
&lt;br /&gt;
===#bzflag===&lt;br /&gt;
The #bzflag channel is the primary development and support channel. The major developers and many long time community members are users. Discussions in the channel range from development and coding discussions to technical support and bug reports. #bzflag is a great channel to discuss new features and bugs. The channel is moderated by the project administration and development staff. &#039;&#039;&#039;This channel is not for help with specific servers or administration issues&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===#bzchat===&lt;br /&gt;
The #bzchat channel is a more informal channel designated for player community discussions.&lt;br /&gt;
&lt;br /&gt;
===Other channels===&lt;br /&gt;
A number of players, servers, and [[leagues]] have their own channel for more focused discussion, some of these include:&lt;br /&gt;
&lt;br /&gt;
* ##bar (DUCLeague team, The Barbarians)&lt;br /&gt;
* #BoomBZ (Team Channel for GU team [BoOm])&lt;br /&gt;
* ##bz-inc (DUCLeague team, [http://my.bzflag.org/league/index.php?link=teaminfo&amp;amp;id=689/ Bz-Incorporated])&lt;br /&gt;
* ##bzflagr (Support channel for the [http://bzflagr.net BZFlagr.net servers.])&lt;br /&gt;
* #bzfx (Support channel for the bzfx.net BZFlag servers)&lt;br /&gt;
* ##bzpod (Channel to discuss the BZFlag podcast, BZPod)&lt;br /&gt;
* #bzflag (On irc.stormcenter.net, support channel for [http://www.bztank.net BZtank] servers)&lt;br /&gt;
* ##bzw (A place to discuss map making for BZFlag, including ideas and help)&lt;br /&gt;
* #divi (Support channel for [http://divi.fairserve.net Divibox] and other [http://fairserve.bzflag.org Fairserve] servers)&lt;br /&gt;
* #dub (Support channel for the dub.bzflag.org BZFlag servers)&lt;br /&gt;
* ##ducleague (Support channel for [http://my.bzflag.org/league/ Ducati League (DucLeague)])&lt;br /&gt;
* #forestforce ([http://gu.bzleague.com/index.php?link=teaminfo&amp;amp;id=10 GULeague Team])&lt;br /&gt;
* ##guleague (Support channel for [http://gu.bzleague.com/ GamesUnited League (GULeague)])&lt;br /&gt;
* #hepcat (Support channel for borrego.hepcat.org BZFlag server) &#039;&#039;defunct&#039;&#039;&lt;br /&gt;
* ##icf (Support channel for [http://gu.bzleague.com/index.php?link=teaminfo&amp;amp;id=112 Invisible Carniverous Flies, (GULeague)])&lt;br /&gt;
* #inleague (Support channel for [http://in.bzleague.com InterNational League (INLeague)])&lt;br /&gt;
* #kas (GULeague team, KAS)&lt;br /&gt;
* ##norang (Support channel for [http://bzflag.norang.ca Norang.ca] BZFlag servers)&lt;br /&gt;
* #pillbox (Support channel for [http://pillbox.bzleague.com/ Pillbox League (PBLeague)])&lt;br /&gt;
* ##planetmofo (Support channel for [http://www.planet-mofo.com planet-mofo.com] servers)&lt;br /&gt;
* #plosileague (Support channel for [http://bzfx.net/league/ Plosileague])&lt;br /&gt;
* #silvercat (Support channel for [http://silvercat.bzflag.org/ Silvercat BZFlag servers]) &#039;&#039;defunct&#039;&#039;&lt;br /&gt;
* ##t42 ([http://gu.bzleague.com/index.php?link=teaminfo&amp;amp;id=39 GULeague team])&lt;br /&gt;
* ##untamed ([http://my.bzflag.org/league/index.php?link=teaminfo&amp;amp;id=909 DUCLeague team])&lt;br /&gt;
&lt;br /&gt;
==IRC Clients==&lt;br /&gt;
To access the IRC network you need to use an IRC client, there are many IRC client softwares available for most operating systems. &lt;br /&gt;
&lt;br /&gt;
http://irchelp.org/ is an excellent resource for more information on general IRC.&lt;br /&gt;
&lt;br /&gt;
===Web IRC Interface===&lt;br /&gt;
The project provides a [http://my.BZFlag.org/irc/irc.cgi web based interface] to the main IRC channels. These are intended mostly for tech support issues, and the web interface is limited in the number of channels it can access.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
http://my.BZFlag.org/irc/irc.cgi&lt;br /&gt;
&lt;br /&gt;
http://irchelp.org/&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Support]]&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZFlag_on_IRC&amp;diff=4522</id>
		<title>BZFlag on IRC</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZFlag_on_IRC&amp;diff=4522"/>
		<updated>2008-04-24T04:15:58Z</updated>

		<summary type="html">&lt;p&gt;Constitution: Re-alphabetize &amp;quot;other channels&amp;quot; listing, add #divi channel info, update ICF team name.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The BZFlag communities use the [http://freenode.net/ freenode IRC network] for communication and collaboration. [http://en.wikipedia.org/wiki/IRC IRC]&lt;br /&gt;
&lt;br /&gt;
The [http://freenode.net/ freenode network] is used for all IRC communications.&lt;br /&gt;
Common channels include:&lt;br /&gt;
* [irc://irc.freenode.net/#bzflag #bzflag]&lt;br /&gt;
* [irc://irc.freenode.net/#bzchat #bzchat]&lt;br /&gt;
&lt;br /&gt;
A web interface is provided to these channels at http://my.BZFlag.org/irc/irc.cgi&lt;br /&gt;
==Channels==&lt;br /&gt;
&lt;br /&gt;
===#bzflag===&lt;br /&gt;
The #bzflag channel is the primary development and support channel. The major developers and many long time community members are users. Discussions in the channel range from development and coding discussions to technical support and bug reports. #bzflag is a great channel to discuss new features and bugs. The channel is moderated by the project administration and development staff.&lt;br /&gt;
&lt;br /&gt;
===#bzchat===&lt;br /&gt;
The #bzchat channel is a more informal channel designated for player community discussions.&lt;br /&gt;
&lt;br /&gt;
===Other channels===&lt;br /&gt;
A number of players, servers, and [[leagues]] have their own channel for more focused discussion, some of these include:&lt;br /&gt;
&lt;br /&gt;
* ##bar (DUCLeague team, The Barbarians)&lt;br /&gt;
* #BoomBZ (Team Channel for GU team [BoOm])&lt;br /&gt;
* ##bz-inc (DUCLeague team, [http://my.bzflag.org/league/index.php?link=teaminfo&amp;amp;id=689/ Bz-Incorporated])&lt;br /&gt;
* ##bzflagr (Support channel for the [http://bzflagr.net BZFlagr.net servers.])&lt;br /&gt;
* #bzfx (Support channel for the bzfx.net BZFlag servers)&lt;br /&gt;
* ##bzpod (Channel to discuss the BZFlag podcast, BZPod)&lt;br /&gt;
* ##bzw (A place to discuss map making for BZFlag, including ideas and help)&lt;br /&gt;
* #divi (Support channel for [http://divi.fairserve.net Divibox] and other [http://fairserve.bzflag.org Fairserve] servers)&lt;br /&gt;
* #dub (Support channel for the dub.bzflag.org BZFlag servers)&lt;br /&gt;
* ##ducleague (Support channel for [http://my.bzflag.org/league/ Ducati League (DucLeague)])&lt;br /&gt;
* #forestforce ([http://gu.bzleague.com/index.php?link=teaminfo&amp;amp;id=10 GULeague Team])&lt;br /&gt;
* ##guleague (Support channel for [http://gu.bzleague.com/ GamesUnited League (GULeague)])&lt;br /&gt;
* #hepcat (Support channel for borrego.hepcat.org BZFlag server)&lt;br /&gt;
* ##icf (Support channel for [http://gu.bzleague.com/index.php?link=teaminfo&amp;amp;id=112 Incredible Chipper Frogs, (GULeague)])&lt;br /&gt;
* #inleague (Support channel for [http://in.bzleague.com InterNational League (INLeague)])&lt;br /&gt;
* #kas (GULeague team, KAS)&lt;br /&gt;
* ##norang (Support channel for [http://bzflag.norang.ca Norang.ca] BZFlag servers)&lt;br /&gt;
* #pillbox (Support channel for [http://pillbox.bzleague.com/ Pillbox League (PBLeague)])&lt;br /&gt;
* ##planetmofo (Support channel for [http://www.planet-mofo.com planet-mofo.com] servers)&lt;br /&gt;
* #plosileague (Support channel for [http://bzfx.net/league/ Plosileague])&lt;br /&gt;
* #silvercat (Support channel for [http://silvercat.bzflag.org/ Silvercat BZFlag servers])&lt;br /&gt;
* ##t42 ([http://gu.bzleague.com/index.php?link=teaminfo&amp;amp;id=39 GULeague team])&lt;br /&gt;
* ##untamed ([http://my.bzflag.org/league/index.php?link=teaminfo&amp;amp;id=909 DUCLeague team])&lt;br /&gt;
&lt;br /&gt;
==IRC Clients==&lt;br /&gt;
To access the IRC network you need to use an IRC client, there are many IRC client softwares available for most operating systems. &lt;br /&gt;
&lt;br /&gt;
http://irchelp.org/ is an excellent resource for more information on general IRC.&lt;br /&gt;
&lt;br /&gt;
===Web IRC Interface===&lt;br /&gt;
The project provides a [http://my.BZFlag.org/irc/irc.cgi web based interface] to the main IRC channels. These are intended mostly for tech support issues, and the web interface is limited in the number of channels it can access.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
http://my.BZFlag.org/irc/irc.cgi&lt;br /&gt;
&lt;br /&gt;
http://irchelp.org/&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Support]]&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_2008&amp;diff=4421</id>
		<title>Google Summer of Code: 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_2008&amp;diff=4421"/>
		<updated>2008-04-08T00:21:54Z</updated>

		<summary type="html">&lt;p&gt;Constitution: The student application period has ended&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The 2008 Google Summer of Code was announced on February 25, 2008.  BZFlag has been accepted again this year as a mentoring organization.  Given our enormously successful participation in the program in 2007, we&#039;re very excited to be participating again and we&#039;re very happy to see the applications that were submitted. BZFlag accepted student project proposals from March 24 until April 7 ending at 5:00 PDT (0:00 April 8 GMT). Further information on our proposal ideas are below.  Hints and tips on  [[Google_Summer_of_Code|getting started, preparing a submission, and the application process]] were available. &#039;&#039;&#039;&#039;&#039;Accepted student proposals will be announced here and on the Google Summer of Code homepage on April 21 at around 12:00 PM PDT (19:00 GMT).&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Promotion Flyers =&lt;br /&gt;
&lt;br /&gt;
{|align=&amp;quot;right&amp;quot;&lt;br /&gt;
 |[[Image:BZGSoC2008_small.gif|thumb|left|512px]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Provided below is a promotional flyer to help spread the word about our involvement with the Google Summer of Code.  Flyers are available in various languages that we have mentors for so that students from all over the globe can be informed about the program.  While many developers can converse fluently in other languages, English is still expected for most developer discussions.  Feel free to distribute the flyer around your local colleges and universities.&lt;br /&gt;
&lt;br /&gt;
* English ([http://my.bzflag.org/gsoc/BZGSoC2008.pdf PDF]) ([http://my.bzflag.org/gsoc/BZGSoC2008.png PNG])&lt;br /&gt;
* Deutsch | German  ([http://my.bzflag.org/gsoc/BZGSoC2008_de.pdf PDF]) ([http://my.bzflag.org/gsoc/BZGSoC2008_de.png PNG])&lt;br /&gt;
* Español | Spanish ([http://my.bzflag.org/gsoc/BZGSoC2008_es.pdf PDF]) ([http://my.bzflag.org/gsoc/BZGSoC2008_es.png PNG])&lt;br /&gt;
&lt;br /&gt;
High praise and special thanks to Harry Keller (aka Saturos) for designing our 2008 GSoC flyer.&lt;br /&gt;
&lt;br /&gt;
= Proposal Ideas =&lt;br /&gt;
&lt;br /&gt;
While there are lots of [[Ideas]] floating around of varying utility to the game, the ideas listed below are the specific areas that we are predominantly interested in seeing worked on as part of the GSoC.  Please note that students are also welcome and encouraged to apply with their own ideas.  They should run those ideas by one of the developers beforehand to make sure they are consistent with the scope and focus of the project, though, as there are some ideas which will not be accepted regardless of the quality of the application and applicant.  We&#039;ve additionally provided several project ideas important to BZFlag development that we would very much like to see proposals for, shown in following. &lt;br /&gt;
&lt;br /&gt;
Ideas marked with an &amp;quot;*&amp;quot; asterisk indicate entries where we have received at least two or more applicant submissions for that idea.&lt;br /&gt;
&lt;br /&gt;
== Suggest your own idea ==&lt;br /&gt;
BZFlag is always open to new development ideas and is under constant improvement.  If you are familiar with BZFlag&#039;s current capabilities and would like to propose some new enhancement, we&#039;d be happy to hear about.  Please discuss any new ideas with the existing core developers (on our IRC channel), if only to make sure the ideas are in-line with the spirit and constraints of the game.&lt;br /&gt;
&lt;br /&gt;
== Cheat preventions ==&lt;br /&gt;
This task involves making BZFlag more robust towards preventing various cheats from working in the game.  This task implicitly requires adding protections on the server, moving game logic from the client to the server, and/or adding heuristics and other measures for detecting and dealing with cheat clients.  The student should have a strong grasp of the variety of BZFlag cheats that are available.  Please go into detail about which cheats you&#039;re interested in preventing and how you intend to employ those preventive measures. For information on known cheats, check out the [[Known Cheats]] wiki page.&lt;br /&gt;
&lt;br /&gt;
== Global authentication daemon ==&lt;br /&gt;
The goal of this project would be to provide global account management system daemon that the client and servers would communicate with for account, group membership, and profile information.  This effort preferably be written in C++, would need to talk to an LDAP server for persistent storage on the backend, and allow chaining across multiple daemons for data replication and failover service.  The daemon would need to provide a well structured simple communications API that the game client and game servers can securely talk to.&lt;br /&gt;
&lt;br /&gt;
== BZWorkBench world editor enhancement ==&lt;br /&gt;
As a participant in last year&#039;s program, Jude Nelson started work on BZWorkBench.  It is a world file editor with a very solid foundation but much work still remains to be done, including a cross-platform GUI, mesh support, and other editor features.  Ideally, two students would work on this.  For example, one student could focus on improving the GUI&#039;s workflow and ease-of-use, and another could focus on finishing the back-end object manipulation.&lt;br /&gt;
The current GUI does not conform to a specific HIG, nor does its usability resemble many other 3D editors; this should change.  The back-end still lacks support for many of the objects added in BZFlag 2.0, such as Meshes, texture matrices, dynamic colors, etc.&lt;br /&gt;
&lt;br /&gt;
== Enhanced server listing ==&lt;br /&gt;
The game client includes a simplistic listing of publicly available servers.  This task would involve significantly enhancing the listing section in BZFlag to allow for various sortings (e.g. ping time, country, name, etc), favorites, recently used, specific additional information on specific servers, and all existing information.  The task would involve coming up with a user-friendly design that is fully keyboard-accessible.  It could leverage external gui toolkits, use BZFlag&#039;s existing gui library, and/or extend the existing capabilities.  The focus would be on creating an intuitive and informative listing enhancement within the constraints of the gaming interface.&lt;br /&gt;
&lt;br /&gt;
== Modularization of game logic ==&lt;br /&gt;
Much of the game logic is presently mixed in with BZFlag&#039;s graphics code. This lack of organization make it difficult to find code when necessary, and does not allow bzfs, bzrobots, or other tools to utilize the game logic. The game code should be modularized into [[DevelopmentGoals#libGame|libgame]] so that all that is left in the client code is the graphics subsystem. This will also ease the possible future integration of a 3D graphics engine.&lt;br /&gt;
&lt;br /&gt;
== Dead Reckoning and other Networking Enhancements ==&lt;br /&gt;
The basic idea is to improve BZFlag&#039;s networking by performing dead reckoning on the server along with context-sensitive packet delivery culling.  Much work has gone into the game towards moving more and more of the game state to the server, but there is additional migration and protocol changes required.  Similarly, network utilization can be optimized by not relaying certain packets (like miniscule position updates to distant players) based on the current game state.  Some useful background reading for this task include &amp;quot;[http://www.research.ibm.com/netgames2005/papers/aggarwal.pdf Fairness in Dead-Reckoning based Distributed Multi-Player Games (pdf)]&amp;quot; and &amp;quot;[http://www.sigcomm.org/sigcomm2004/workshop_papers/net610-aggarwal.pdf Accuracy in Dead-Reckoning Based Distributed Multi-Player Games (pdf)]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Enhanced cross-platform multiple display support ==&lt;br /&gt;
Add the ability to effectively manage multiple display environments from within the game allowing for the detection, alignment/orientation specification, and resolution parameters for each display via menu options as well as proper full-screen and/or windowed support.  An additional feature could involve allowing the user to dedicate a display to the various primary gui elements (the 3D environment, the radar, and the chat console).  BZFlag&#039;s current context management is mostly handled by SDL or other platform-specific modules, so this could be taken into consideration.  There&#039;s also the possibility of our move to an integrated graphics engine would similarly impact how multidisplay contexts are created and managed.&lt;br /&gt;
&lt;br /&gt;
== Enhanced Statistics system ==&lt;br /&gt;
The goal of this idea would be to extend the existing web based statistics system to be more robust.&lt;br /&gt;
&lt;br /&gt;
Features could include:&lt;br /&gt;
&lt;br /&gt;
*Better integration with the list server.&lt;br /&gt;
*Use of a plug-in or server based stat &amp;quot;push&amp;quot; system instead of the current &amp;quot;pull&amp;quot; system.&lt;br /&gt;
*Better publishing of stats&lt;br /&gt;
*Publishing of recorded stat data to other sites.&lt;br /&gt;
*Better tracking of registered and unregistered players&lt;br /&gt;
*Tracking of leagues and individual match games.&lt;br /&gt;
*Generalizing the stats system to be used in other games/projects.&lt;br /&gt;
&lt;br /&gt;
== Integrated BZFS web interface ==&lt;br /&gt;
The BZFlag game server, BZFS, could benefit from having a browser-accessible http/https interface for viewing server statistics, setting various parameters, and otherwise controlling the server daemon while it is running.  Similar to how your network router has a web interface for changing configuration parameters, this idea is simply to create this interface in a maintainable and portable manner.  Please go into detail on how exactly you&#039;d go about doing this.&lt;br /&gt;
&lt;br /&gt;
== Network Testing and Simulation Environment ==&lt;br /&gt;
This task should provide a controlled testing environment for simulating network behavioral characteristics, including the ability to change virtual network parameters to induce different network conditions of lag and packet loss.  This environment should provide a viewer capability to observe interactions of BZFlag clients being tested from the perspective of the player, the server, and third-party observers.  This simulation framework should work with the client and server directly so that testing of actual changes may be performed in a stand-alone environment.&lt;br /&gt;
&lt;br /&gt;
== Cross server communications system ==&lt;br /&gt;
This task would be the design and implementation of a server spanning chat system. It would allow players from one server to send chat messages to players on other servers. It should also be able to be used to allow players to know where there friends or &amp;quot;buddies&amp;quot; are playing if they are online. The system should tie into the central user name registration system. Added benefits would be the use of existing protocols or applications, such as Jabber or IRC, if they can be integrated cleanly. Support for using off-line apps for chat and friends list access as well as server management would be a plus.&lt;br /&gt;
&lt;br /&gt;
== In-game profile management ==&lt;br /&gt;
BZFlag allows players to specify a callsign and team in addition to other player characteristics and preferences.  This enhancement would focus on allowing the user to specify and manage multiple profiles from within the game.  Profiles could be linked together and should be presented in an intuitive manner (proposal should highlight how you&#039;d go about achieving that).  The profiles would need to associate with global account information as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Mentors =&lt;br /&gt;
The mentors for 2008 are;&lt;br /&gt;
* Sean Morrison (brlcad/learner)&lt;br /&gt;
* Daniel Remenak (DTRemenak/Erroneous)&lt;br /&gt;
* Jeffrey Myers (JeffM/JeffM2501)&lt;br /&gt;
* Julio Jiménez Borreguero (Manu/jujibo)&lt;br /&gt;
* Scott Wichser (Blast/Blast007)&lt;br /&gt;
* David Wollner (JB diGriz)&lt;br /&gt;
* Joe VanOverberghe (Donny_Baker)&lt;br /&gt;
* James Lawrence (spldart)&lt;br /&gt;
&lt;br /&gt;
= Thanks &amp;amp; Appreciation =&lt;br /&gt;
&lt;br /&gt;
Thank you to the following individuals in the BZFlag community that helped prepare GSoC-related marketing materials:&lt;br /&gt;
&lt;br /&gt;
* Harry Keller (aka Saturos)&lt;br /&gt;
* Julio Jiménez Borreguero (aka jujibo aka Manu)&lt;br /&gt;
* Dexter Mason (aka whodaman)&lt;br /&gt;
* Sean Morrison (aka learner aka brlcad)&lt;br /&gt;
* Jeffrey Myers (aka JeffM)&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Lag&amp;diff=4376</id>
		<title>Lag</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Lag&amp;diff=4376"/>
		<updated>2008-04-01T23:32:17Z</updated>

		<summary type="html">&lt;p&gt;Constitution: Current version is 2.0.10&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The term Lag is a shorthand version for the concept of [http://en.wikipedia.org/wiki/Lag Network Latency]. It represents the real world delay in sending messages from one computer to another over a network. All network connections have latency.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
Lag is the network latency of a connection, or the time it takes for a network packet to travel from one host to another. Due to the speed of light, all network transmissions take some time, there is no such thing is a true &amp;quot;0&amp;quot; lag. &lt;br /&gt;
&lt;br /&gt;
Different types of internet connections have different latency characteristics, dependent on the technologies they use. Most modern broadband systems ( like cable modems or DSL ) have a minimum latency that measures in a few milliseconds. Modems can have minimum latencies that measure in the 10s to 100s of milliseconds. The bandwidth rating of a network connection has little impact on it&#039;s minimum latency. A DSL line rated at 3 megabits in bandwidth often has the same latency as one rated at 1 megabit.&lt;br /&gt;
&lt;br /&gt;
The distance along the network a message travels will also increase the time it takes to reach it&#039;s destination. The more hubs, routers, and switches the packets have to travel ( or hops ) will add additional time, as each hop takes some time to complete. Hosts that are more physically distant usually have more hops between them, due to the nature of the internet.&lt;br /&gt;
&lt;br /&gt;
==Lag and BZFlag==&lt;br /&gt;
Latency affects real time games in a very specific manner. A message sent from one user to the server will take some time to reach the server. This means that by the time the server receives a position update from a player, that user may have (and probably has) already moved from that position. Additional time is spent sending the message from the server to the other players. Depending on the latency of the various network connections, each player will get the update message at a different real world time. &lt;br /&gt;
&lt;br /&gt;
The short version of this is, when you get a message, the client isn&#039;t there anymore. This presents problems for messages that are time sensitive, such as positional updates, and shots.&lt;br /&gt;
&lt;br /&gt;
The current version of BZFlag ([[BZFlag 2.0.10|v.2.0.10]]) does not do any type of latency compensation on player messages. This means that the player you see on your screen is not where he is on his screen. This can produce an error in the perceived game states between the 2 users. One user may shoot where he believes the other is, and in his view score a hit, while on the other user&#039;s screen he has moved away from the position and saw a clear miss. The first user simply has not received his new positional update yet, because it is in the middle of network transmission.&lt;br /&gt;
&lt;br /&gt;
The BZFlag server has a method for measuring the latency of each client, and displaying it as a numeric value in milliseconds. You can check lag for all players by using the command &#039;&#039;&#039;/lagstats&#039;&#039;&#039; while playing (just send &#039;&#039;&#039;/lagstats&#039;&#039;&#039; as a chat message). Lagstats shows an approximation of the amount of time it takes for a network message to go back and forth from one player to the server and back again, not the amount of time it takes to go from one player to another player. For example, if you fire a shot, your client sends a message to the server, giving shot direction and speed. The server then relays this information to all the other clients.&lt;br /&gt;
&lt;br /&gt;
Other lag-related problems are &amp;quot;missing&amp;quot; or &amp;quot;dropped&amp;quot; packets and &amp;quot;jitter&amp;quot;. These can occur if there are more severe network problems which cause messages between players and the server to simply get lost, or to be delayed by inconsistent amounts of time. In an attempt to keep this explanation simple, these problems will not be covered here, other than to say that they compound the effects of lag to an even higher degree.&lt;br /&gt;
&lt;br /&gt;
Lag affects what you see while playing BZFlag, especially if the delay is high. The most common effect seen is &amp;quot;shots going through other tanks.&amp;quot; Many times you will hear players say &amp;quot;my shot went through you&amp;quot;, or &amp;quot;why didn&#039;t you die.&amp;quot; Many people have been accused of cheating due to the sometimes misunderstood effects of lag.&lt;br /&gt;
&lt;br /&gt;
== Fixing Lag ==&lt;br /&gt;
How to fix lag depends on what is causing it.&lt;br /&gt;
&lt;br /&gt;
=== Slow Internet Connection ===&lt;br /&gt;
Lag can be caused by a slow internet connection, such as dial-up. In that case, find a server that is more allowing, or get a better connection.&lt;br /&gt;
&lt;br /&gt;
=== Satellite Internet ===&lt;br /&gt;
Satellite internet is far too laggy for BZFlag. Sorry.&lt;br /&gt;
&lt;br /&gt;
=== Automatic Updates ===&lt;br /&gt;
Make sure software is not running scans for automatic updates in the background.&lt;br /&gt;
&lt;br /&gt;
=== Downloads ===&lt;br /&gt;
Don&#039;t download something and play BZFlag at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Internet-intensive programs ===&lt;br /&gt;
Other programs, such as other people playing an online game on your network, can cause lag.&lt;br /&gt;
&lt;br /&gt;
=== Distant Server ===&lt;br /&gt;
Try a different server. Often, lag is just caused by distance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The lag test program==&lt;br /&gt;
[[Image:Sample.png|thumb|200px|right|Chestal&#039;s lag-recording test program]]&lt;br /&gt;
&lt;br /&gt;
On the right, is a capture from a test program created by Chestal. This test program allows us to accurately capture and replay events which occur in BZFlag. With a small modification to the BZflag client program, it is possible to log tank movements and shots to a file. This file can then be analyzed with a special visualization program. In this sample, you can see two tanks, surrounded by circles which are their &#039;hit-zones&#039;. Any shots which intersect the hit-zone circle should result in an exploding tank! The green tank represents the player who was logging, other tank(s) are always red. Here, the green tank was lucky enough to avoid both shots by squeezing between them!&lt;br /&gt;
&lt;br /&gt;
NOTE: The tools mentioned here are not generally available, due to the large size of the log files created, and requirements of the visualization tool. There was some progress on this (automatic playback, height indicator, map displaying, callsigns) but the results are not available to the public, either.&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
===A real, common example of lag.===&lt;br /&gt;
&lt;br /&gt;
Here is a rather common example of a near-miss (no tanks exploded in this sequence). This is a real example, not an illustration. All three tankers were running the special logging client described above, and these images visualize all three captured logs at approximately the same moment. Note that even though lag was relatively low (all players were below 100ms), these captures show that each player sees something a bit different. Keep in mind that the green tank in each image is the one who&#039;s log is being shown. Click on any image for a full screen capture of the visualization tool.&lt;br /&gt;
&lt;br /&gt;
[[Image:Smallb.png|thumb|262px|right|Tank B&#039;s View]]&lt;br /&gt;
TANK B&#039;s LOG:&lt;br /&gt;
&lt;br /&gt;
Here we see tank B&#039;s point of view. From here, we see a shot which appears to hit tank A. In fact from this tank&#039;s point of view, it clearly does hit tank A.&lt;br /&gt;
&lt;br /&gt;
(Note: Tank B lag was approx. 50ms)&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
[[Image:Smalla.png|thumb|262px|right|Tank A&#039;s View]]&lt;br /&gt;
TANK A&#039;s LOG:&lt;br /&gt;
&lt;br /&gt;
And, here is tank A&#039;s point of view. The shot here has missed tank A. Keep in mind that tank A is moving forward here.&lt;br /&gt;
&lt;br /&gt;
(Note: Tank A lag was approx. 90ms)&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
[[Image:Smallc.png|thumb|262px|right|Tank C&#039;s View]]&lt;br /&gt;
TANK C&#039;s LOG:&lt;br /&gt;
&lt;br /&gt;
Tank C sees something similar to what tank B saw.&lt;br /&gt;
&lt;br /&gt;
(Note: Tank C lag was approx. 25ms)&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
===So, what happened?===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probably the most important factor to keep in mind here is that it is a player&#039;s OWN client which determines when he/she is hit,&#039;&#039;&#039; as it has the most accurate representation of its own tank location. Your tank&#039;s position is calculated locally, without any lag.&lt;br /&gt;
&lt;br /&gt;
So, tank A did not explode, because it &#039;knew&#039; that it had moved forward to avoid the shot. Due to the delay from lag, tanks B and C still saw tank A at its old position which had occurred a little over 1/10 second ago, so it &#039;&#039;&#039;appeared&#039;&#039;&#039; to them that the shot went through.&lt;br /&gt;
&lt;br /&gt;
In conclusion, not only can understanding lag make you a better player, but it can also explain why shots seem to go through other tanks. In general, your shots will be much more accurate if you compensate for lag by shooting where you opponent will be in 100ms, or whatever you and your opponent&#039;s combined lag is. Of course, if your opponent is constantly switching directions, this can be difficult.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Client]]&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Lag&amp;diff=4375</id>
		<title>Lag</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Lag&amp;diff=4375"/>
		<updated>2008-04-01T23:29:49Z</updated>

		<summary type="html">&lt;p&gt;Constitution: Fix parenthesis&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The term Lag is a shorthand version for the concept of [http://en.wikipedia.org/wiki/Lag Network Latency]. It represents the real world delay in sending messages from one computer to another over a network. All network connections have latency.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
Lag is the network latency of a connection, or the time it takes for a network packet to travel from one host to another. Due to the speed of light, all network transmissions take some time, there is no such thing is a true &amp;quot;0&amp;quot; lag. &lt;br /&gt;
&lt;br /&gt;
Different types of internet connections have different latency characteristics, dependent on the technologies they use. Most modern broadband systems ( like cable modems or DSL ) have a minimum latency that measures in a few milliseconds. Modems can have minimum latencies that measure in the 10s to 100s of milliseconds. The bandwidth rating of a network connection has little impact on it&#039;s minimum latency. A DSL line rated at 3 megabits in bandwidth often has the same latency as one rated at 1 megabit.&lt;br /&gt;
&lt;br /&gt;
The distance along the network a message travels will also increase the time it takes to reach it&#039;s destination. The more hubs, routers, and switches the packets have to travel ( or hops ) will add additional time, as each hop takes some time to complete. Hosts that are more physically distant usually have more hops between them, due to the nature of the internet.&lt;br /&gt;
&lt;br /&gt;
==Lag and BZFlag==&lt;br /&gt;
Latency affects real time games in a very specific manner. A message sent from one user to the server will take some time to reach the server. This means that by the time the server receives a position update from a player, that user may have (and probably has) already moved from that position. Additional time is spent sending the message from the server to the other players. Depending on the latency of the various network connections, each player will get the update message at a different real world time. &lt;br /&gt;
&lt;br /&gt;
The short version of this is, when you get a message, the client isn&#039;t there anymore. This presents problems for messages that are time sensitive, such as positional updates, and shots.&lt;br /&gt;
&lt;br /&gt;
The current version of BZFlag ([[BZFlag 2.0.8|v.2.0.8]]) does not do any type of latency compensation on player messages. This means that the player you see on your screen is not where he is on his screen. This can produce an error in the perceived game states between the 2 users. One user may shoot where he believes the other is, and in his view score a hit, while on the other user&#039;s screen he has moved away from the position and saw a clear miss. The first user simply has not received his new positional update yet, because it is in the middle of network transmission.&lt;br /&gt;
&lt;br /&gt;
The BZFlag server has a method for measuring the latency of each client, and displaying it as a numeric value in milliseconds. You can check lag for all players by using the command &#039;&#039;&#039;/lagstats&#039;&#039;&#039; while playing (just send &#039;&#039;&#039;/lagstats&#039;&#039;&#039; as a chat message). Lagstats shows an approximation of the amount of time it takes for a network message to go back and forth from one player to the server and back again, not the amount of time it takes to go from one player to another player. For example, if you fire a shot, your client sends a message to the server, giving shot direction and speed. The server then relays this information to all the other clients.&lt;br /&gt;
&lt;br /&gt;
Other lag-related problems are &amp;quot;missing&amp;quot; or &amp;quot;dropped&amp;quot; packets and &amp;quot;jitter&amp;quot;. These can occur if there are more severe network problems which cause messages between players and the server to simply get lost, or to be delayed by inconsistent amounts of time. In an attempt to keep this explanation simple, these problems will not be covered here, other than to say that they compound the effects of lag to an even higher degree.&lt;br /&gt;
&lt;br /&gt;
Lag affects what you see while playing BZFlag, especially if the delay is high. The most common effect seen is &amp;quot;shots going through other tanks.&amp;quot; Many times you will hear players say &amp;quot;my shot went through you&amp;quot;, or &amp;quot;why didn&#039;t you die.&amp;quot; Many people have been accused of cheating due to the sometimes misunderstood effects of lag.&lt;br /&gt;
&lt;br /&gt;
== Fixing Lag ==&lt;br /&gt;
How to fix lag depends on what is causing it.&lt;br /&gt;
&lt;br /&gt;
=== Slow Internet Connection ===&lt;br /&gt;
Lag can be caused by a slow internet connection, such as dial-up. In that case, find a server that is more allowing, or get a better connection.&lt;br /&gt;
&lt;br /&gt;
=== Satellite Internet ===&lt;br /&gt;
Satellite internet is far too laggy for BZFlag. Sorry.&lt;br /&gt;
&lt;br /&gt;
=== Automatic Updates ===&lt;br /&gt;
Make sure software is not running scans for automatic updates in the background.&lt;br /&gt;
&lt;br /&gt;
=== Downloads ===&lt;br /&gt;
Don&#039;t download something and play BZFlag at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Internet-intensive programs ===&lt;br /&gt;
Other programs, such as other people playing an online game on your network, can cause lag.&lt;br /&gt;
&lt;br /&gt;
=== Distant Server ===&lt;br /&gt;
Try a different server. Often, lag is just caused by distance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The lag test program==&lt;br /&gt;
[[Image:Sample.png|thumb|200px|right|Chestal&#039;s lag-recording test program]]&lt;br /&gt;
&lt;br /&gt;
On the right, is a capture from a test program created by Chestal. This test program allows us to accurately capture and replay events which occur in BZFlag. With a small modification to the BZflag client program, it is possible to log tank movements and shots to a file. This file can then be analyzed with a special visualization program. In this sample, you can see two tanks, surrounded by circles which are their &#039;hit-zones&#039;. Any shots which intersect the hit-zone circle should result in an exploding tank! The green tank represents the player who was logging, other tank(s) are always red. Here, the green tank was lucky enough to avoid both shots by squeezing between them!&lt;br /&gt;
&lt;br /&gt;
NOTE: The tools mentioned here are not generally available, due to the large size of the log files created, and requirements of the visualization tool. There was some progress on this (automatic playback, height indicator, map displaying, callsigns) but the results are not available to the public, either.&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
===A real, common example of lag.===&lt;br /&gt;
&lt;br /&gt;
Here is a rather common example of a near-miss (no tanks exploded in this sequence). This is a real example, not an illustration. All three tankers were running the special logging client described above, and these images visualize all three captured logs at approximately the same moment. Note that even though lag was relatively low (all players were below 100ms), these captures show that each player sees something a bit different. Keep in mind that the green tank in each image is the one who&#039;s log is being shown. Click on any image for a full screen capture of the visualization tool.&lt;br /&gt;
&lt;br /&gt;
[[Image:Smallb.png|thumb|262px|right|Tank B&#039;s View]]&lt;br /&gt;
TANK B&#039;s LOG:&lt;br /&gt;
&lt;br /&gt;
Here we see tank B&#039;s point of view. From here, we see a shot which appears to hit tank A. In fact from this tank&#039;s point of view, it clearly does hit tank A.&lt;br /&gt;
&lt;br /&gt;
(Note: Tank B lag was approx. 50ms)&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
[[Image:Smalla.png|thumb|262px|right|Tank A&#039;s View]]&lt;br /&gt;
TANK A&#039;s LOG:&lt;br /&gt;
&lt;br /&gt;
And, here is tank A&#039;s point of view. The shot here has missed tank A. Keep in mind that tank A is moving forward here.&lt;br /&gt;
&lt;br /&gt;
(Note: Tank A lag was approx. 90ms)&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
[[Image:Smallc.png|thumb|262px|right|Tank C&#039;s View]]&lt;br /&gt;
TANK C&#039;s LOG:&lt;br /&gt;
&lt;br /&gt;
Tank C sees something similar to what tank B saw.&lt;br /&gt;
&lt;br /&gt;
(Note: Tank C lag was approx. 25ms)&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
===So, what happened?===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probably the most important factor to keep in mind here is that it is a player&#039;s OWN client which determines when he/she is hit,&#039;&#039;&#039; as it has the most accurate representation of its own tank location. Your tank&#039;s position is calculated locally, without any lag.&lt;br /&gt;
&lt;br /&gt;
So, tank A did not explode, because it &#039;knew&#039; that it had moved forward to avoid the shot. Due to the delay from lag, tanks B and C still saw tank A at its old position which had occurred a little over 1/10 second ago, so it &#039;&#039;&#039;appeared&#039;&#039;&#039; to them that the shot went through.&lt;br /&gt;
&lt;br /&gt;
In conclusion, not only can understanding lag make you a better player, but it can also explain why shots seem to go through other tanks. In general, your shots will be much more accurate if you compensate for lag by shooting where you opponent will be in 100ms, or whatever you and your opponent&#039;s combined lag is. Of course, if your opponent is constantly switching directions, this can be difficult.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Client]]&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_2008&amp;diff=4160</id>
		<title>Google Summer of Code: 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_2008&amp;diff=4160"/>
		<updated>2008-03-07T00:14:01Z</updated>

		<summary type="html">&lt;p&gt;Constitution: /* Cheat preventions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Google Summer of Code 2008 was announced on February 25, 2008. Given our enormously successful participation in the program in 2007, BZFlag plans to reapply to participate in the program in 2008. If accepted, BZFlag will accept student project proposals from March 24 to March 31 ending at 5:00 PDT (0:00 April 1 GMT). Further information on the application proccess and some proposal ideas are below.&lt;br /&gt;
&lt;br /&gt;
= Promotion Flyers =&lt;br /&gt;
&lt;br /&gt;
{|align=&amp;quot;right&amp;quot;&lt;br /&gt;
 |[[Image:BZGSoC2008_small.gif|thumb|left|512px]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Provided below is a promotional flyer to help spread the word about our involvement with the Google Summer of Code.  Flyers are available in various languages that we have mentors for so that students from all over the globe can be informed about the program.  While many developers can converse fluently in other languages, English is still expected for most developer discussions.  Feel free to distribute the flyer around your local colleges and universities.&lt;br /&gt;
&lt;br /&gt;
* English ([http://my.bzflag.org/gsoc/BZGSoC2008.pdf PDF]) ([http://my.bzflag.org/gsoc/BZGSoC2008.png PNG])&lt;br /&gt;
* Deutsch | German  ([http://my.bzflag.org/gsoc/BZGSoC2008_de.pdf PDF]) ([http://my.bzflag.org/gsoc/BZGSoC2008_de.png PNG])&lt;br /&gt;
* Español | Spanish ([http://my.bzflag.org/gsoc/BZGSoC2008_es.pdf PDF]) ([http://my.bzflag.org/gsoc/BZGSoC2008_es.png PNG])&lt;br /&gt;
&lt;br /&gt;
High praise and special thanks to Harry Keller (aka Saturos) for designing our 2008 GSoC flyer.&lt;br /&gt;
&lt;br /&gt;
= Preparing an Application =&lt;br /&gt;
&lt;br /&gt;
There is specific format to applications, but students should be detailed in their approach and background information about themselves.  They should state specifically what they intend to deliver and any implementation details they feel relevant such as what language they intend to use.  C/C++ proposals are preferred though others will be considered.  Students that just submit the summaries contained below will not do very well.  If you talk with us on IRC about your SoC proposal, you should include your IRC nickname somewhere in your proposal.&lt;br /&gt;
&lt;br /&gt;
Early proposal submission are encouraged as it gives us more time to review your proposals in detail, comment on them, and potentially ask for additional input.  Submitting closer to the deadline will not be a negative consideration as all submissions will be predominantly judged on their merit, but submitting and discussing early is an advantage for submissions that are similar to other submissions.  &lt;br /&gt;
&lt;br /&gt;
Students are asked to propose what they actually want to work on, how they intend to work on it, what they intend to DO, what they know about that task, some details about themselves, etc.  Their ability to perform the task is outright presumed, so they are supposed to propose a task that they are comfortable and knowledgeable with performing.&lt;br /&gt;
&lt;br /&gt;
= Program Evaluation =&lt;br /&gt;
&lt;br /&gt;
All the applications we receive will be reviewed, evaluated, and critiqued.  Of those applications, only a few can be selected to work on BZFlag.  We expect to receive many good applications, making the selection process very competitive and difficult.  &#039;&#039;This cannot be stressed enough.&#039;&#039;  It will be really hard to narrow down the submissions but in the end we will have only so many slots to work with and the line will eventually need to be drawn.  Every application will be read multiple times and reviewed in detail.  We thank &#039;&#039;&#039;everyone&#039;&#039;&#039; that submits a proposal and hope to still see some of you become involved in our software development.&lt;br /&gt;
&lt;br /&gt;
In the end, submissions will be selected according to the overall long-term impact that accepting the proposal could make for the game, perception of the submitter&#039;s abilities to complete the task within the program timeframe, general consensus on the technical approach being proposed, and overall interest in having such modifications made to BZFlag.  Particular notice will be made of students that are responsive to questions and readily interactive in the IRC channel.  Communication is a good thing.&lt;br /&gt;
&lt;br /&gt;
While there&#039;s never any guarantee that work on any code will be integrated, this is very much the desire and &#039;&#039;&#039;intention&#039;&#039;&#039; of our participation in the Summer of Code.  Students are expected to interact on the [http://my.bzflag.org/irc/ #bzflag IRC channel] on the Freenode network, abide by the [http://bzflag.svn.sourceforge.net/viewvc/*checkout*/bzflag/trunk/bzflag/DEVINFO DEVINFO] rules, agree to the [[Google Summer of Code Acceptance|development requirements]], and focus on providing a clean maintainable implementation.&lt;br /&gt;
&lt;br /&gt;
Biding BZFlag&#039;s acceptance into the program, the final list of selected proposals will be announced on April 14, 2008 at 12:00 noon PDT.&lt;br /&gt;
&lt;br /&gt;
= Proposal Ideas =&lt;br /&gt;
&lt;br /&gt;
While there are lots of [[Ideas]] floating around of varying utility to the game, the ideas listed below are the specific areas that we are predominantly interested in seeing worked on as part of the GSoC.  Please note that students are also welcome to apply with their own original ideas.  They should run those ideas by one of the developers beforehand, as there are some ideas which will not be accepted regardless of the quality of the application and applicant, due to desire to preserve the scope and focus of the project.&lt;br /&gt;
&lt;br /&gt;
Ideas marked with an &amp;quot;*&amp;quot; indicate entries where we have received at least two or more submissions for that idea.&lt;br /&gt;
&lt;br /&gt;
== Dead Reckoning and other Networking Enhancements ==&lt;br /&gt;
The basic idea is to improve BZFlag&#039;s networking by performing dead reckoning on the server along with context-sensitive packet delivery culling.  Much work has gone into the game towards moving more and more of the game state to the server, but there is additional migration and protocol changes required.  Similarly, network utilization can be optimized by not relaying certain packets (like miniscule position updates to distant players) based on the current game state.  Some useful background reading for this task include &amp;quot;[http://www.research.ibm.com/netgames2005/papers/aggarwal.pdf Fairness in Dead-Reckoning based Distributed Multi-Player Games (pdf)]&amp;quot; and &amp;quot;[http://www.sigcomm.org/sigcomm2004/workshop_papers/net610-aggarwal.pdf Accuracy in Dead-Reckoning Based Distributed Multi-Player Games (pdf)]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Modularization of game logic ==&lt;br /&gt;
Much of the game logic is presently mixed in with BZFlag&#039;s graphics code. This lack of organization make it difficult to find code when necessary, and does not allow bzfs, bzrobots, or other tools to utilize the game logic. The game code should be modularized into [[DevelopmentGoals#libGame|libgame]] so that all that is left in the client code is the graphics subsystem. This will also ease the possible future integration of a 3D graphics engine.&lt;br /&gt;
&lt;br /&gt;
== Global authentication daemon ==&lt;br /&gt;
The goal of this project would be to provide global account management system daemon that the client and servers would communicate with for account, group membership, and profile information.  This effort preferably be written in C++, would need to talk to an LDAP server for persistent storage on the backend, and allow chaining across multiple daemons for data replication and failover service.  The daemon would need to provide a well structured simple communications API that the game client and game servers can securely talk to.&lt;br /&gt;
&lt;br /&gt;
== Enhanced server listing ==&lt;br /&gt;
The game client includes a simplistic listing of publicly available servers.  This task would involve significantly enhancing the listing section in BZFlag to allow for various sortings (e.g. ping time, country, name, etc), favorites, recently used, specific additional information on specific servers, and all existing information.  The task would involve coming up with a user-friendly design that is fully keyboard-accessible.  It could leverage external gui toolkits, use BZFlag&#039;s existing gui library, and/or extend the existing capabilities.  The focus would be on creating an intuitive and informative listing enhancement within the constraints of the gaming interface.&lt;br /&gt;
&lt;br /&gt;
== BZWorkBench world editor enhancement ==&lt;br /&gt;
As a participant in last year&#039;s program, Jude Nelson started work on BZWorkBench.  It is a world file editor with a very solid foundation but much work still remains to be done, including a cross-platform GUI, mesh support, and other editor features.&lt;br /&gt;
&lt;br /&gt;
== Enhanced cross-platform multiple display support ==&lt;br /&gt;
Add the ability to effectively manage multiple display environments from within the game allowing for the detection, alignment/orientation specification, and resolution parameters for each display via menu options as well as proper full-screen and/or windowed support.  An additional feature could involve allowing the user to dedicate a display to the various primary gui elements (the 3D environment, the radar, and the chat console).  BZFlag&#039;s current context management is mostly handled by SDL or other platform-specific modules, so this could be taken into consideration.  There&#039;s also the possibility of our move to an integrated graphics engine would similarly impact how multidisplay contexts are created and managed.&lt;br /&gt;
&lt;br /&gt;
== In-game profile management ==&lt;br /&gt;
BZFlag allows players to specify a callsign and team in addition to other player characteristics and preferences.  This enhancement would focus on allowing the user to specify and manage multiple profiles from within the game.  Profiles could be linked together and should be presented in an intuitive manner (proposal should highlight how you&#039;d go about achieving that).  The profiles would need to associate with global account information as well.&lt;br /&gt;
&lt;br /&gt;
== Integrated BZFS web interface ==&lt;br /&gt;
The BZFlag game server, BZFS, could benefit from having a browser-accessible http/https interface for viewing server statistics, setting various parameters, and otherwise controlling the server daemon while it is running.  Similar to how your network router has a web interface for changing configuration parameters, this idea is simply to create this interface in a maintainable and portable manner.  Please go into detail on how exactly you&#039;d go about doing this.&lt;br /&gt;
&lt;br /&gt;
== Network Testing and Simulation Environment ==&lt;br /&gt;
This task should provide a controlled testing environment for simulating network behavioral characteristics, including the ability to change virtual network parameters to induce different network conditions of lag and packet loss.  This environment should provide a viewer capability to observe interactions of BZFlag clients being tested from the perspective of the player, the server, and third-party observers.  This simulation framework should work with the client and server directly so that testing of actual changes may be performed in a stand-alone environment.&lt;br /&gt;
&lt;br /&gt;
== Cross server communications system ==&lt;br /&gt;
This task would be the design and implementation of a server spanning chat system. It would allow players from one server to send chat messages to players on other servers. It should also be able to be used to allow players to know where there friends or &amp;quot;buddies&amp;quot; are playing if they are online. The system should tie into the central user name registration system. Added benefits would be the use of existing protocols or applications, such as Jabber or IRC, if they can be integrated cleanly. Support for using off-line apps for chat and friends list access as well as server management would be a plus.&lt;br /&gt;
&lt;br /&gt;
== Cheat preventions ==&lt;br /&gt;
This task involves making BZFlag more robust towards preventing various cheats from working in the game.  This task implicitly requires adding protections on the server, moving game logic from the client to the server, and/or adding heuristics and other measures for detecting and dealing with cheat clients.  The student should have a strong grasp of the variety of BZFlag cheats that are available.  Please go into detail about which cheats you&#039;re interested in preventing and how you intend to employ those preventive measures. For information on known cheats, check out the [[Known Cheats]] and [[Subtle Cheats]] wiki pages.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;INSERT YOUR IDEA HERE&amp;gt; ==&lt;br /&gt;
BZFlag is always open to new development ideas and is under constant improvement.  If you are familiar with BZFlag&#039;s current capabilities and would like to propose some new enhancement, we&#039;d be happy to hear about.  Please discuss any new ideas with the existing core developers (on our IRC channel), if only to make sure the ideas are in-line with the spirit and constraints of the game.&lt;br /&gt;
&lt;br /&gt;
= Thanks &amp;amp; Appreciation =&lt;br /&gt;
&lt;br /&gt;
Thank you to the following individuals in the BZFlag community that helped prepare GSoC-related marketing materials:&lt;br /&gt;
&lt;br /&gt;
* Harry Keller (aka Saturos)&lt;br /&gt;
* Julio Jiménez Borreguero (aka jujibo aka Manu)&lt;br /&gt;
* Dexter Mason (aka whodaman)&lt;br /&gt;
* Sean Morrison (aka learner aka brlcad)&lt;br /&gt;
* Jeffrey Myers (aka JeffM)&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZFlag_2.99&amp;diff=4150</id>
		<title>BZFlag 2.99</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZFlag_2.99&amp;diff=4150"/>
		<updated>2008-03-05T02:48:49Z</updated>

		<summary type="html">&lt;p&gt;Constitution: grammar fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BZFlag version 3.0 is the next planned release of BZFlag. &lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
Version 3.0 is currently in development and marked as version v2.99.x. Upon release it will be marked as version v3.0. The primary goals for this version are improved server side stability and security in an effort to minimize the impact of clients that have been modified to provide their users benefit ( aka, cheating ). Additional efforts are being made to extend the server side customization of the game. v3.0 will be completely incompatible with all previous versions of the game. Users of v3.0 will only be able to play on 3.0 servers. This is similar to how v2.0 was incompatible with 1.10.&lt;br /&gt;
&lt;br /&gt;
==Development==&lt;br /&gt;
Development began on 3.0 on October 25th 2005.  After an initial rush of changes, development stalled, as a number of bugs were found in the current release build of the time ([[BZFlag 2.0.4|v2.0.4]]). These bugs and problems, as well as a number of graphical changes from [[trepan]] necessitated the release of compatible [[BZFlag 2.0.6|v2.0.6]], [[BZFlag 2.0.8|v2.0.8]], and [[BZFlag 2.0.10|v2.0.10]] releases.&lt;br /&gt;
&lt;br /&gt;
==Version Number Change==&lt;br /&gt;
v3.0 is the first version to use the new version numbering system.  The 3.0 release initially began as the 2.1 development line, with the intent of being released as version 2.2.  Part of the way through development, however, the [[Versions|versioning]] number scheme changed and the development revision changed from 2.1 to 2.99.  With previous releases the minor version number in the version triplet (major.minor.revision) represented protocol and client compatibility.  With 3.0 compatibility is instead reflected in the major version number. This new scheme gives more &amp;quot;room&amp;quot; to deal with minor packaging revisions and patch release updates.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
v2.99 already has a number of server side features that make for a much improved gameplay experience.&lt;br /&gt;
Features such as&lt;br /&gt;
*Flag pickups&lt;br /&gt;
*Identify&lt;br /&gt;
*Pausing&lt;br /&gt;
*Water Death&lt;br /&gt;
*Shot type&lt;br /&gt;
*Bots&lt;br /&gt;
have all been moved to the server, preventing a modified client from changing the outcome of the game logic. Additional features are planed to be moved server side, including shot, hit, and death detection.&lt;br /&gt;
&lt;br /&gt;
A number of small checks and fixes have been put in to verify the game state as well.&lt;br /&gt;
&lt;br /&gt;
Changes have been made to the graphical quality settings. What was Experimental quality in 2.0.8 is now High quality. Medium quality is between the old High and Medium, and Low has remained mostly unchanged.&lt;br /&gt;
&lt;br /&gt;
The new Experimental mode includes new shot and flag graphics. Examples of the new shots (internally called, GeoBolt and GeoLaser) can be seen here.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Geo_bolt_example1.jpg|A shot in experimental in 2.99&lt;br /&gt;
Image:Geo_bolt_example2.jpg|Another shot in experimental in 2.99&lt;br /&gt;
Image:Geo_laser_example1.jpg|The thief beam in 2.99&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
It should be noted that the new shot graphics are not for people with older or slower video cards.&lt;br /&gt;
&lt;br /&gt;
A full list of changes can be found in the [http://bzflag.svn.sourceforge.net/viewvc/*checkout*/bzflag/trunk/bzflag/NEWS NEWS] file in the [[BZFlag Source]] code in [[BZFlag SVN|SVN]].&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
A lot of stuff needs testing, and probably doesn&#039;t work.&lt;br /&gt;
&lt;br /&gt;
==Release Date==&lt;br /&gt;
As is always the case for major updates to BZFlag, &#039;&#039;&#039;&#039;&#039;3.0 will be released when it is done&#039;&#039;&#039;&#039;&#039;. At present, a number of major features still need to be implemented before a new release will be made.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[Versions]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Versions]]&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Radar_Marker&amp;diff=4141</id>
		<title>Radar Marker</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Radar_Marker&amp;diff=4141"/>
		<updated>2008-03-03T06:46:33Z</updated>

		<summary type="html">&lt;p&gt;Constitution: Spelling, fame-&amp;gt;frame&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DesignDocument}}&lt;br /&gt;
==Overview==&lt;br /&gt;
A radar marker is a generic radar specific object controlled by the server. It is used to flag things such as the location of team flags, and hunted targets. There is also a [[Radar Marker(object)|proposed map object]] that would allow maps to define arbitrary  markers in the map.&lt;br /&gt;
&lt;br /&gt;
==Contents==&lt;br /&gt;
The object will contain a sub-type and associated data.&lt;br /&gt;
&lt;br /&gt;
The client will then display each subtype on the radar view only. Unknown sub-types will be ignored.&lt;br /&gt;
All 3d point data would be in world space, with the objects being drawn in Z order ( lowest to highest ) in orthographic projection with the map.&lt;br /&gt;
&lt;br /&gt;
==Uses==&lt;br /&gt;
By taking the maker logic off of the server, we can make the logic be more customizable by the servers&#039; game logic and plug-ins. Addin an option to tie a marker to the location of a specific moving object (tank) would allow for a number of gameplay variations.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
The client would only need to know how to draw a number of generic marker types ( various shapes ) in a server defined color. The server would simply send a marker message to the client with postional data ( and an attachment object if desired ). The client would then not need to know what this marker is, but simply store it and draw it every frame. Some radar marker types could also have HUD marker components ( flag and hunt ), this should be optional.&lt;br /&gt;
&lt;br /&gt;
By using a separate message system for the markers that is not tied to the map file, the game can send out dynamic updates to the markers while the game is running. This can allow for additional game play modes such as domination, where the controlled base is flagged on the radar with the appropriate color.&lt;br /&gt;
&lt;br /&gt;
[[category:proposed changes]]&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_2008&amp;diff=4140</id>
		<title>Google Summer of Code: 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_2008&amp;diff=4140"/>
		<updated>2008-03-03T06:30:05Z</updated>

		<summary type="html">&lt;p&gt;Constitution: Add Modularization of game logic proposal idea&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Google Summer of Code 2008 was announced on February 25, 2008. Given our enormously successful participation in the program in 2008, BZFlag plans to reapply to participate in the program in 2008. If accepted, BZFlag will accept student project proposals from March 24 to March 31 ending at 5:00 PDT (0:00 April 1 GMT). Further information on the application proccess and some proposal ideas are below.&lt;br /&gt;
&lt;br /&gt;
= Promotion Flyers =&lt;br /&gt;
&lt;br /&gt;
{|align=&amp;quot;right&amp;quot;&lt;br /&gt;
 |[[Image:BZGSoC2008_small.gif|thumb|left|512px]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Provided below is a promotional flyer to help spread the word about our involvement with the Google Summer of Code.  Flyers are available in various languages that we have mentors for so that students from all over the globe can be informed about the program.  While many developers can converse fluently in other languages, English is still expected for most developer discussions.  Feel free to distribute the flyer around your local colleges and universities.&lt;br /&gt;
&lt;br /&gt;
* English ([http://my.bzflag.org/gsoc/BZGSoC2008.pdf PDF]) ([http://my.bzflag.org/gsoc/BZGSoC2008.png PNG])&lt;br /&gt;
* Deutsch | German  ([http://my.bzflag.org/gsoc/BZGSoC2008_de.pdf PDF]) ([http://my.bzflag.org/gsoc/BZGSoC2008_de.png PNG])&lt;br /&gt;
* Español | Spanish ([http://my.bzflag.org/gsoc/BZGSoC2008_es.pdf PDF]) ([http://my.bzflag.org/gsoc/BZGSoC2008_es.png PNG])&lt;br /&gt;
&lt;br /&gt;
High praise and special thanks to Harry Keller (aka Saturos) for designing our 2008 GSoC flyer.&lt;br /&gt;
&lt;br /&gt;
= Preparing an Application =&lt;br /&gt;
&lt;br /&gt;
There is specific format to applications, but students should be detailed in their approach and background information about themselves.  They should state specifically what they intend to deliver and any implementation details they feel relevant such as what language they intend to use.  C/C++ proposals are preferred though others will be considered.  Students that just submit the summaries contained below will not do very well.  If you talk with us on IRC about your SoC proposal, you should include your IRC nickname somewhere in your proposal.&lt;br /&gt;
&lt;br /&gt;
Early proposal submission are encouraged as it gives us more time to review your proposals in detail, comment on them, and potentially ask for additional input.  Submitting closer to the deadline will not be a negative consideration as all submissions will be predominantly judged on their merit, but submitting and discussing early is an advantage for submissions that are similar to other submissions.  &lt;br /&gt;
&lt;br /&gt;
Students are asked to propose what they actually want to work on, how they intend to work on it, what they intend to DO, what they know about that task, some details about themselves, etc.  Their ability to perform the task is outright presumed, so they are supposed to propose a task that they are comfortable and knowledgeable with performing.&lt;br /&gt;
&lt;br /&gt;
= Program Evaluation =&lt;br /&gt;
&lt;br /&gt;
All the applications we receive will be reviewed, evaluated, and critiqued.  Of those applications, only a few can be selected to work on BZFlag.  We expect to receive many good applications, making the selection process very competitive and difficult.  &#039;&#039;This cannot be stressed enough.&#039;&#039;  It will be really hard to narrow down the submissions but in the end we will have only so many slots to work with and the line will eventually need to be drawn.  Every application will be read multiple times and reviewed in detail.  We thank &#039;&#039;&#039;everyone&#039;&#039;&#039; that submits a proposal and hope to still see some of you become involved in our software development.&lt;br /&gt;
&lt;br /&gt;
In the end, submissions will be selected according to the overall long-term impact that accepting the proposal could make for the game, perception of the submitter&#039;s abilities to complete the task within the program timeframe, general consensus on the technical approach being proposed, and overall interest in having such modifications made to BZFlag.  Particular notice will be made of students that are responsive to questions and readily interactive in the IRC channel.  Communication is a good thing.&lt;br /&gt;
&lt;br /&gt;
While there&#039;s never any guarantee that work on any code will be integrated, this is very much the desire and &#039;&#039;&#039;intention&#039;&#039;&#039; of our participation in the Summer of Code.  Students are expected to interact on the [http://my.bzflag.org/irc/ #bzflag IRC channel] on the Freenode network, abide by the [http://bzflag.svn.sourceforge.net/viewvc/*checkout*/bzflag/trunk/bzflag/DEVINFO DEVINFO] rules, agree to the [[Google Summer of Code Acceptance|development requirements]], and focus on providing a clean maintainable implementation.&lt;br /&gt;
&lt;br /&gt;
Biding BZFlag&#039;s acceptance into the program, the final list of selected proposals will be announced on April 14, 2008 at 12:00 noon PDT.&lt;br /&gt;
&lt;br /&gt;
= Proposal Ideas =&lt;br /&gt;
&lt;br /&gt;
While there are lots of [[Ideas]] floating around of varying utility to the game, the ideas listed below are the specific areas that we are predominantly interested in seeing worked on as part of the GSoC.  Please note that students are also welcome to apply with their own original ideas.  They should run those ideas by one of the developers beforehand, as there are some ideas which will not be accepted regardless of the quality of the application and applicant, due to desire to preserve the scope and focus of the project.&lt;br /&gt;
&lt;br /&gt;
Ideas marked with an &amp;quot;*&amp;quot; indicate entries where we have received at least two or more submissions for that idea.&lt;br /&gt;
&lt;br /&gt;
== Dead Reckoning and other Networking Enhancements ==&lt;br /&gt;
The basic idea is to improve BZFlag&#039;s networking by performing dead reckoning on the server along with context-sensitive packet delivery culling.  Much work has gone into the game towards moving more and more of the game state to the server, but there is additional migration and protocol changes required.  Similarly, network utilization can be optimized by not relaying certain packets (like miniscule position updates to distant players) based on the current game state.  Some useful background reading for this task include &amp;quot;[http://www.research.ibm.com/netgames2005/papers/aggarwal.pdf Fairness in Dead-Reckoning based Distributed Multi-Player Games (pdf)]&amp;quot; and &amp;quot;[http://www.sigcomm.org/sigcomm2004/workshop_papers/net610-aggarwal.pdf Accuracy in Dead-Reckoning Based Distributed Multi-Player Games (pdf)]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Modularization of game logic ==&lt;br /&gt;
Much of the game logic is presently mixed in with BZFlag&#039;s graphics code. This lack of organization make it difficult to find code when necessary, and does not allow bzfs, bzrobots, or other tools to utilize the game logic. The game code should be modularized into [[DevelopmentGoals#libGame|libgame]] so that all that is left in the client code is the graphics subsystem. This will also ease the possible future integration of a 3D graphics engine.&lt;br /&gt;
&lt;br /&gt;
== Graphics Engine Integration ==&lt;br /&gt;
One of the long-standing desires for BZFlag is to improve the graphics capabilities in the game by integrating with an existing rendering engine.  This task would be to integrate BZFlag with a graphics engine like [http://ogre3d.org/ OGRE], [http://www.crystalspace3d.org/ Crystal Space], [http://www.openscenegraph.com/ OpenSceneGraph], or [http://irrlicht.sourceforge.net/ Irrlicht].&lt;br /&gt;
&lt;br /&gt;
== Global authentication daemon ==&lt;br /&gt;
The goal of this project would be to provide global account management system daemon that the client and servers would communicate with for account, group membership, and profile information.  This effort preferably be written in C++, would need to talk to an LDAP server for persistent storage on the backend, and allow chaining across multiple daemons for data replication and failover service.  The daemon would need to provide a well structured simple communications API that the game client and game servers can securely talk to.&lt;br /&gt;
&lt;br /&gt;
== Enhanced server listing ==&lt;br /&gt;
The game client includes a simplistic listing of publicly available servers.  This task would involve significantly enhancing the listing section in BZFlag to allow for various sortings (e.g. ping time, country, name, etc), favorites, recently used, specific additional information on specific servers, and all existing information.  The task would involve coming up with a user-friendly design that it fully keyboard-accessible.  It could leverage external gui toolkits, use BZFlag&#039;s existing gui library, and/or extend the existing capabilities.  The focus would be on creating an intuitive and informative listing enhancement within the constraints of the gaming interface.&lt;br /&gt;
&lt;br /&gt;
== BZWorkBench enhancement ==&lt;br /&gt;
As a participant in last year&#039;s program Jude Nelson started work on BZWorkBench, a world file editor with a very solid foundation. Much work remains to be done on the editor, including a cross-platform GUI and mesh support.&lt;br /&gt;
&lt;br /&gt;
== Two-player tanks ==&lt;br /&gt;
Make modifications to the game such that it is optionally possible (e.g. via a server configuration) to allow multiplayer tanks where one player can only drive and the other can control the turret.  The implementation would have to be some simple/intuitive interface to join and depart tanks as well as implemented in a fashion that preserves the &amp;quot;spirit&amp;quot; of BZFlag&#039;s operational simplicity.&lt;br /&gt;
&lt;br /&gt;
== Enhanced cross-platform multiple display support ==&lt;br /&gt;
Add the ability to effectively manage multiple display environments from within the game allowing for the detection, alignment/orientation specification, and resolution parameters for each display via menu options as well as proper full-screen and/or windowed support.  An additional feature could involve allowing the user to dedicate a display to the various primary gui elements (the 3D environment, the radar, and the chat console).  BZFlag&#039;s current context management is mostly handled by SDL or other platform-specific modules, so this could be taken into consideration.  There&#039;s also the possibility of our move to an integrated graphics engine would similarly impact how multidisplay contexts are created and managed.&lt;br /&gt;
&lt;br /&gt;
== In-game profile management ==&lt;br /&gt;
BZFlag allows players to specify a callsign and team in addition to other player characteristics and preferences.  This enhancement would focus on allowing the user to specify and manage multiple profiles from within the game.  Profiles could be linked together and should be presented in an intuitive manner (proposal should highlight how you&#039;d go about achieving that).  The profiles would need to associate with global account information as well.&lt;br /&gt;
&lt;br /&gt;
== Integrated BZFS web interface ==&lt;br /&gt;
The BZFlag game server, BZFS, could benefit from having a browser-accessible http/https interface for viewing server statistics, setting various parameters, and otherwise controlling the server daemon while it is running.  Similar to how your network router has a web interface for changing configuration parameters, this idea is simply to create this interface in a maintainable and portable manner.  Please go into detail on how exactly you&#039;d go about doing this.&lt;br /&gt;
&lt;br /&gt;
== Network Testing and Simulation Environment ==&lt;br /&gt;
This task should provide a controlled testing environment for simulating network behavioral characteristics, including the ability to change virtual network parameters to induce different network conditions of lag and packet loss.  This environment should provide a viewer capability to observe interactions of BZFlag clients being tested from the perspective of the player, the server, and third-party observers.  This simulation framework should work with the client and server directly so that testing of actual changes may be performed in a stand-alone environment.&lt;br /&gt;
&lt;br /&gt;
== Cross server communications system ==&lt;br /&gt;
This task would be the design and implementation of a server spanning chat system. It would allow players from one server to send chat messages to players on other servers. It should also be able to be used to allow players to know where there friends or &amp;quot;buddies&amp;quot; are playing if they are online. The system should tie into the central user name registration system. Added benefits would be the use of existing protocols or applications, such as Jabber or IRC, if they can be integrated cleanly. Support for using off-line apps for chat and friends list access as well as server management would be a plus.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;INSERT YOUR IDEA HERE&amp;gt; ==&lt;br /&gt;
BZFlag is always open to new development ideas and is under constant improvement.  If you are familiar with BZFlag&#039;s current capabilities and would like to propose some new enhancement, we&#039;d be happy to hear about.  Please discuss any new ideas with the existing core developers (on our IRC channel), if only to make sure the ideas are in-line with the spirit and constraints of the game.&lt;br /&gt;
&lt;br /&gt;
= Thanks &amp;amp; Appreciation =&lt;br /&gt;
&lt;br /&gt;
Thank you to the following individuals in the BZFlag community that helped prepare GSoC-related marketing materials:&lt;br /&gt;
&lt;br /&gt;
* Harry Keller (aka Saturos)&lt;br /&gt;
* Julio Jiménez Borreguero (aka jujibo aka Manu)&lt;br /&gt;
* Dexter Mason (aka whodaman)&lt;br /&gt;
* Sean Morrison (aka learner aka brlcad)&lt;br /&gt;
* Jeffrey Myers (aka JeffM)&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_2008&amp;diff=4114</id>
		<title>Google Summer of Code: 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_2008&amp;diff=4114"/>
		<updated>2008-02-26T11:40:06Z</updated>

		<summary type="html">&lt;p&gt;Constitution: Copied in some of the info and ideas from last year&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Google Summer of Code 2008 was announced on February 25, 2008. Given our enormously successful participation in the program in 2008, BZFlag plans to reapply to participate in the program in 2008. If accepted, BZFlag will accept student project proposals from March 24 to March 31 ending at 5:00 PDT (0:00 April 1 GMT). Further information on the application proccess and some proposal ideas are below.&lt;br /&gt;
&lt;br /&gt;
= Preparing an Application =&lt;br /&gt;
&lt;br /&gt;
There is specific format to applications, but students should be detailed in their approach and background information about themselves.  They should state specifically what they intend to deliver and any implementation details they feel relevant such as what language they intend to use.  C/C++ proposals are preferred though others will be considered.  Students that just submit the summaries contained below will not do very well.  If you talk with us on IRC about your SoC proposal, you should include your IRC nickname somewhere in your proposal.&lt;br /&gt;
&lt;br /&gt;
Early proposal submission are encouraged as it gives us more time to review your proposals in detail, comment on them, and potentially ask for additional input.  Submitting closer to the deadline will not be a negative consideration as all submissions will be predominantly judged on their merit, but submitting and discussing early is an advantage for submissions that are similar to other submissions.  &lt;br /&gt;
&lt;br /&gt;
Students are asked to propose what they actually want to work on, how they intend to work on it, what they intend to DO, what they know about that task, some details about themselves, etc.  Their ability to perform the task is outright presumed, so they are supposed to propose a task that they are comfortable and knowledgeable with performing.&lt;br /&gt;
&lt;br /&gt;
= Program Evaluation =&lt;br /&gt;
&lt;br /&gt;
All the applications we receive will be reviewed, evaluated, and critiqued.  Of those applications, only a few can be selected to work on BZFlag.  We expect to receive many good applications, making the selection process very competitive and difficult.  &#039;&#039;This cannot be stressed enough.&#039;&#039;  It will be really hard to narrow down the submissions but in the end we will have only so many slots to work with and the line will eventually need to be drawn.  Every application will be read multiple times and reviewed in detail.  We thank &#039;&#039;&#039;everyone&#039;&#039;&#039; that submits a proposal and hope to still see some of you become involved in our software development.&lt;br /&gt;
&lt;br /&gt;
In the end, submissions will be selected according to the overall long-term impact that accepting the proposal could make for the game, perception of the submitter&#039;s abilities to complete the task within the program timeframe, general consensus on the technical approach being proposed, and overall interest in having such modifications made to BZFlag.  Particular notice will be made of students that are responsive to questions and readily interactive in the IRC channel.  Communication is a good thing.&lt;br /&gt;
&lt;br /&gt;
While there&#039;s never any guarantee that work on any code will be integrated, this is very much the desire and &#039;&#039;&#039;intention&#039;&#039;&#039; of our participation in the Summer of Code.  Students are expected to interact on the [http://my.bzflag.org/irc/ #bzflag IRC channel] on the Freenode network, abide by the [http://bzflag.svn.sourceforge.net/viewvc/*checkout*/bzflag/trunk/bzflag/DEVINFO DEVINFO] rules, agree to the [[Google Summer of Code Acceptance|development requirements]], and focus on providing a clean maintainable implementation.&lt;br /&gt;
&lt;br /&gt;
Biding BZFlag&#039;s acceptance into the program, the final list of selected proposals will be announced on April 14, 2008 at 12:00 noon PDT.&lt;br /&gt;
&lt;br /&gt;
= Proposal Ideas =&lt;br /&gt;
&lt;br /&gt;
While there are lots of [[Ideas]] floating around of varying utility to the game, the ideas listed below are the specific areas that we are predominantly interested in seeing worked on as part of the GSoC.  Please note that students are also welcome to apply with their own original ideas.  They should run those ideas by one of the developers beforehand, as there are some ideas which will not be accepted regardless of the quality of the application and applicant, due to desire to preserve the scope and focus of the project.&lt;br /&gt;
&lt;br /&gt;
Ideas marked with an &amp;quot;*&amp;quot; indicate entries where we have received at least two or more submissions for that idea.&lt;br /&gt;
&lt;br /&gt;
== Dead Reckoning and other Networking Enhancements ==&lt;br /&gt;
The basic idea is to improve BZFlag&#039;s networking by performing dead reckoning on the server along with context-sensitive packet delivery culling.  Much work has gone into the game towards moving more and more of the game state to the server, but there is additional migration and protocol changes required.  Similarly, network utilization can be optimized by not relaying certain packets (like miniscule position updates to distant players) based on the current game state.  Some useful background reading for this task include &amp;quot;[http://www.research.ibm.com/netgames2005/papers/aggarwal.pdf Fairness in Dead-Reckoning based Distributed Multi-Player Games (pdf)]&amp;quot; and &amp;quot;[http://www.sigcomm.org/sigcomm2004/workshop_papers/net610-aggarwal.pdf Accuracy in Dead-Reckoning Based Distributed Multi-Player Games (pdf)]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Graphics Engine Integration ==&lt;br /&gt;
One of the long-standing desires for BZFlag is to improve the graphics capabilities in the game by integrating with an existing rendering engine.  This task would be to integrate BZFlag with a graphics engine like [http://ogre3d.org/ OGRE], [http://www.crystalspace3d.org/ Crystal Space], [http://www.openscenegraph.com/ OpenSceneGraph], or [http://irrlicht.sourceforge.net/ Irrlicht].&lt;br /&gt;
&lt;br /&gt;
== Global authentication daemon ==&lt;br /&gt;
The goal of this project would be to provide global account management system daemon that the client and servers would communicate with for account, group membership, and profile information.  This effort preferably be written in C++, would need to talk to an LDAP server for persistent storage on the backend, and allow chaining across multiple daemons for data replication and failover service.  The daemon would need to provide a well structured simple communications API that the game client and game servers can securely talk to.&lt;br /&gt;
&lt;br /&gt;
== Enhanced server listing ==&lt;br /&gt;
The game client includes a simplistic listing of publicly available servers.  This task would involve significantly enhancing the listing section in BZFlag to allow for various sortings (e.g. ping time, country, name, etc), favorites, recently used, specific additional information on specific servers, and all existing information.  The task would involve coming up with a user-friendly design that it fully keyboard-accessible.  It could leverage external gui toolkits, use BZFlag&#039;s existing gui library, and/or extend the existing capabilities.  The focus would be on creating an intuitive and informative listing enhancement within the constraints of the gaming interface.&lt;br /&gt;
&lt;br /&gt;
== BZWorkBench enhancement ==&lt;br /&gt;
As a participant in last year&#039;s program Jude Nelson started work on BZWorkBench, a world file editor with a very solid foundation. Much work remains to be done on the editor, including a cross-platform GUI and mesh support.&lt;br /&gt;
&lt;br /&gt;
== Two-player tanks ==&lt;br /&gt;
Make modifications to the game such that it is optionally possible (e.g. via a server configuration) to allow multiplayer tanks where one player can only drive and the other can control the turret.  The implementation would have to be some simple/intuitive interface to join and depart tanks as well as implemented in a fashion that preserves the &amp;quot;spirit&amp;quot; of BZFlag&#039;s operational simplicity.&lt;br /&gt;
&lt;br /&gt;
== Enhanced cross-platform multiple display support ==&lt;br /&gt;
Add the ability to effectively manage multiple display environments from within the game allowing for the detection, alignment/orientation specification, and resolution parameters for each display via menu options as well as proper full-screen and/or windowed support.  An additional feature could involve allowing the user to dedicate a display to the various primary gui elements (the 3D environment, the radar, and the chat console).  BZFlag&#039;s current context management is mostly handled by SDL or other platform-specific modules, so this could be taken into consideration.  There&#039;s also the possibility of our move to an integrated graphics engine would similarly impact how multidisplay contexts are created and managed.&lt;br /&gt;
&lt;br /&gt;
== In-game profile management ==&lt;br /&gt;
BZFlag allows players to specify a callsign and team in addition to other player characteristics and preferences.  This enhancement would focus on allowing the user to specify and manage multiple profiles from within the game.  Profiles could be linked together and should be presented in an intuitive manner (proposal should highlight how you&#039;d go about achieving that).  The profiles would need to associate with global account information as well.&lt;br /&gt;
&lt;br /&gt;
== Integrated BZFS web interface ==&lt;br /&gt;
The BZFlag game server, BZFS, could benefit from having a browser-accessible http/https interface for viewing server statistics, setting various parameters, and otherwise controlling the server daemon while it is running.  Similar to how your network router has a web interface for changing configuration parameters, this idea is simply to create this interface in a maintainable and portable manner.  Please go into detail on how exactly you&#039;d go about doing this.&lt;br /&gt;
&lt;br /&gt;
== Network Testing and Simulation Environment ==&lt;br /&gt;
This task should provide a controlled testing environment for simulating network behavioral characteristics, including the ability to change virtual network parameters to induce different network conditions of lag and packet loss.  This environment should provide a viewer capability to observe interactions of BZFlag clients being tested from the perspective of the player, the server, and third-party observers.  This simulation framework should work with the client and server directly so that testing of actual changes may be performed in a stand-alone environment.&lt;br /&gt;
&lt;br /&gt;
== Cross server communications system ==&lt;br /&gt;
This task would be the design and implementation of a server spanning chat system. It would allow players from one server to send chat messages to players on other servers. It should also be able to be used to allow players to know where there friends or &amp;quot;buddies&amp;quot; are playing if they are online. The system should tie into the central user name registration system. Added benefits would be the use of existing protocols or applications, such as Jabber or IRC, if they can be integrated cleanly. Support for using off-line apps for chat and friends list access as well as server management would be a plus.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;INSERT YOUR IDEA HERE&amp;gt; ==&lt;br /&gt;
BZFlag is always open to new development ideas and is under constant improvement.  If you are familiar with BZFlag&#039;s current capabilities and would like to propose some new enhancement, we&#039;d be happy to hear about.  Please discuss any new ideas with the existing core developers (on our IRC channel), if only to make sure the ideas are in-line with the spirit and constraints of the game.&lt;br /&gt;
&lt;br /&gt;
= Promotion Flyers =&lt;br /&gt;
&lt;br /&gt;
Harry Keller (aka Saturos) is working on creating a flyer which will be used to help spread the word about our involvement with the Google Summer of Code.  Flyers will be translated to other languages that we have mentors for so that students from all over the globe can be informed about the program.  While many developers can converse fluently in other languages, English is still expected for developer discussions.&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code&amp;diff=4113</id>
		<title>Google Summer of Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code&amp;diff=4113"/>
		<updated>2008-02-26T10:47:03Z</updated>

		<summary type="html">&lt;p&gt;Constitution: GSoC 08 is on, changed wording and listed timeline&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since 2005, Google has run an open source software development program specifically for students called the [http://code.google.com/soc/ Google Summer of Code] (GSoC).  Under this program, Google funds students to write code for open source projects during the northern hemisphere&#039;s summer timeframe.  The student efforts are focused on projects that they themselves propose to projects such as BZFlag, sometimes catering to ideas that the project suggests or ideas entirely of the student&#039;s own conception.  Student proposals are then reviewed, evaluated, and ranked by the project.  Google allocates a certain number of slots to each participating project/organization which in turn determines how many student developers we get to work with.&lt;br /&gt;
&lt;br /&gt;
= BZFlag participation =&lt;br /&gt;
&lt;br /&gt;
== [[Google Summer of Code/2008|2008 (more details here)]] ==&lt;br /&gt;
&lt;br /&gt;
The Google Summer of Code 2008 was announced on February 25, 2008. Given the substantial successes and opportunities provided by the program, BZFlag will likely continue to participate in the program of course per our mentoring capacity to successfully interact with students and Google&#039;s renewed approval of BZFlag&#039;s participation. Mentoring organizations may apply for participation between March 3 and March 12, and the accepted organizations will be announced on March 17. If accepted as a mentoring organization, BZFlag will accept student project proposals from March 24 to March 31. Please click the link above for more information and for project proposal ideas.&lt;br /&gt;
&lt;br /&gt;
== [[Google Summer of Code/2007|2007 (more details here)]] ==&lt;br /&gt;
{|align=&amp;quot;right&amp;quot;&lt;br /&gt;
 |[[Image:Gsoc_postmortem_preview.png|thumb|left|128px|http://my.bzflag.org/gsoc/bzflag_gsoc2007_post_mortem.pdf]]&lt;br /&gt;
 |}&lt;br /&gt;
BZFlag first participated during GSoC&#039;s third year in 2007.  A detailed after-the-fact discussion and analysis of BZFlag&#039;s first-year participation is included in the article &#039;&#039;[http://my.bzflag.org/gsoc/bzflag_gsoc2007_post_mortem.pdf “Postmortem” Perspectives of a First-year Participant in the 2007 Google Summer of Code for BZFlag]&#039;&#039;.  This article was given to Google in August 2007 as a final report, per se, of our involvement (you&#039;re only a first-year participant once).&lt;br /&gt;
&lt;br /&gt;
==== [[Google Summer of Code/2007#Promotion Flyers|Promotion Flyers]] ====&lt;br /&gt;
&lt;br /&gt;
= Preparing an application =&lt;br /&gt;
&lt;br /&gt;
There is intentionally no specific format to our applications. &#039;&#039;&#039;BUT&#039;&#039;&#039;... students are &#039;&#039;&#039;strongly&#039;&#039;&#039; encouraged to be detailed, creative, and interactive with the BZFlag developers throughout the application process.  Proposals that are detailed in their approach and contain useful background information about the individual&#039;s abilities and their ideas will generally receive more attention.  Applications should specify what they intend to deliver, a reasonable development timeline, and any implementation details that are relevant such as what language(s) are intended to be used.  Fwiw, C/C++ proposals are generally preferred since that is our predominant codebase and developer expertise though others are considered.  Students that just submit simple vague descriptions or reiterate the topic ideas we suggest with no detail will be outright disregarded.&lt;br /&gt;
&lt;br /&gt;
Early proposal submission are encouraged as it gives us more time to review the proposal in detail, comment on it, potentially ask for additional input, and iterate with the student on their ideas.  In the past, submitting closer to the deadline hasn&#039;t been a negative consideration as all submissions are predominantly judged on merit, but submitting and discussing early is an advantage for submissions that have similar goals.&lt;br /&gt;
&lt;br /&gt;
Students should propose what they actually want to work on, how they intend to work on it, what they intend to DO, what they know about that task, some details about themselves, etc.  Their ability to perform the task is outright presumed by the nature of submitting a detailed application, so students should propose a task that they are comfortable and knowledgeable with performing within the timeframe of the program and considering any extenuating circumstances.&lt;br /&gt;
&lt;br /&gt;
= The application process =&lt;br /&gt;
&lt;br /&gt;
Just about every GSoC project receives considerably more project proposals than can be accepted.  Each proposal is reviewed, evaluated, and critiqued.  Of those applications, only a small subset are selected so keep in mind that the selection process is rather competitive and difficult.  &#039;&#039;This cannot be stressed enough..&#039;&#039;  It remains rather hard for most projects to narrow down the submissions but in the end we all  only have so many slots to work with and the line eventually has to be drawn.  Every application gets read multiple times and reviewed in detail.  We thank &#039;&#039;&#039;everyone&#039;&#039;&#039; that submits a proposal to work on BZFlag.&lt;br /&gt;
&lt;br /&gt;
In the end, submissions are selected according to the overall long-term impact that accepting the proposal can make for the game, perception of the submitter&#039;s abilities to complete the task within the program timeframe, general consensus on the technical approach being proposed, and overall interest in having such modifications made to BZFlag.  Particular notice is made of students that are responsive to questions and readily interactive in the IRC channel.  Communication is a good thing.&lt;br /&gt;
&lt;br /&gt;
While there&#039;s never any guarantee that work on any code will be integrated, this is very much the desire and one of the core &#039;&#039;&#039;intentions&#039;&#039;&#039; of participation in the Summer of Code.  Students are expected to interact on the [http://my.bzflag.org/irc/ #bzflag IRC channel] on the Freenode network, abide by the [http://bzflag.svn.sourceforge.net/viewvc/*checkout*/bzflag/trunk/bzflag/DEVINFO DEVINFO] rules, agree to the [[Google Summer of Code Acceptance|development requirements]], and focus on providing a clean maintainable implementation.&lt;br /&gt;
&lt;br /&gt;
= Integrated development =&lt;br /&gt;
&lt;br /&gt;
Students that participate with the BZFlag project are required to adhere to specified [[Google Summer of Code Acceptance|development requirements]], selected students then work on their projects through the summer.  Students are expected to be fully integrated with the BZFlag development community throughout the program, actively engaged in their work, and intently working &#039;&#039;with&#039;&#039; the other BZFlag developers throughout the design and implementation of their projects.  If the student successfully completes what they propose, they are ultimately paid $4500 for their work and the BZFlag community hopefully gains a new long-term developer.  In all, the program is a pretty darn good deal for many students, great publicity and marketing for both Google and BZFlag, and a great opportunity for BZFlag development initiatives.&lt;br /&gt;
&lt;br /&gt;
Thanks for your interest and we look forward to seeing students apply!&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZFlag_Project&amp;diff=3927</id>
		<title>BZFlag Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZFlag_Project&amp;diff=3927"/>
		<updated>2008-01-16T00:17:38Z</updated>

		<summary type="html">&lt;p&gt;Constitution: Jeff is an admin again; put him back&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Project Administrators are users responsible for maintaining the global network services of the project.&lt;br /&gt;
&lt;br /&gt;
==Current Administrators==&lt;br /&gt;
The current administration staff for the SourceForge project includes:&lt;br /&gt;
*[[Tim Riker]]&lt;br /&gt;
*[[David Trowbridge]]&lt;br /&gt;
*[[Sean Morrison]]&lt;br /&gt;
*[[Jeff Myers]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concepts]]&lt;br /&gt;
&amp;lt;!-- Bad idea, Developer category is for people --&amp;gt;&lt;br /&gt;
&amp;lt;!-- [[Category:Developer]] --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZTourney&amp;diff=3685</id>
		<title>BZTourney</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZTourney&amp;diff=3685"/>
		<updated>2007-11-22T03:26:15Z</updated>

		<summary type="html">&lt;p&gt;Constitution: Oops, make the link show.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BZTourney is a potential collaborative tournament put on by the combined efforts of several server networks. It is currently planned to be a one-time event.&lt;br /&gt;
==Overview==&lt;br /&gt;
Plans for how the tournament will be organized, which gamestyles will be used (or new ones to be created), how scores will be attributed and judged, etc. are currently underway. Please feel free to contribute ideas!&lt;br /&gt;
==Communication/Planning==&lt;br /&gt;
Discussion and planning for the event takes place on the ##bztourney IRC channel on the Freenode IRC network. A website is under construction, and once configured it will be another resource for collaborating efforts on the event.&lt;br /&gt;
==Server Organizations==&lt;br /&gt;
The following server organizations have agreed to be named as sponsors of this tournament. Please add your server organization name here if you plan to contribute.&lt;br /&gt;
*&#039;&#039;&#039;[[BZFX]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Divibox&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;norang&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Oversight/Administration==&lt;br /&gt;
Oversight of the planning and development proccess will take place under the watchful eyes of the leaders of the member server organizations. There are currently no plans to have &#039;&#039;one person&#039;&#039; be given ultimate authority over the project.&lt;br /&gt;
&lt;br /&gt;
In-game administrative privileges will be granted to the project leaders and to those admins who are most-trusted (as agreed upon by the project leaders). Due to the importance of selecting admins with integrity that will not act inappropriately in the middle of the tournament, only &lt;br /&gt;
admins who are highly-trusted will be selected.&lt;br /&gt;
==Maps==&lt;br /&gt;
According to the current plan, one or more maps will be created from scratch for this tournament. We are hoping to acquire the skills of four or five (or more!) mappers to create these maps, and will be looking for users to test them once they&#039;ve reached the appropriate stage.&lt;br /&gt;
==Infrastructure==&lt;br /&gt;
A project like this will require a lot of work to setup. The following are some ideas for features we&#039;d like to see in these categories.&lt;br /&gt;
===SVN===&lt;br /&gt;
The project uses an SVN repository for managing code, maps, web content, etc. relating to the tournament. Public SVN access is available using the following command:&lt;br /&gt;
  svn co &amp;lt;nowiki&amp;gt;http://bztournament.net/svnroot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Commit access to the repository is granted to most project contributers. If you have something to contribute, and desire commit access, please ask on the ##bztourney IRC channel (see above). Web access to the repository is available at http://bztournament.net/viewvc/?root=bztourney.&lt;br /&gt;
&lt;br /&gt;
===Web Site===&lt;br /&gt;
www.bztournament.net&lt;br /&gt;
===Plugins===&lt;br /&gt;
Plugins&lt;br /&gt;
===Scripting===&lt;br /&gt;
Scripting.&lt;br /&gt;
==Task List==&lt;br /&gt;
&#039;&#039;If you think something needs to be done, please add it here. To sign up to help with something, please add your name below it. All entries should be in the following format:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Sample Idea===&lt;br /&gt;
&#039;&#039;Category:&#039;&#039; Mapping/Plugins/Scripting/Web/etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Description:&#039;&#039; Description of idea.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Stage:&#039;&#039; Planning/Implementing/Completed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Notes:&#039;&#039; Any notes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Assigned to:&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Contributer1&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Contributer2&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZTourney&amp;diff=3684</id>
		<title>BZTourney</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZTourney&amp;diff=3684"/>
		<updated>2007-11-22T03:24:42Z</updated>

		<summary type="html">&lt;p&gt;Constitution: New ViewVC URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BZTourney is a potential collaborative tournament put on by the combined efforts of several server networks. It is currently planned to be a one-time event.&lt;br /&gt;
==Overview==&lt;br /&gt;
Plans for how the tournament will be organized, which gamestyles will be used (or new ones to be created), how scores will be attributed and judged, etc. are currently underway. Please feel free to contribute ideas!&lt;br /&gt;
==Communication/Planning==&lt;br /&gt;
Discussion and planning for the event takes place on the ##bztourney IRC channel on the Freenode IRC network. A website is under construction, and once configured it will be another resource for collaborating efforts on the event.&lt;br /&gt;
==Server Organizations==&lt;br /&gt;
The following server organizations have agreed to be named as sponsors of this tournament. Please add your server organization name here if you plan to contribute.&lt;br /&gt;
*&#039;&#039;&#039;[[BZFX]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Divibox&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;norang&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Oversight/Administration==&lt;br /&gt;
Oversight of the planning and development proccess will take place under the watchful eyes of the leaders of the member server organizations. There are currently no plans to have &#039;&#039;one person&#039;&#039; be given ultimate authority over the project.&lt;br /&gt;
&lt;br /&gt;
In-game administrative privileges will be granted to the project leaders and to those admins who are most-trusted (as agreed upon by the project leaders). Due to the importance of selecting admins with integrity that will not act inappropriately in the middle of the tournament, only &lt;br /&gt;
admins who are highly-trusted will be selected.&lt;br /&gt;
==Maps==&lt;br /&gt;
According to the current plan, one or more maps will be created from scratch for this tournament. We are hoping to acquire the skills of four or five (or more!) mappers to create these maps, and will be looking for users to test them once they&#039;ve reached the appropriate stage.&lt;br /&gt;
==Infrastructure==&lt;br /&gt;
A project like this will require a lot of work to setup. The following are some ideas for features we&#039;d like to see in these categories.&lt;br /&gt;
===SVN===&lt;br /&gt;
The project uses an SVN repository for managing code, maps, web content, etc. relating to the tournament. Public SVN access is available using the following command:&lt;br /&gt;
  svn co &amp;lt;nowiki&amp;gt;http://bztournament.net/svnroot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Commit access to the repository is granted to most project contributers. If you have something to contribute, and desire commit access, please ask on the ##bztourney IRC channel (see above). Web access to the repository is available at [http://bztournament.net/viewvc/?root=bztourney].&lt;br /&gt;
&lt;br /&gt;
===Web Site===&lt;br /&gt;
www.bztournament.net&lt;br /&gt;
===Plugins===&lt;br /&gt;
Plugins&lt;br /&gt;
===Scripting===&lt;br /&gt;
Scripting.&lt;br /&gt;
==Task List==&lt;br /&gt;
&#039;&#039;If you think something needs to be done, please add it here. To sign up to help with something, please add your name below it. All entries should be in the following format:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Sample Idea===&lt;br /&gt;
&#039;&#039;Category:&#039;&#039; Mapping/Plugins/Scripting/Web/etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Description:&#039;&#039; Description of idea.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Stage:&#039;&#039; Planning/Implementing/Completed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Notes:&#039;&#039; Any notes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Assigned to:&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Contributer1&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Contributer2&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZTourney&amp;diff=3683</id>
		<title>BZTourney</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZTourney&amp;diff=3683"/>
		<updated>2007-11-22T03:02:53Z</updated>

		<summary type="html">&lt;p&gt;Constitution: Update SVN URL, remove AAA&amp;#039;s project&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BZTourney is a potential collaborative tournament put on by the combined efforts of several server networks. It is currently planned to be a one-time event.&lt;br /&gt;
==Overview==&lt;br /&gt;
Plans for how the tournament will be organized, which gamestyles will be used (or new ones to be created), how scores will be attributed and judged, etc. are currently underway. Please feel free to contribute ideas!&lt;br /&gt;
==Communication/Planning==&lt;br /&gt;
Discussion and planning for the event takes place on the ##bztourney IRC channel on the Freenode IRC network. A website is under construction, and once configured it will be another resource for collaborating efforts on the event.&lt;br /&gt;
==Server Organizations==&lt;br /&gt;
The following server organizations have agreed to be named as sponsors of this tournament. Please add your server organization name here if you plan to contribute.&lt;br /&gt;
*&#039;&#039;&#039;[[BZFX]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Divibox&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;norang&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Oversight/Administration==&lt;br /&gt;
Oversight of the planning and development proccess will take place under the watchful eyes of the leaders of the member server organizations. There are currently no plans to have &#039;&#039;one person&#039;&#039; be given ultimate authority over the project.&lt;br /&gt;
&lt;br /&gt;
In-game administrative privileges will be granted to the project leaders and to those admins who are most-trusted (as agreed upon by the project leaders). Due to the importance of selecting admins with integrity that will not act inappropriately in the middle of the tournament, only &lt;br /&gt;
admins who are highly-trusted will be selected.&lt;br /&gt;
==Maps==&lt;br /&gt;
According to the current plan, one or more maps will be created from scratch for this tournament. We are hoping to acquire the skills of four or five (or more!) mappers to create these maps, and will be looking for users to test them once they&#039;ve reached the appropriate stage.&lt;br /&gt;
==Infrastructure==&lt;br /&gt;
A project like this will require a lot of work to setup. The following are some ideas for features we&#039;d like to see in these categories.&lt;br /&gt;
===SVN===&lt;br /&gt;
The project uses an SVN repository for managing code, maps, web content, etc. relating to the tournament. Public SVN access is available using the following command:&lt;br /&gt;
  svn co &amp;lt;nowiki&amp;gt;http://bztournament.net/svnroot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Commit access to the repository is granted to most project contributers. If you have something to contribute, and desire commit access, please ask on the ##bztourney IRC channel (see above). Web access to the repository is available at [http://bztournament.net/viewvc http://bztournament.net/viewvc].&lt;br /&gt;
===Web Site===&lt;br /&gt;
www.bztournament.net&lt;br /&gt;
===Plugins===&lt;br /&gt;
Plugins&lt;br /&gt;
===Scripting===&lt;br /&gt;
Scripting.&lt;br /&gt;
==Task List==&lt;br /&gt;
&#039;&#039;If you think something needs to be done, please add it here. To sign up to help with something, please add your name below it. All entries should be in the following format:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Sample Idea===&lt;br /&gt;
&#039;&#039;Category:&#039;&#039; Mapping/Plugins/Scripting/Web/etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Description:&#039;&#039; Description of idea.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Stage:&#039;&#039; Planning/Implementing/Completed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Notes:&#039;&#039; Any notes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Assigned to:&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Contributer1&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Contributer2&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=DevelopmentGoals&amp;diff=3570</id>
		<title>DevelopmentGoals</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=DevelopmentGoals&amp;diff=3570"/>
		<updated>2007-11-15T00:03:11Z</updated>

		<summary type="html">&lt;p&gt;Constitution: BZWorldBuilder is BZWorkBench&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the development goals for the project. It is a set of desired features, problem areas, wishlist items that define the general direction that the developers feel the project should be taken in.&lt;br /&gt;
&lt;br /&gt;
==Tools==&lt;br /&gt;
&lt;br /&gt;
BZFlag has a number of sub-tool projects, each with there own needs.&lt;br /&gt;
&lt;br /&gt;
===BZWorkBench===&lt;br /&gt;
BZWB is a world/map editor that was completed for the 2007 Google Summer of Code program that BZFlag participated in. It is mostly functional but lacks a number of features, including.&lt;br /&gt;
&lt;br /&gt;
* A UI that is usable.&lt;br /&gt;
* Mesh support&lt;br /&gt;
&lt;br /&gt;
===ModelTool===&lt;br /&gt;
Model tool needs to tessellate strips and fans into faces when the mesh is used with regular geometry.&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
&lt;br /&gt;
The public services offered by the project are also open for development.&lt;br /&gt;
&lt;br /&gt;
===List Server===&lt;br /&gt;
The list server that is in use now is considered by many to &amp;quot;suck&amp;quot;. A new list server/authentication system that can work using some sort of distributed network system to allow for redundancy would be greatly desired.&lt;br /&gt;
&lt;br /&gt;
Proposals have included:&lt;br /&gt;
* Re-writing the existing php list server to be more efficient.&lt;br /&gt;
* Using MYSQL syncing features to split up the server.&lt;br /&gt;
* Using LDAP for authentication&lt;br /&gt;
* Moving away from PHP/Apache to a real compiled daemon.&lt;br /&gt;
* moving away from HTTP to a more efficient TCP protocoll.&lt;br /&gt;
&lt;br /&gt;
===Group Management===&lt;br /&gt;
The current system of using phpbb to manage user groups is proving to be logisticaly dificult given the large number of servers and the groups that their server owners desire. A more user centric group management system would be a large help.&lt;br /&gt;
&lt;br /&gt;
A full spec for the system can be found at [[Group Management System]]&lt;br /&gt;
&lt;br /&gt;
===Main Website===&lt;br /&gt;
A more data driven site would be beneficial, as well as integrated user management.&lt;br /&gt;
&lt;br /&gt;
===Game Statistics===&lt;br /&gt;
A more push oriented stats system is desired.&lt;br /&gt;
&lt;br /&gt;
==Codebase==&lt;br /&gt;
&lt;br /&gt;
===libGame===&lt;br /&gt;
As much game code as possible needs to be generalized into a lib game and be shared by the client and server.&lt;br /&gt;
&lt;br /&gt;
===Cleanups===&lt;br /&gt;
The current codebase has a number of files/functions that need to be broken up for better reuse and maintainability, these include.&lt;br /&gt;
* bzfs.cxx&lt;br /&gt;
* playing.cxx&lt;br /&gt;
&lt;br /&gt;
==Game server==&lt;br /&gt;
&lt;br /&gt;
===Authoritative Server State===&lt;br /&gt;
The game server needs to keep full track of where every player and every shot is. This state needs to be pushed out as the authortive state to all clients. The server needs to also verify all input according to the current game&#039;s rules. This state needs to include at least the following;&lt;br /&gt;
&lt;br /&gt;
* Player position&lt;br /&gt;
* shot positions and paths&lt;br /&gt;
* death and shot ends.&lt;br /&gt;
* Player/world collision verification&lt;br /&gt;
&lt;br /&gt;
Part of this is described in the [[Server Updated Shots]] design document.&lt;br /&gt;
&lt;br /&gt;
===Server Side players===&lt;br /&gt;
Need to be finished.&lt;br /&gt;
&lt;br /&gt;
===Server side logic for as many actions as possible===&lt;br /&gt;
The game server should provide the logic for as many events/actions as possible, such as flag capturing, death on hit, and others.&lt;br /&gt;
&lt;br /&gt;
==Game Client==&lt;br /&gt;
&lt;br /&gt;
===Graphics system split===&lt;br /&gt;
The graphics subsystem of the game client needs to be split out and made into it&#039;s own module that can be optionally built in. This will help standalone bots.&lt;br /&gt;
&lt;br /&gt;
===Graphics Engine Evaluations===&lt;br /&gt;
Existing third party graphics engines/libraries need to be evaluated to see if they would provide the game with significant features. Engines such as OGRE, Crystal Space, and Open Scene Graph look promising.&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZFlag_2.0.10&amp;diff=3425</id>
		<title>BZFlag 2.0.10</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZFlag_2.0.10&amp;diff=3425"/>
		<updated>2007-10-05T22:02:18Z</updated>

		<summary type="html">&lt;p&gt;Constitution: Updates from ChangeLog&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BZFlag version 2.0.10 is a future version of the BZFlag game that is hoped to be released in October of 2007. It is primarily intended to fix a number of small issues that have been found in 2.0.8 and provide good binary packages for the various Linux distributions.&lt;br /&gt;
&lt;br /&gt;
==Tag And Code Freeze==&lt;br /&gt;
On September 17th at 14:00 PST, the code for v2_0branch was frozen for the build of 2.0.10RC1. Binary builds for this version were posted on the BZFlag forums at http://my.bzflag.org/bb/viewtopic.php?t=11480&lt;br /&gt;
&lt;br /&gt;
==Proposed Names==&lt;br /&gt;
The proposed names for the release are as follows&lt;br /&gt;
* &amp;quot;Never Say Never&amp;quot;&lt;br /&gt;
* &amp;quot;Sasquatch&amp;quot;&lt;br /&gt;
* &amp;quot;He Says He&#039;s Not Dead&amp;quot;&lt;br /&gt;
* &amp;quot;The missing child&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Backports implemented from 2.1==&lt;br /&gt;
The following lists the backported features pulled from 2.1 into 2.0.10RC1&lt;br /&gt;
&lt;br /&gt;
* Add /modcount command - Joshua Bodine&lt;br /&gt;
* Implemented Confine Mouse for Windows platforms - Daniel Remenak&lt;br /&gt;
* Implemented fullscreen-&amp;gt;windowed mode toggle on Windows - Daniel Remenak&lt;br /&gt;
* Jitter Kick - Thomas Stauer&lt;br /&gt;
* Fixed cross-platform and 64-bit network protocol bug - Andrew McNabb&lt;br /&gt;
* Packetloss Kick - Thomas Stauer&lt;br /&gt;
* First map no longer ignored in Start Server menu - Ravu al Hemio&lt;br /&gt;
* Updated zlib to version 1.2.3 - Sean Morrison&lt;br /&gt;
* Added optional delay before the countdown gets resumed - Thomas Stauer&lt;br /&gt;
&lt;br /&gt;
==Current Change Log==&lt;br /&gt;
* Fix bug where users get locked into autopilot mode - Joshua Bodine&lt;br /&gt;
* Fix bug where poll results would not be announced - Joshua Bodine&lt;br /&gt;
* Fix antikill notice bug - Joshua Bodine&lt;br /&gt;
* Add -adminlagannounce and -lagannounce - Thomas Stauer&lt;br /&gt;
* Check for talk permission for part/quit messages  - uso&lt;br /&gt;
* First map no longer ignored in Start Server menu - Ravu al Hemio&lt;br /&gt;
* Implemented Confine Mouse for Windows platforms - Daniel Remenak&lt;br /&gt;
* Implemented fullscreen-&amp;gt;windowed mode toggle on Windows - Daniel Remenak&lt;br /&gt;
* Add the rabidRabbit plugin - LouMan&lt;br /&gt;
* Add packet loss kick and related admin commands - Thomas Stauer&lt;br /&gt;
* Reclaim lost memory from sound sample - Tupone Alfredo&lt;br /&gt;
* Fixed bashism on debian rules - Ryan Kavanagh&lt;br /&gt;
* Add the rabbitTimer plugin - L4m3r&lt;br /&gt;
* Fix some segfaults when re-joining - Tupone Alfredo&lt;br /&gt;
* Compliance with gcc-4.2 - Tupone Alfredo&lt;br /&gt;
* Fix the build system to be more distro friendly - Tupone Alfredo&lt;br /&gt;
* Plugins get flag resets/spawns/grab/drop/transfer - Jeff Myers, Bernt Hansen&lt;br /&gt;
* Fix compiler problem with gcc-4 - Tupone Alfredo&lt;br /&gt;
* Fixed high fps problem - Frank Thilo&lt;br /&gt;
* Added more info for observers - Jeff Myers, Frank Thilo&lt;br /&gt;
* torBlock plugin added - Jeff Myers, blast007&lt;br /&gt;
* Use mesh position and height for radar - Thomas Stauer&lt;br /&gt;
* Add the regFlag plugin - Bernt Hansen&lt;br /&gt;
* Fix memory leak from cURL - blast007&lt;br /&gt;
* Add the Phoenix plugin - Jeff Myers&lt;br /&gt;
* Add favorite server - Frank Thilo&lt;br /&gt;
* SDL sound rate fix - Alfredo Tupone&lt;br /&gt;
* add bzID and server status to logDetail plugin - Bernt Hansen&lt;br /&gt;
* Add -tkannounce to announce tk on admin channel - Bernt Hansen&lt;br /&gt;
* Add the serverControl plugin - Bernt Hansen&lt;br /&gt;
* Add keepaway plugin - LouMan&lt;br /&gt;
* API calls to reset bzdb - Jeff Myers&lt;br /&gt;
* API call to get the player pause state. - Jeff Myers&lt;br /&gt;
* API calls to reload bans, and other files - Jeff Myers&lt;br /&gt;
* API event for shot ends - Jeff Myers&lt;br /&gt;
* API command to move a flag - Jeff Myers&lt;br /&gt;
* add API exposure for lag, jitter, and packetloss - Jeff Myers&lt;br /&gt;
* Add koth plugin - LouMan&lt;br /&gt;
* Add timedctf plugin - LouMan&lt;br /&gt;
* Add teamflagreset plugin - LouMan&lt;br /&gt;
* Add wwzones plugin - LouMan&lt;br /&gt;
* flagStay plugin added - Jeff Myers&lt;br /&gt;
* Give everyone notice of pause messages - Jeff Myers&lt;br /&gt;
* Fix for /silence command - Skeeve&lt;br /&gt;
* Fix mousebox edge positioning - Mark Thomas&lt;br /&gt;
* Fixed on spanish localization - xukosky@yahoo.es&lt;br /&gt;
* Instructions to fix sound on ALSA added - Tupone Alfredo&lt;br /&gt;
* Change filename format for easier location of matches - uso&lt;br /&gt;
* Adding jitter kick and related admin commands - Thomas Stauer&lt;br /&gt;
* Add optional delay before the countdown gets resumed - Thomas Stauer&lt;br /&gt;
* Global banlist reload with local banlist - uso&lt;br /&gt;
* Fix to spawned and lag attributes in bz_updatePlayerData - Matthew Marshall&lt;br /&gt;
* Ability to change the killer in a PlayerDieEvent - Matthew Marshall&lt;br /&gt;
* Added shotID to bz_PlayerDieEventData - Matthew Marshall&lt;br /&gt;
* Expose the countdown and game time stuff to the api - Jeff Myers&lt;br /&gt;
* Backport the record stop function from 2.1 - Jeff Myers&lt;br /&gt;
* Backported WW GMs from 2.1 - Matthew Marshall&lt;br /&gt;
* Converts box &amp;amp; pyramids to mesh if required - Anonymous&lt;br /&gt;
* Allows leading face specification (x+,x-,y+,y-,z+,z-) - Anonymous&lt;br /&gt;
* Authorization is invariant to case - Anonymous&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Versions]]&lt;br /&gt;
[[Category:Releases]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZTourney&amp;diff=3414</id>
		<title>BZTourney</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZTourney&amp;diff=3414"/>
		<updated>2007-10-01T03:18:05Z</updated>

		<summary type="html">&lt;p&gt;Constitution: SVN ViewVC info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BZTourney is a potential collaborative tournament put on by the combined efforts of several server networks. It is currently planned to be a one-time event.&lt;br /&gt;
==Overview==&lt;br /&gt;
Plans for how the tournament will be organized, which gamestyles will be used (or new ones to be created), how scores will be attributed and judged, etc. are currently underway. Please feel free to contribute ideas!&lt;br /&gt;
==Communication/Planning==&lt;br /&gt;
Discussion and planning for the event takes place on the ##bztourney IRC channel on the Freenode IRC network. A website is under construction, and once configured it will be another resource for collaborating efforts on the event.&lt;br /&gt;
==Server Organizations==&lt;br /&gt;
The following server organizations have agreed to be named as sponsors of this tournament. Please add your server organization name here if you plan to contribute.&lt;br /&gt;
*&#039;&#039;&#039;[[BZFX]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Divibox&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;BZFlagr&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;norang&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Oversight/Administration==&lt;br /&gt;
Oversight of the planning and development proccess will take place under the watchful eyes of the leaders of the member server organizations. There are currently no plans to have &#039;&#039;one person&#039;&#039; be given ultimate authority over the project.&lt;br /&gt;
&lt;br /&gt;
In-game administrative privileges will be granted to the project leaders and to those admins who are most-trusted (as agreed upon by the project leaders). Due to the importance of selecting admins with integrity that will not act inappropriately in the middle of the tournament, only &lt;br /&gt;
admins who are highly-trusted will be selected.&lt;br /&gt;
==Maps==&lt;br /&gt;
According to the current plan, one or more maps will be created from scratch for this tournament. We are hoping to acquire the skills of four or five (or more!) mappers to create these maps, and will be looking for users to test them once they&#039;ve reached the appropriate stage.&lt;br /&gt;
==Infrastructure==&lt;br /&gt;
A project like this will require a lot of work to setup. The following are some ideas for features we&#039;d like to see in these categories.&lt;br /&gt;
===SVN===&lt;br /&gt;
The project uses an SVN repository for managing code, maps, web content, etc. relating to the tournament. Public SVN access is available using the following command:&lt;br /&gt;
  svn co &amp;lt;nowiki&amp;gt;svn://bztournament.net/bztourney&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Commit access to the repository is granted to most project contributers. If you have something to contribute, and desire commit access, please ask on the ##bztourney IRC channel (see above). Web access to the repository is available at [http://bztournament.net/viewvc http://bztournament.net/viewvc].&lt;br /&gt;
===Web Site===&lt;br /&gt;
www.bztournament.net&lt;br /&gt;
===Plugins===&lt;br /&gt;
Plugins&lt;br /&gt;
===Scripting===&lt;br /&gt;
Scripting.&lt;br /&gt;
==Task List==&lt;br /&gt;
&#039;&#039;If you think something needs to be done, please add it here. To sign up to help with something, please add your name below it. All entries should be in the following format:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Scoring algorithm===&lt;br /&gt;
&#039;&#039;Category:&#039;&#039; Plugins/Web&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Description:&#039;&#039; We will need to develop a method for allocating and tracking player scores. This will be especially true for non-FFA games, where points should be allocated for carrying/capturing flags, etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Stage:&#039;&#039; Planning&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Notes:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Assigned to:&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;AAA&#039;&#039;&#039;&lt;br /&gt;
===Sample Idea===&lt;br /&gt;
&#039;&#039;Category:&#039;&#039; Mapping/Plugins/Scripting/Web/etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Description:&#039;&#039; Description of idea.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Stage:&#039;&#039; Planning/Implementing/Completed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Notes:&#039;&#039; Any notes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Assigned to:&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Contributer1&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Contributer2&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZTourney&amp;diff=3413</id>
		<title>BZTourney</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZTourney&amp;diff=3413"/>
		<updated>2007-10-01T03:14:36Z</updated>

		<summary type="html">&lt;p&gt;Constitution: SVN info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BZTourney is a potential collaborative tournament put on by the combined efforts of several server networks. It is currently planned to be a one-time event.&lt;br /&gt;
==Overview==&lt;br /&gt;
Plans for how the tournament will be organized, which gamestyles will be used (or new ones to be created), how scores will be attributed and judged, etc. are currently underway. Please feel free to contribute ideas!&lt;br /&gt;
==Communication/Planning==&lt;br /&gt;
Discussion and planning for the event takes place on the ##bztourney IRC channel on the Freenode IRC network. A website is under construction, and once configured it will be another resource for collaborating efforts on the event.&lt;br /&gt;
==Server Organizations==&lt;br /&gt;
The following server organizations have agreed to be named as sponsors of this tournament. Please add your server organization name here if you plan to contribute.&lt;br /&gt;
*&#039;&#039;&#039;[[BZFX]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Divibox&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;BZFlagr&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;norang&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Oversight/Administration==&lt;br /&gt;
Oversight of the planning and development proccess will take place under the watchful eyes of the leaders of the member server organizations. There are currently no plans to have &#039;&#039;one person&#039;&#039; be given ultimate authority over the project.&lt;br /&gt;
&lt;br /&gt;
In-game administrative privileges will be granted to the project leaders and to those admins who are most-trusted (as agreed upon by the project leaders). Due to the importance of selecting admins with integrity that will not act inappropriately in the middle of the tournament, only &lt;br /&gt;
admins who are highly-trusted will be selected.&lt;br /&gt;
==Maps==&lt;br /&gt;
According to the current plan, one or more maps will be created from scratch for this tournament. We are hoping to acquire the skills of four or five (or more!) mappers to create these maps, and will be looking for users to test them once they&#039;ve reached the appropriate stage.&lt;br /&gt;
==Infrastructure==&lt;br /&gt;
A project like this will require a lot of work to setup. The following are some ideas for features we&#039;d like to see in these categories.&lt;br /&gt;
===SVN===&lt;br /&gt;
The project uses an SVN repository for managing code, maps, web content, etc. relating to the tournament. Public SVN access is available using the following command:&lt;br /&gt;
  svn co &amp;lt;nowiki&amp;gt;svn://bztournament.net/bztourney&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Commit access to the repository is granted to most project contributers. If you have something to contribute, and desire commit access, please ask on the ##bztourney IRC channel (see above).&lt;br /&gt;
===Web Site===&lt;br /&gt;
www.bztournament.net&lt;br /&gt;
===Plugins===&lt;br /&gt;
Plugins&lt;br /&gt;
===Scripting===&lt;br /&gt;
Scripting.&lt;br /&gt;
==Task List==&lt;br /&gt;
&#039;&#039;If you think something needs to be done, please add it here. To sign up to help with something, please add your name below it. All entries should be in the following format:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Scoring algorithm===&lt;br /&gt;
&#039;&#039;Category:&#039;&#039; Plugins/Web&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Description:&#039;&#039; We will need to develop a method for allocating and tracking player scores. This will be especially true for non-FFA games, where points should be allocated for carrying/capturing flags, etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Stage:&#039;&#039; Planning&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Notes:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Assigned to:&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;AAA&#039;&#039;&#039;&lt;br /&gt;
===Sample Idea===&lt;br /&gt;
&#039;&#039;Category:&#039;&#039; Mapping/Plugins/Scripting/Web/etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Description:&#039;&#039; Description of idea.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Stage:&#039;&#039; Planning/Implementing/Completed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Notes:&#039;&#039; Any notes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Assigned to:&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Contributer1&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Contributer2&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZTourney&amp;diff=3412</id>
		<title>BZTourney</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZTourney&amp;diff=3412"/>
		<updated>2007-09-30T21:13:25Z</updated>

		<summary type="html">&lt;p&gt;Constitution: Communication/Planning section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BZTourney is a potential collaborative tournament put on by the combined efforts of several server networks. It is currently planned to be a one-time event.&lt;br /&gt;
==Overview==&lt;br /&gt;
Plans for how the tournament will be organized, which gamestyles will be used (or new ones to be created), how scores will be attributed and judged, etc. are currently underway. Please feel free to contribute ideas!&lt;br /&gt;
==Communication/Planning==&lt;br /&gt;
Discussion and planning for the event takes place on the ##bztourney IRC channel on the Freenode IRC network. A website is under construction, and once configured it will be another resource for collaborating efforts on the event.&lt;br /&gt;
==Server Organizations==&lt;br /&gt;
The following server organizations have agreed to be named as sponsors of this tournament. Please add your server organization name here if you plan to contribute.&lt;br /&gt;
*&#039;&#039;&#039;[[BZFX]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Divibox&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;BZFlagr&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;norang&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Oversight/Administration==&lt;br /&gt;
Oversight of the planning and development proccess will take place under the watchful eyes of the leaders of the member server organizations. There are currently no plans to have &#039;&#039;one person&#039;&#039; be given ultimate authority over the project.&lt;br /&gt;
&lt;br /&gt;
In-game administrative privileges will be granted to the project leaders and to those admins who are most-trusted (as agreed upon by the project leaders). Due to the importance of selecting admins with integrity that will not act inappropriately in the middle of the tournament, only &lt;br /&gt;
admins who are highly-trusted will be selected.&lt;br /&gt;
==Maps==&lt;br /&gt;
According to the current plan, one or more maps will be created from scratch for this tournament. We are hoping to acquire the skills of four or five (or more!) mappers to create these maps, and will be looking for users to test them once they&#039;ve reached the appropriate stage.&lt;br /&gt;
==Infrastructure==&lt;br /&gt;
A project like this will require a lot of work to setup. The following are some ideas for features we&#039;d like to see in these categories.&lt;br /&gt;
===Web Site===&lt;br /&gt;
www.bztournament.net&lt;br /&gt;
===Plugins===&lt;br /&gt;
Plugins&lt;br /&gt;
===Scripting===&lt;br /&gt;
Scripting.&lt;br /&gt;
==Task List==&lt;br /&gt;
&#039;&#039;If you think something needs to be done, please add it here. To sign up to help with something, please add your name below it. All entries should be in the following format:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Scoring algorithm===&lt;br /&gt;
&#039;&#039;Category:&#039;&#039; Plugins/Web&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Description:&#039;&#039; We will need to develop a method for allocating and tracking player scores. This will be especially true for non-FFA games, where points should be allocated for carrying/capturing flags, etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Stage:&#039;&#039; Planning&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Notes:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Assigned to:&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;AAA&#039;&#039;&#039;&lt;br /&gt;
===Sample Idea===&lt;br /&gt;
&#039;&#039;Category:&#039;&#039; Mapping/Plugins/Scripting/Web/etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Description:&#039;&#039; Description of idea.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Stage:&#039;&#039; Planning/Implementing/Completed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Notes:&#039;&#039; Any notes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Assigned to:&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Contributer1&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Contributer2&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZTourney&amp;diff=3399</id>
		<title>BZTourney</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZTourney&amp;diff=3399"/>
		<updated>2007-09-29T08:23:57Z</updated>

		<summary type="html">&lt;p&gt;Constitution: Scoring algorithm from AAA&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BZTourney is a potential collaborative tournament put on by the combined efforts of several server networks. It is currently planned to be a one-time event.&lt;br /&gt;
==Overview==&lt;br /&gt;
Plans for how the tournament will be organized, which gamestyles will be used (or new ones to be created), how scores will be attributed and judged, etc. are currently underway. Please feel free to contribute ideas!&lt;br /&gt;
==Server Organizations==&lt;br /&gt;
The following server organizations have agreed to be named as sponsors of this tournament. Please add your server organization name here if you plan to contribute.&lt;br /&gt;
*&#039;&#039;&#039;[[BZFX]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Divibox&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;BZFlagr&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Oversight/Administration==&lt;br /&gt;
Oversight of the planning and development proccess will take place under the watchful eyes of the leaders of the member server organizations. There are currently no plans to have &#039;&#039;one person&#039;&#039; be given ultimate authority over the project.&lt;br /&gt;
&lt;br /&gt;
In-game administrative privileges will be granted to the project leaders and to those admins who are most-trusted (as agreed upon by the project leaders). Due to the importance of selecting admins with integrity that will not act inappropriately in the middle of the tournament, only &lt;br /&gt;
admins who are highly-trusted will be selected.&lt;br /&gt;
==Maps==&lt;br /&gt;
According to the current plan, one or more maps will be created from scratch for this tournament. We are hoping to acquire the skills of four or five (or more!) mappers to create these maps, and will be looking for users to test them once they&#039;ve reached the appropriate stage.&lt;br /&gt;
==Infrastructure==&lt;br /&gt;
A project like this will require a lot of work to setup. The following are some ideas for features we&#039;d like to see in these categories.&lt;br /&gt;
===Web Site===&lt;br /&gt;
Web site.&lt;br /&gt;
===Plugins===&lt;br /&gt;
Plugins&lt;br /&gt;
===Scripting===&lt;br /&gt;
Scripting.&lt;br /&gt;
==Task List==&lt;br /&gt;
&#039;&#039;If you think something needs to be done, please add it here. To sign up to help with something, please add your name below it. All entries should be in the following format:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Scoring algorithm===&lt;br /&gt;
&#039;&#039;Category:&#039;&#039; Plugins/Web&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Description:&#039;&#039; We will need to develop a method for allocating and tracking player scores. This will be especially true for non-FFA games, where points should be allocated for carrying/capturing flags, etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Stage:&#039;&#039; Planning&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Notes:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Assigned to:&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;AAA&#039;&#039;&#039;&lt;br /&gt;
===Sample Idea===&lt;br /&gt;
&#039;&#039;Category:&#039;&#039; Mapping/Plugins/Scripting/Web/etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Description:&#039;&#039; Description of idea.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Stage:&#039;&#039; Planning/Implementing/Completed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Notes:&#039;&#039; Any notes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Assigned to:&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Contributer1&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Contributer2&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZTourney&amp;diff=3396</id>
		<title>BZTourney</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZTourney&amp;diff=3396"/>
		<updated>2007-09-28T22:58:39Z</updated>

		<summary type="html">&lt;p&gt;Constitution: Initial edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BZTourney is a potential collaborative tournament put on by the combined efforts of several server networks. It is currently planned to be a one-time event.&lt;br /&gt;
==Overview==&lt;br /&gt;
Plans for how the tournament will be organized, which gamestyles will be used (or new ones to be created), how scores will be attributed and judged, etc. are currently underway. Please feel free to contribute ideas!&lt;br /&gt;
==Server Organizations==&lt;br /&gt;
The following server organizations have agreed to be named as sponsors of this tournament. Please add your server organization name here if you plan to contribute.&lt;br /&gt;
*&#039;&#039;&#039;Divibox&#039;&#039;&#039;&lt;br /&gt;
==Oversight/Administration==&lt;br /&gt;
Oversight of the planning and development proccess will take place under the watchful eyes of the leaders of the member server organizations. There are currently no plans to have &#039;&#039;one person&#039;&#039; be given ultimate authority over the project.&lt;br /&gt;
&lt;br /&gt;
In-game administrative privileges will be granted to the project leaders and to those admins who are most-trusted (as agreed upon by the project leaders). Due to the importance of selecting admins with integrity that will not act inappropriately in the middle of the tournament, only &lt;br /&gt;
admins who are highly-trusted will be selected.&lt;br /&gt;
==Maps==&lt;br /&gt;
According to the current plan, one or more maps will be created from scratch for this tournament. We are hoping to acquire the skills of four or five (or more!) mappers to create these maps, and will be looking for users to test them once they&#039;ve reached the appropriate stage.&lt;br /&gt;
==Infrastructure==&lt;br /&gt;
A project like this will require a lot of work to setup. The following are some ideas for features we&#039;d like to see in these categories.&lt;br /&gt;
===Web Site===&lt;br /&gt;
Web site.&lt;br /&gt;
===Plugins===&lt;br /&gt;
Plugins&lt;br /&gt;
===Scripting===&lt;br /&gt;
Scripting.&lt;br /&gt;
==Task List==&lt;br /&gt;
&#039;&#039;If you think something needs to be done, please add it here. To sign up to help with something, please add your name below it. All entries should be in the following format:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Sample Idea===&lt;br /&gt;
&#039;&#039;Category:&#039;&#039; Mapping/Plugins/Scripting/Web/etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Description:&#039;&#039; Description of idea.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Stage:&#039;&#039; Planning/Implementing/Completed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Notes:&#039;&#039; Any notes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Assigned to:&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Contributer1&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Contributer2&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZFlag_2.0.10&amp;diff=3215</id>
		<title>BZFlag 2.0.10</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZFlag_2.0.10&amp;diff=3215"/>
		<updated>2007-09-08T07:38:29Z</updated>

		<summary type="html">&lt;p&gt;Constitution: issues were in 2.0.8, not 2.0.10&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BZFlag version 2.0.10 is a future version of the BZFlag game that is hoped to be released in October of 2007. It is primarily intended to fix a number of small issues that have been found in 2.0.8 and provide good binary packages for the various Linux distributions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Proposed back ports from 2.1==&lt;br /&gt;
&lt;br /&gt;
To help on merging see the [http://my.bzflag.org/~atupone/CommitList-2.1 2.1 commit list]&lt;br /&gt;
&lt;br /&gt;
===Implemented===&lt;br /&gt;
* Implemented Confine Mouse for Windows platforms - Daniel Remenak&lt;br /&gt;
* Implemented fullscreen-&amp;gt;windowed mode toggle on Windows - Daniel Remenak&lt;br /&gt;
* Jitter Kick - Thomas Stauer&lt;br /&gt;
* Fixed cross-platform and 64-bit network protocol bug - Andrew McNabb&lt;br /&gt;
* Packetloss Kick - Thomas Stauer&lt;br /&gt;
* First map no longer ignored in Start Server menu - Ravu al Hemio&lt;br /&gt;
* Updated zlib to version 1.2.3 - Sean Morrison&lt;br /&gt;
&lt;br /&gt;
===Approved===&lt;br /&gt;
* fixed issues on some SMP Linux systems due to bad timekeeping - A. W. Wright&lt;br /&gt;
* Fixed framerate jitter-inducing bug on SMP systems - Sean Morrison&lt;br /&gt;
* Researched and updated BZFlag contributors documentation - Sean Morrison&lt;br /&gt;
* Callsign bans are now handled case-insensitively - Sean Morrison&lt;br /&gt;
&lt;br /&gt;
===Possible===&lt;br /&gt;
* Anti-aliased rendering option - Snick&lt;br /&gt;
* Fixed map line ending parse bug for flag zones - Jeff Myers&lt;br /&gt;
* Added optional delay before the countdown gets resumed - Thomas Stauer&lt;br /&gt;
* increased joystick button support to 32 buttons - Markus\&lt;br /&gt;
* framerate independent keyboard turn dampening - Sean Morrison, randomparticle&lt;br /&gt;
* improved French localization - Christophe Henry&lt;br /&gt;
&lt;br /&gt;
==Current Change Log==&lt;br /&gt;
* Add the rabidRabbit plugin - LouMan&lt;br /&gt;
* Add /packetlosswarn and /packetlossdrop - Thomas Stauer&lt;br /&gt;
* Fixed memory loss for sound sample - Tupone Alfredo&lt;br /&gt;
* Fixed invalid kick speed - Tupone Alfredo&lt;br /&gt;
* Add packet loss kick - Thomas Stauer&lt;br /&gt;
* Fix a segfault when re-joining - Tupone Alfredo&lt;br /&gt;
* Add the rabbitTimer plugin - L4m3r&lt;br /&gt;
* Fix a segfault when re-joining from observer - Tupone Alfredo&lt;br /&gt;
* Fix the build system to be more distro friendly - Tupone Alfredo&lt;br /&gt;
* Fixed high fps problem - Frank Thilo&lt;br /&gt;
* API calls to reset bzdb - Jeff Myers&lt;br /&gt;
* API call to get the player pause state. - Jeff Myers&lt;br /&gt;
* API calls to reload bans, and other files - Jeff Myers&lt;br /&gt;
* API event for shot ends - Jeff Myers&lt;br /&gt;
* API command to move a flag - Jeff Myers&lt;br /&gt;
* add API exposure for lag, jitter, and packetloss - Jeff Myers&lt;br /&gt;
* Add koth plugin - LouMan&lt;br /&gt;
* Add timedctf plugin - LouMan&lt;br /&gt;
* Add teamflagreset plugin - LouMan&lt;br /&gt;
* Add keepaway plugin - LouMan&lt;br /&gt;
* Add wwzones plugin - LouMan&lt;br /&gt;
* fix compiler problem with gcc-4 - Tupone Alfredo&lt;br /&gt;
* torBlock plugin added - Jeff Myers&lt;br /&gt;
* flagStay plugin added - Jeff Myers&lt;br /&gt;
* Give everyone notice of pause messages - Jeff Myers&lt;br /&gt;
* Fix for /silence command - Skeeve&lt;br /&gt;
* Fix mousebox edge positioning - Mark Thomas&lt;br /&gt;
* Fixed on spanish localization - xukosky@yahoo.es&lt;br /&gt;
* Instructions to fix sound on ALSA added - Tupone Alfredo&lt;br /&gt;
* Change filename format for easier location of matches - uso&lt;br /&gt;
* Adding jitterdrop - Thomas Stauer&lt;br /&gt;
* Adding jitterkick - uso&lt;br /&gt;
* Global banlist reload with local banlist - uso&lt;br /&gt;
* Added more info for observers - Jeff Myers&lt;br /&gt;
* Fix to spawned and lag attributes in bz_updatePlayerData - Matthew Marshall&lt;br /&gt;
* Ability to change the killer in a PlayerDieEvent - Matthew Marshall&lt;br /&gt;
* Added shotID to bz_PlayerDieEventData - Matthew Marshall&lt;br /&gt;
* Expose the countdown and game time stuff to the api - Jeff Myers&lt;br /&gt;
* Backport the record stop function from 2.1 - Jeff Myers&lt;br /&gt;
* Backported WW GMs from 2.1 - Matthew Marshall&lt;br /&gt;
* Converts box &amp;amp; pyramids to mesh if required - Anonymous&lt;br /&gt;
* Allows leading face specification (x+,x-,y+,y-,z+,z-) - Anonymous&lt;br /&gt;
* Authorization is invariant to case - Anonymous&lt;br /&gt;
&lt;br /&gt;
[[Category:Versions]]&lt;br /&gt;
[[Category:Releases]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZFS_in_a_chroot_jail&amp;diff=2182</id>
		<title>BZFS in a chroot jail</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZFS_in_a_chroot_jail&amp;diff=2182"/>
		<updated>2007-04-21T04:37:50Z</updated>

		<summary type="html">&lt;p&gt;Constitution: correct capitalization&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BZFS in a chroot jail is a concept where a [[BZFS]] server is run on a host computer in a very secure environment, preventing it from having access to any other parts of the host system.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
Installing the BZFLAG Server (bzfs) in a ‘sandbox’ or a ‘jail’ on Linux by using the features provided with chroot is an advanced method for setting up a server. It offers additional security for the hosting server. For general information on setting up a server see [[Creating A Server]].&lt;br /&gt;
&lt;br /&gt;
This method has been tested on Redhat 8 and 9 systems. Other Linux distributions should work in a similar manner.&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
Before attempting to set up BZFS in a chroot jail it is best to have a little background in using the chroot command. The best place to start is reading the man page&lt;br /&gt;
 man chroot&lt;br /&gt;
but the basic concept is to run a program in a directory and force it to think that it is the root (the top) of the filesystem (the ‘sandbox’ or ‘jail’), so that if the application was ever compromised, only it’s folder would be accessible to the attacker and not the entire filesystem. User root, or any program with root privileges can break out of a chroot  jail. Users should be ware that a badly configured chroot jail might even be a larger security problem then not running one. The application jk_check from http://olivier.sessink.nl/jailkit does checks to verify if your chroot jail is safe.&lt;br /&gt;
&lt;br /&gt;
Before a program can be run in a jail, the user must make sure that the program has all dependencies that it may need. This means creating a smaller copy of the root filesystem so that the program can access the files that it needs, and knows where to find them. This means that if a program requires a library in /lib, then we will need a lib directory with those libraries in our jail. (if this is confusing – hang in there, you will see an example below).&lt;br /&gt;
&lt;br /&gt;
== Just tell me how to do it!! ==&lt;br /&gt;
&lt;br /&gt;
Let’s say we have already compiled and installed (via RPM or source) bzflag in /usr/share/bzflag (or wherever you installed it), and we want to have it run in a jail.&lt;br /&gt;
&lt;br /&gt;
I like to create a folder in the root of the filesystem called chroot, and then place folders in there for everything that I am running in a jail. This helps me to keep track of which programs/services/applications I am running in a jail easily. I also don’t like creating jails in system directories (in this case it would be /usr/share or wherever you installed it).&lt;br /&gt;
&lt;br /&gt;
I would, for example, create a folder like /chroot/bzflag. &lt;br /&gt;
I would then copy the actual executable in a bin folder. So know we have:&lt;br /&gt;
 /chroot/bzflag/&lt;br /&gt;
 /chroot/bzflag/bin &lt;br /&gt;
 /chroot/bzflag/bin/bzfs (the bzfs executable in the jail’s bin directory).&lt;br /&gt;
Now we need the dependency files – how do we know which files bzfs depends on? Run ‘ldd –v /usr/bin/bzfs’ (or where ever you installed bzfs to when you compiled it. NOTE: that this is the real one and not the one you copied to the jail) and you should get something like (on Redhat 9 systems):&lt;br /&gt;
 $ ldd -v bzfs&lt;br /&gt;
        libstdc++.so.5 =&amp;gt; /usr/lib/libstdc++.so.5 (0x40034000)&lt;br /&gt;
        libm.so.6 =&amp;gt; /lib/tls/libm.so.6 (0x400e7000)&lt;br /&gt;
        libgcc_s.so.1 =&amp;gt; /lib/libgcc_s.so.1 (0x40109000)&lt;br /&gt;
        libc.so.6 =&amp;gt; /lib/tls/libc.so.6 (0x42000000)&lt;br /&gt;
        /lib/ld-linux.so.2 =&amp;gt; /lib/ld-linux.so.2 (0x40000000)&lt;br /&gt;
 &lt;br /&gt;
        Version information:&lt;br /&gt;
        ./bzfs:&lt;br /&gt;
                libc.so.6 (GLIBC_2.1.3) =&amp;gt; /lib/tls/libc.so.6&lt;br /&gt;
                libc.so.6 (GLIBC_2.1) =&amp;gt; /lib/tls/libc.so.6&lt;br /&gt;
                libc.so.6 (GLIBC_2.0) =&amp;gt; /lib/tls/libc.so.6&lt;br /&gt;
                libstdc++.so.5 (CXXABI_1.2) =&amp;gt; /usr/lib/libstdc++.so.5&lt;br /&gt;
                libstdc++.so.5 (GLIBCPP_3.2) =&amp;gt; /usr/lib/libstdc++.so.5&lt;br /&gt;
        /usr/lib/libstdc++.so.5:&lt;br /&gt;
                libgcc_s.so.1 (GCC_3.0) =&amp;gt; /lib/libgcc_s.so.1&lt;br /&gt;
                libc.so.6 (GLIBC_2.2) =&amp;gt; /lib/tls/libc.so.6&lt;br /&gt;
                libc.so.6 (GLIBC_2.1.3) =&amp;gt; /lib/tls/libc.so.6&lt;br /&gt;
                libc.so.6 (GLIBC_2.3) =&amp;gt; /lib/tls/libc.so.6&lt;br /&gt;
                libc.so.6 (GLIBC_2.0) =&amp;gt; /lib/tls/libc.so.6&lt;br /&gt;
                libc.so.6 (GLIBC_2.1) =&amp;gt; /lib/tls/libc.so.6&lt;br /&gt;
        /lib/tls/libm.so.6:&lt;br /&gt;
                libc.so.6 (GLIBC_2.1.3) =&amp;gt; /lib/tls/libc.so.6&lt;br /&gt;
                libc.so.6 (GLIBC_2.0) =&amp;gt; /lib/tls/libc.so.6&lt;br /&gt;
        /lib/libgcc_s.so.1:&lt;br /&gt;
                libc.so.6 (GLIBC_2.2.4) =&amp;gt; /lib/tls/libc.so.6&lt;br /&gt;
                libc.so.6 (GLIBC_2.1.3) =&amp;gt; /lib/tls/libc.so.6&lt;br /&gt;
                libc.so.6 (GLIBC_2.0) =&amp;gt; /lib/tls/libc.so.6&lt;br /&gt;
        /lib/tls/libc.so.6:&lt;br /&gt;
                ld-linux.so.2 (GLIBC_2.3) =&amp;gt; /lib/ld-linux.so.2&lt;br /&gt;
                ld-linux.so.2 (GLIBC_2.1) =&amp;gt; /lib/ld-linux.so.2&lt;br /&gt;
                ld-linux.so.2 (GLIBC_2.0) =&amp;gt; /lib/ld-linux.so.2&lt;br /&gt;
                ld-linux.so.2 (GLIBC_PRIVATE) =&amp;gt; /lib/ld-linux.so.2}}}&lt;br /&gt;
This is where the ‘mini root’ filesystem comes in. For every file listed in the output of the ldd command – copy those files to the jail into the appropriate directory. The jailkit package at http://olivier.sessink.nl/jailkit/ contains a utility jk_cp that can be used to automatically copy all dependencies of a file into a jail. &lt;br /&gt;
 mkdir /chroot/&lt;br /&gt;
 jk_cp /chroot/ /bin/bzfs&lt;br /&gt;
&lt;br /&gt;
Make sure you get all of them or bzfs will complain that it is missing something later on. On Redhat 9 there is a /lib/tls directory, on Redhat 8 these same libraries were in /lib/i686 – so you will have to substitute the proper directories here for wherever your system expects them. Use the exact same path as outputted by ldd. So you should copy something similar to (create the directories as needed):&lt;br /&gt;
 /chroot/bzflag/usr/lib/libstdc++.so.5   (copied from /usr/lib)&lt;br /&gt;
 /chroot/bzflag/lib/libgcc_s.so.1        (copied from /lib)&lt;br /&gt;
 /chroot/bzflag/lib/tls/libm.so.6        (copied from /lib/tls)&lt;br /&gt;
 /chroot/bzflag/lib/tls/libc.so.6        (copied from /lib/tls)&lt;br /&gt;
 /chroot/bzflag/lib/ld-linux.so.2        (copied from /lib)&lt;br /&gt;
&lt;br /&gt;
BZFS also needs libraries to resolve DNS names to IP addresses (to register itself with the list server), and so you will need these extra libraries that are not reported through ldd (copy from /lib to your corresponding jail directory):&lt;br /&gt;
 /lib/libnss_dns.so.2  -&amp;gt; /chroot/bzflag/lib/libnss_dns.so.2&lt;br /&gt;
 /lib/libresolv.so.2   -&amp;gt; /chroot/bzflag/lib/libresolv.so.2&lt;br /&gt;
&lt;br /&gt;
You will also need an etc directory with the resolv.conf file in it so that the above libraries know which DNS server they need to contact in order to resolve things, so copy from /etc into your corresponding jail directory:&lt;br /&gt;
 /etc/resolv.conf -&amp;gt; /chroot/bzflag/etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
and now the hard part is done…&lt;br /&gt;
&lt;br /&gt;
Again this bit can be done easier using jailkit:&lt;br /&gt;
 jk_init /chroot/ netbasics&lt;br /&gt;
&lt;br /&gt;
Here is the complete listing of what your jail should look like or be similar to (in the case of the lib directory which will change from Linux version/distro I am sure – it already changed just from Redhat 8 to 9):&lt;br /&gt;
 $ ls -alFR ./bzflag/&lt;br /&gt;
 ./bzflag/:&lt;br /&gt;
 total 24&lt;br /&gt;
 drwxr-xr-x    6 root     root         4096 Jul 12 08:12 ./&lt;br /&gt;
 drwxr-xr-x    3 root     root         4096 Jul 12 07:24 ../&lt;br /&gt;
 drwxr-xr-x    2 root     root         4096 Jul 12 07:25 bin/&lt;br /&gt;
 drwxr-xr-x    2 root     root         4096 Jul 12 08:29 etc/&lt;br /&gt;
 drwxr-xr-x    3 root     root         4096 Jul 12 08:34 lib/&lt;br /&gt;
 drwxr-xr-x    3 root     root         4096 Jul 12 08:26 usr/&lt;br /&gt;
 &lt;br /&gt;
 ./bzflag/bin:&lt;br /&gt;
 total 188&lt;br /&gt;
 drwxr-xr-x    2 root     root         4096 Jul 12 07:25 ./&lt;br /&gt;
 drwxr-xr-x    6 root     root         4096 Jul 12 08:12 ../&lt;br /&gt;
 -rwsr-sr-x    1 nobody   nobody     179160 Jul 12 07:25 bzfs*&lt;br /&gt;
 &lt;br /&gt;
 ./bzflag/etc:&lt;br /&gt;
 total 12&lt;br /&gt;
 drwxr-xr-x    2 root     root         4096 Jul 12 08:29 ./&lt;br /&gt;
 drwxr-xr-x    6 root     root         4096 Jul 12 08:12 ../&lt;br /&gt;
 -rw-r--r--    1 root     root           54 Jul 12 08:29 resolv.conf&lt;br /&gt;
 &lt;br /&gt;
 ./bzflag/lib:&lt;br /&gt;
 total 252&lt;br /&gt;
 drwxr-xr-x    3 root     root         4096 Jul 12 08:34 ./&lt;br /&gt;
 drwxr-xr-x    6 root     root         4096 Jul 12 08:12 ../&lt;br /&gt;
 -rwxr-xr-x    1 root     root       103044 Jul 12 08:20 ld-linux.so.2*&lt;br /&gt;
 -rwxr-xr-x    1 root     root        30324 Jul 12 08:20 libgcc_s.so.1*&lt;br /&gt;
 -rwxr-xr-x    1 root     root        18416 Jul 12 08:25 libnss_dns.so.2*&lt;br /&gt;
 -rwxr-xr-x    1 root     root        76552 Jul 12 08:23 libresolv.so.2*&lt;br /&gt;
 drwxr-xr-x    2 root     root         4096 Jul 12 08:16 tls/&lt;br /&gt;
 &lt;br /&gt;
 ./bzflag/lib/tls:&lt;br /&gt;
 total 1740&lt;br /&gt;
 drwxr-xr-x    2 root     root         4096 Jul 12 08:16 ./&lt;br /&gt;
 drwxr-xr-x    3 root     root         4096 Jul 12 08:34 ../&lt;br /&gt;
 -rwxr-xr-x    1 root     root      1549556 Jul 12 08:16 libc.so.6*&lt;br /&gt;
 -rwxr-xr-x    1 root     root       211876 Jul 12 08:16 libm.so.6*&lt;br /&gt;
 &lt;br /&gt;
 ./bzflag/usr:&lt;br /&gt;
 total 80&lt;br /&gt;
 drwxr-xr-x    3 root     root         4096 Jul 12 08:26 ./&lt;br /&gt;
 drwxr-xr-x    6 root     root         4096 Jul 12 08:12 ../&lt;br /&gt;
 drwxr-xr-x    2 root     root        69632 Jul 12 08:02 lib/&lt;br /&gt;
 &lt;br /&gt;
 ./bzflag/usr/lib:&lt;br /&gt;
 total 776&lt;br /&gt;
 drwxr-xr-x    2 root     root        69632 Jul 12 08:02 ./&lt;br /&gt;
 drwxr-xr-x    3 root     root         4096 Jul 12 08:26 ../&lt;br /&gt;
 -rwxr-xr-x    1 root     root       710608 Jul 12 08:02 libstdc++.so.5*&lt;br /&gt;
== More Security ==&lt;br /&gt;
&lt;br /&gt;
Since you have to execute chroot as root, bzfs will run as root – which is not what we want. We can force bzfs to run as nobody by changing his ownership to nobody, and setting the sticky bit on him. This way, when root executes /chroot/bzflag/bin/bzfs – it is executed as nobody, and therefore has very little privileges on the system. &lt;br /&gt;
&lt;br /&gt;
This is how we do that:&lt;br /&gt;
 chown nobody.nobody /chroot/bzflag/bin/bzfs&lt;br /&gt;
 chmod +s /chroot/bzflag/bin/bzfs&lt;br /&gt;
&lt;br /&gt;
But this changes only the effective user id, not the real user id. A safer way to do this is to make use of the jk_chrootlaunch utility in jailkit (http://olivier.sessink.nl/jailkit/), it will drop all privileges, and then execute as user nobody, without any possibility to regain root privileges, because both the effective AND the real user id are now changed to nobody.&lt;br /&gt;
&lt;br /&gt;
 jk_chrootlaunch -j /chroot/bzflag/ -x /bin/bzfs –d –d –d –d –public TestServer –publicaddr &amp;lt;your_public_ip_address:port&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
Run a command like the following (as root),&lt;br /&gt;
 chroot /chroot/bzflag/ /bin/bzfs –d –d –d –d –public TestServer –publicaddr &amp;lt;your_public_ip_address:port&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It will log any errors to /var/log/daemon.log&lt;br /&gt;
&lt;br /&gt;
This is where all the magic of chroot happens. And this command should make sense to you as you read the man page, right :) If not, the command basically takes 2 arguments. The first is the &amp;quot;new root&amp;quot; (/chroot/bzflag/). The second is the command to run. Notice that we specify /bin/bzfs to run bzfs, and not /chroot/bzflag/bin.&lt;br /&gt;
&lt;br /&gt;
You should see something similar to:&lt;br /&gt;
 $ chroot /chroot/bzflag/ /bin/bzfs -d -d -d -d -public test -publicaddr 65.39.216.149:5155&lt;br /&gt;
 style: 0&lt;br /&gt;
 Opening List Server 0&lt;br /&gt;
 listening on 0.0.0.0:5155&lt;br /&gt;
 &lt;br /&gt;
 ADD 65.39.216.149:5155 2 BZFS107e 000000c800010000000000000000000000c800c800c800c800c800000000000000000000 test&lt;br /&gt;
 &lt;br /&gt;
 Closing List server 0&lt;br /&gt;
 Player [0] accept() from 208.186.182.172:47076 on 7&lt;br /&gt;
 Player [0] shutdownAcceptClient: close(7) &lt;br /&gt;
&lt;br /&gt;
If you don’t or get an error like “failed http ...” – then a resolv/dns library or the resolv.conf in etc can’t be found – copy them again check your spelling and any paths and try again…&lt;br /&gt;
&lt;br /&gt;
The next thing to verify is that bzfs is really running as nobody and not as root. Start bzfs in the background this time ($ chroot /chroot/bzflag/ /bin/bzfs -d -d -d -d -public test -publicaddr &amp;lt;your_public_ip_address_here&amp;gt;:&amp;lt;your_server_port&amp;gt; &amp;amp;), and then ‘ps aux | grep –i bz’ and look for at the user bzfs is running as.&lt;br /&gt;
&lt;br /&gt;
You should see something like:&lt;br /&gt;
 $ ps aux | grep -i bz&lt;br /&gt;
 nobody    2930  0.1  1.3  3032 1668 pts/1    S    09:49   0:00 [bzfs]&lt;br /&gt;
 root      2932  0.0  0.5  3568  628 pts/1    S    09:49   0:00 grep -i bz&lt;br /&gt;
 &lt;br /&gt;
if all this works, then you are done.&lt;br /&gt;
&lt;br /&gt;
You might also want to double check that your server did register itself with the main listserver – there are 2 ways to do this.&lt;br /&gt;
&lt;br /&gt;
The first is through bzflag – open the client and browse through the servers with the “find server” otion, and see if yours is listed.&lt;br /&gt;
&lt;br /&gt;
The second – and the method I prefer as it is faster, is to just open a web browser up to the list server. The current one is http://208.186.182.172:5156/. You should see your server listed in this list when you start (register) and stop (unregister) your bzfs server. I keep this open in a browser and just refresh it when stopping and starting the bzfs server.&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
I use config files for each server that I run, and keep all the download the maps in separate directories.&lt;br /&gt;
&lt;br /&gt;
I keep all my config file in a conf dir. For example /chroot/bzflag/conf/&lt;br /&gt;
&lt;br /&gt;
I also keep all my (not mine, but the ones I downloaded :) ) in a map dir like: /chroot/bzflag/maps &lt;br /&gt;
&lt;br /&gt;
You may want to create some startup scripts that start your server up automatically in case it reboots. I use a separate rc file for this for simplicity. One could create an init script and then use chkconfig to call it in rc3.d, but I am lazy and haven’t done that.&lt;br /&gt;
&lt;br /&gt;
I simply declared in my rc.local (which is loaded last anyways and as such all network systems will be available when it is called) to execute rc.bzfs which I have in /etc/rc.d/rc.bzfs.&lt;br /&gt;
&lt;br /&gt;
In my rc.bzfs, I have sections for each server I am running. One such section I have looks like:&lt;br /&gt;
 #FreeForAll config&lt;br /&gt;
 echo &amp;gt;&amp;gt;/var/log/bzfsFFA.log&lt;br /&gt;
 echo &amp;gt;&amp;gt;/var/log/bzfsFFA.log&lt;br /&gt;
 echo `date` &amp;gt;&amp;gt;/var/log/bzfsFFA.log&lt;br /&gt;
 chroot /chroot/bzflag/ /bin/bzfs -d -conf /conf/q-net.conf &amp;gt;&amp;gt; /var/log/bzfsFFA.log 2&amp;gt;&amp;amp;1 &amp;amp; &lt;br /&gt;
&lt;br /&gt;
This way I can ‘tail –f’ the log file in /var/log, and see what’s going on as all output (errors, standard output – everything) is directed to this file. This will also start it up in the background, and so it will keep going even when you log off. Every time I kill the process and start it using this script, I get 2 empty lines and the date when I issued the command in the log file – this way I can trace it and see. I also start bzfs using the –d option. This outputs more stuff, but not too much, to the log files. I get to see who connected and their current IP’s so if I get a complaint about a person cheating, I can see their callsign and their last IP and monitor it. I can also see who issues the /password command and know if my admin password is compromised.&lt;br /&gt;
&lt;br /&gt;
The weakness that this rc.bzfs startup file has is that you can’t just shut down one server (if you host multiple servers on your box) and start it back up again easily. I have started creating sub scripts for this reason. One script for each server that I run. That way all I have to do is to kill the process and run that one script and everything is OK. I keep these scripts in the bin folder of the jail along with bzfs and make them executable. Since they all call bzfs, you don’t have to make their owner nobody.nobody or have their sticky bit set..&lt;br /&gt;
&lt;br /&gt;
== The End ==&lt;br /&gt;
I hope this is useful to people out there, as a bit of time went into it to figure out just which files are needed to run bzfs in a jail. I started out with the entire /lib copied over, and got it working with the minimal files listed above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
[[BZFS]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
http://olivier.sessink.nl/jailkit&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;br /&gt;
[[Category:Server Security]]&lt;/div&gt;</summary>
		<author><name>Constitution</name></author>
	</entry>
</feed>