<?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=Zehra</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=Zehra"/>
	<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/Special:Contributions/Zehra"/>
	<updated>2026-05-19T13:07:40Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Bz_allowJumping&amp;diff=10120</id>
		<title>Bz allowJumping</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Bz_allowJumping&amp;diff=10120"/>
		<updated>2025-12-15T05:06:49Z</updated>

		<summary type="html">&lt;p&gt;Zehra: merging pages, so it&amp;#039;s easier to find details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[BZW]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Shootthrough&amp;diff=10119</id>
		<title>Shootthrough</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Shootthrough&amp;diff=10119"/>
		<updated>2025-12-15T05:05:52Z</updated>

		<summary type="html">&lt;p&gt;Zehra: good page, but we&amp;#039;ll probably confuse users if everything is vastly spread accross the whole wiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[BZW]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Jwir3:csproposal&amp;diff=10118</id>
		<title>Jwir3:csproposal</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Jwir3:csproposal&amp;diff=10118"/>
		<updated>2025-12-15T05:01:58Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Jwir3:csproposal to GSoC: Jwir3:csproposal: relates to GSoC proposals, so prefixed with &amp;#039;&amp;#039;&amp;#039;GSoC:&amp;#039;&amp;#039;&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[GSoC: Jwir3:csproposal]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=GSoC:_Jwir3:csproposal&amp;diff=10117</id>
		<title>GSoC: Jwir3:csproposal</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=GSoC:_Jwir3:csproposal&amp;diff=10117"/>
		<updated>2025-12-15T05:01:58Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Jwir3:csproposal to GSoC: Jwir3:csproposal: relates to GSoC proposals, so prefixed with &amp;#039;&amp;#039;&amp;#039;GSoC:&amp;#039;&amp;#039;&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Integration of Crystal Space into BZFlag =&lt;br /&gt;
Scott Johnson&amp;lt;br&amp;gt;&lt;br /&gt;
email: scottj@cs.umn.edu&amp;lt;br&amp;gt;&lt;br /&gt;
irc nick: jwir3&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
Crystal Space is a 3D SDK for game development.  One of the long standing goals of the BZFlag project has been to integrate with an existing rendering engine, in order to improve graphics capabilities.  This project seeks to utilize the benefits of Crystal Space as a game engine in order to improve the BZFlag project, and make it extensible for future enhancements using Crystal Space.&lt;br /&gt;
&lt;br /&gt;
== Benefits to the BZFlag Community ==&lt;br /&gt;
Integration of BZFlag into the Crystal Space environment will allow for more realistic graphics to be placed into the game.  In addition, the community will see the benefit of cleaner, easier to understand code, as well as additional functionality included with Crystal Space as windowing tools and plugins.  Since Crystal Space is an application framework, it will be able to handle normal game application details, such as opening windows and drawing user interfaces, without the BZFlag application needing to clutter its code up with these items.  Finally, the Crystal Space libraries are designed with speed and real-time gameplay in mind, and optimized for many different platforms, so render times may see a slight increase.  &lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
According to [1], several of the integration details for Crystal Space have already been accomplished.  This project would seek to build upon these foundations, helping Tupone and [darek] with their integration tasks.  Functionality will be added for the radar renderer and debugging capabilities to the BZFlag client.  The world element will be completed using Crystal Space, and menu selection will be implemented using Crystal Space&#039;s CEGui plugin.  Improvements will be made to graphics including: addition of shadows, better shading capabilities, and lightmaps.  Finally, additional tasks will be taken on as needed and assigned by the mentors and community.  Since the Crystal Space integration project is ongoing, and is a project not limited to a single developer, much of this could (and probably will) change.  The overall goal will be to help make sure that bzflag is integrated well with the Crystal Space engine, so that the power of Crystal Space can be used in the game.&lt;br /&gt;
&lt;br /&gt;
== Functionality Details ==&lt;br /&gt;
The focus of what has been done up to now in the Crystal Space integration has focused on reconstructing what is currently available in the 2.0 version of BZFlag, except using Crystal Space.  Additional functionality will be added to support better shading and lighting, including shadows.  Since Crystal Space has the ability to support more complex graphical operations on a variety of platforms, there are a vast number of opportunities for extension once the initial integration is completed.  Thus, the major focus of the project will be to finish the integration of Crystal Space into BZFlag, and achieve what is already available in the 2.0 version.&lt;br /&gt;
&lt;br /&gt;
== Implementation Details ==&lt;br /&gt;
Since Crystal Space is a C++ library, the integration will be in C++.  Crystal Space&#039;s CEgui plugin will be used to re-implement DisplayMenu.  World will be redeveloped, entirely created using Crystal Space&#039;s format and API.  Focus will be first on getting the client using Crystal Space to be as close to the current 2.0 version as possible.  Once this is completed, additional features will be added.  Playability of the game will be maintained at all times, so when a new feature is to be added to CVS, it will not compromise the ability of others to play the Crystal Space Client branch in CVS.  Shading will be addressed, utilizing interfaces in Crystal Space&#039;s SCF system.  Improvements in overall lighting and effects will be made, as deemed necessary by the mentors.  Interface design will be taken into consideration, and it is possible that functionality and/or updated visual aesthetics will be added, as the community feels is necessary.  Debugging will be re-implemented, using Crystal Space&#039;s bugplug plugin.  Finally, the overall design will be reevaluated to determine if CEL can be used as an additional layer to improve object-oriented design later on.&lt;br /&gt;
&lt;br /&gt;
== Development Methodology ==&lt;br /&gt;
The development will proceed according to a flexible iterative software engineering design process.  At the beginning of the process, specifications will be designed outlining exactly what will be added, and this functionality will be broken into disjoint sets of functions.  The sets will be added to the code, one by one, and then tested and debugged.  Once complete, the procedure will move to the next set of functions to be added, until there are none remaining.  Once this process is complete, the entire system will be tested rigorously, and submitted to the community for an initial evaluation.  Any final bugs will then be eliminated from the system-wide test before final release of the code.  At each stage, complete documentation on how each function works, the design considerations, and possible avenues for future work will be written and added to the BZFlag wiki.  &lt;br /&gt;
&lt;br /&gt;
== Project Schedule ==&lt;br /&gt;
The first task will be to integrate the bugplug plugin, in order to facilitate debugging of other items of the code.  When this is complete and tested, the functionality will be broken into iterations as described in the development methodology.  Implementation, testing/debugging, and documentation will take up the largest portion of the project, and is estimated to take roughly 1.5 months.  Once complete, the project will be delivered to the BZFlag community for evaluation and initial recommendations.  Final testing and debugging will then be done before final submission to Google.  The initial project schedule will be:&lt;br /&gt;
&lt;br /&gt;
   * May 28 - Jun 10:  Integration of bugplug&lt;br /&gt;
   * Jun 11 - Jun 16:  Development of Specifications&lt;br /&gt;
   * Jun 17 - Jul 25:  Implementation of Specified Functionality&lt;br /&gt;
   * Jul 26 - Aug 1:   System-Wide Debugging, Initial Release&lt;br /&gt;
   * Aug 2 - Aug 13:   Final Debugging&lt;br /&gt;
   * Aug 14 - Aug 19   Final Code Documentation and Code Polishing&lt;br /&gt;
   * Aug 20:           Final Release to Google and Community&lt;br /&gt;
&lt;br /&gt;
It is possible that this schedule will change, due to the nature of the project.  As was previously stated, some of the code has already been developed for this integration, and I would be working as a member of a team in order to ensure its completion by the end of the summer.  Thus, there may be situations where a patch or feature will need to be added which wasn&#039;t described in this project outline.  The schedule is definitely flexible and open to change.&lt;br /&gt;
&lt;br /&gt;
== Bio ==&lt;br /&gt;
I am currently attending the University of Minnesota as a PhD student in the Computer Science department.  My specialization/research area is in Graphics and Visualization.  I have roughly 4 years experience working with Computer Graphics.  I have 10+ years of experience working with C/C++ programming, and have a passion for software engineering, especially when it comes to games and other entertainment software.  I am an advocate of open source software, because I believe it gives inexperienced software engineers the chance to work with those who have had years of prior experience in design, development, and debugging of code which they would not otherwise have had.  In my free time I enjoy playing the violin and practicing martial arts.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[1] http://my.bzflag.org/w/Google_Summer_of_Code#Graphics_Engine_Integration&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Web_Services/Home_Page&amp;diff=10116</id>
		<title>Web Services/Home Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Web_Services/Home_Page&amp;diff=10116"/>
		<updated>2025-12-15T05:00:08Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Web Services/Home Page to Web Services: Home Page: standardize a layout for pages and content&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Web Services: Home Page]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Web_Services:_Home_Page&amp;diff=10115</id>
		<title>Web Services: Home Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Web_Services:_Home_Page&amp;diff=10115"/>
		<updated>2025-12-15T05:00:08Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Web Services/Home Page to Web Services: Home Page: standardize a layout for pages and content&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DesignDocument}}&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The current website while functional&#039; does not do a good job of showing game and community activity. It as also not very friendly to new users.&lt;br /&gt;
&lt;br /&gt;
This document will be used to lay out the requirements and design of a possible replacement site. No coding should be done until the design is accepted.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
===Functional===&lt;br /&gt;
&lt;br /&gt;
* Have a news section and show the latest news to users in the main page, (dev blog?)&lt;br /&gt;
* RSS feeds for releases and news&lt;br /&gt;
* Have some kind if announcement/warning system&lt;br /&gt;
* Show current player / server count and maybe the top 5 players online now.&lt;br /&gt;
* Download link to correct version for browser&lt;br /&gt;
* Links to community sites&lt;br /&gt;
* Registration  / or registration help&lt;br /&gt;
* Normal self promotion ( screenshots, reviews, description,history)&lt;br /&gt;
* Links / display of store items&lt;br /&gt;
* Active forum topics&lt;br /&gt;
* Links to dev pages, helping out, roadmap, etc...&lt;br /&gt;
* Show &amp;quot;preview release&amp;quot; for beta versions&lt;br /&gt;
* Links to docs and help&lt;br /&gt;
* Webchat?&lt;br /&gt;
&lt;br /&gt;
===Operational===&lt;br /&gt;
* Lightweight, most hit site&lt;br /&gt;
* Secure&lt;br /&gt;
* Translateable?&lt;br /&gt;
&lt;br /&gt;
==Optional/Extended Features==&lt;br /&gt;
&lt;br /&gt;
These features don&#039;t have to &lt;br /&gt;
* User manager&lt;br /&gt;
* Group manager&lt;br /&gt;
* Server key manager&lt;br /&gt;
* Display of push stats data&lt;br /&gt;
* Common league pages with front page announcement of events/ league news&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
===Focus===&lt;br /&gt;
The design should be focused on the following qualities of bz;&lt;br /&gt;
* Free to play&lt;br /&gt;
* Great Community&lt;br /&gt;
* Play now with your friends&lt;br /&gt;
* Online play&lt;br /&gt;
* Challenge of real people&lt;br /&gt;
&lt;br /&gt;
The main idea to pass across is that the player is joining a community not just getting a single player game. Bz is not the best looking game in the world so large in-game visuals are not the most helpful. The main thing people are going to do is hit the main page and then download the game to try it. They should be able to learn everything they need to start the game from the main page or the download page. This means it has to have text info on it, not just icons. The main page is not a &#039;splash&#039; page that&#039;s you have to click past. Navigation for more information can require a click but it should aways be for expansion of a topic or idea.&lt;br /&gt;
&lt;br /&gt;
Layout should not assume full screen browser and probably work in an 800 x 600 window. Dynamic width is preferred.&lt;br /&gt;
&lt;br /&gt;
The web site itself doesn&#039;t need to have That many pages as most of the content is links to other places, forums, wiki, SF, etc....&lt;br /&gt;
The web code should not duplicate the features of any other site or service if possible. When snippits of other sections are needed they should Be pulled for a clean API.&lt;br /&gt;
&lt;br /&gt;
==Website Managers==&lt;br /&gt;
Blast007 and JoeVano should be considered the website/services management team and have aproval of all code/frameworks that are used.&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Web_Services/Player_Portal&amp;diff=10114</id>
		<title>Web Services/Player Portal</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Web_Services/Player_Portal&amp;diff=10114"/>
		<updated>2025-12-15T04:59:42Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Web Services/Player Portal to Web Services: Player Portal: standardize a layout for pages and content&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Web Services: Player Portal]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Web_Services:_Player_Portal&amp;diff=10113</id>
		<title>Web Services: Player Portal</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Web_Services:_Player_Portal&amp;diff=10113"/>
		<updated>2025-12-15T04:59:42Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Web Services/Player Portal to Web Services: Player Portal: standardize a layout for pages and content&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DesignDocument}}&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The Player Portal will consist of user management, group management, and server key management. It will also contain the weblogin page. It may or may not be secured via SSL.&lt;br /&gt;
&lt;br /&gt;
==Design Overview==&lt;br /&gt;
&lt;br /&gt;
* Player portal&lt;br /&gt;
** User management&lt;br /&gt;
*** Registration&lt;br /&gt;
*** User profile&lt;br /&gt;
*** Enable various other services (forum, wiki, API)&lt;br /&gt;
** Weblogin System&lt;br /&gt;
** Group management&lt;br /&gt;
*** Create/modify/remove groups&lt;br /&gt;
*** View where groups are being used (?)&lt;br /&gt;
*** View group membership&lt;br /&gt;
** Server key management&lt;br /&gt;
&lt;br /&gt;
==Detailed Objective==&lt;br /&gt;
&lt;br /&gt;
This section will detail the expected final product in the ideal implementation. This may, of course, need to change in the future to accommodate limitations.&lt;br /&gt;
&lt;br /&gt;
===User Management===&lt;br /&gt;
&lt;br /&gt;
From this area, new users will be able to register global accounts for use in the game and with the various web services. The registration will require a unique email address, a password, and the first game callsign.  Additionally, it needs to handle COPPA for users under the age of 13. Registration will be protected via at least one anti-spam system, such as KeyCAPTCHA, a question, and DNSBLs.&lt;br /&gt;
&lt;br /&gt;
It will be possible to update the user&#039;s email, password, and callsigns using the user portal. Some operations, such as changing the email address, will require that the user confirm the request before it will be applied. In the case of changing the email, this will make it less likely that a user will change their email incorrectly and lose access to their account.&lt;br /&gt;
&lt;br /&gt;
It will also be possible to enable other services and have them be tied to this global account. For instance, the user could enable a forum or wiki account. Once an additional service is enabled, it would not be possible to disable. If the user profile is updated, any associated data in the enabled web services will be updated as well.&lt;br /&gt;
&lt;br /&gt;
This area will also contain the weblogin system. Currently we allow users to enable automatic logins for a specific host. However, we do not provide a way to remove this automatic login. Users currently have to manually delete the cookie that we create. In this player portal, the user should be able to control automatic logins and remove them if they wish.&lt;br /&gt;
&lt;br /&gt;
===Group Management===&lt;br /&gt;
&lt;br /&gt;
Groups are used primarily for assigning user rights to specific users in-game. They are also used by various web services when checking a token generated from weblogin.&lt;br /&gt;
&lt;br /&gt;
Group names consist of two parts. The format is ORGANIZATION.GROUP with the period separating the two parts. There will be two or three reserved organizations. The DEVELOPERS organization is reserved for official BZFlag developers. The LOCAL organization is reserved for local groups on individual servers. This organization cannot be managed through the web interface. The last one that may be reserved is the BZFLAG organization. However, there is already several groups that are using that namespace, so that would have to be worked out with the owner of those groups.&lt;br /&gt;
&lt;br /&gt;
The organization will be registered first and will then be reserved for use by that user. The user that registers a organization will be the &#039;&#039;&#039;founder&#039;&#039;&#039; of that organization. They can add additional &#039;&#039;&#039;co-founders&#039;&#039;&#039; or even transfer the founder right to another user.&lt;br /&gt;
&lt;br /&gt;
Once an organization is registered, groups can be created within the organization. These will be created by the founder or co-founders. Once created, each group can be assigned one or more &#039;&#039;&#039;managers&#039;&#039;&#039; that will be able to add or remove users from the groups.&lt;br /&gt;
&lt;br /&gt;
There will be various options for each group which the founders can modify. The founders can rename the group, add a description, and delete a group. There will also be a visibility setting and a setting to control how users can join the group.&lt;br /&gt;
&lt;br /&gt;
For the visibility setting, there will be two options: public, protected, and private. If the group is public, anyone can see the group and the member list.  If the group is protected, anyone can see the group, but only members can see the member list. If the group is private, only members can see the group and the member list.&lt;br /&gt;
&lt;br /&gt;
There will also be settings to control how users can be added to or removed from the group. For this, there will be three modes: open, request, and closed. If the group is set to open, users can join or leave the group without any interaction from the organization founders or the group managers. The request mode requires users to request to be added to a group, but they can leave or cancel their request at any time. The founders or managers can approve or deny the user&#039;s request. The last mode is closed, which allows only the founders or managers to add or remove users from the group.&lt;br /&gt;
&lt;br /&gt;
This may differ slightly from the original plan for the [[Group Management System]].&lt;br /&gt;
&lt;br /&gt;
===Server Key Management===&lt;br /&gt;
&lt;br /&gt;
Starting with BZFlag 3.0.0 (technically, with 2.99.x) and 2.4.x, a list server key is required to host a server on the official server list. Typically, the owner of the server will generate this key. Keys are tied to a hostname or an IP address. The website will provide management for these keys. A registered user can create new keys and delete existing keys.&lt;br /&gt;
&lt;br /&gt;
There is more information on the [[Server authentication]] wiki page.&lt;br /&gt;
&lt;br /&gt;
==Planned Milestones==&lt;br /&gt;
&lt;br /&gt;
In order to complete this section of the web services, a number of things need to happen. It is infeasible to complete them all at once, so a gradual process is expected. These milestones will be fleshed out a bit more later.&lt;br /&gt;
&lt;br /&gt;
===Milestone 1 - Planning and Design===&lt;br /&gt;
&lt;br /&gt;
Goals:&lt;br /&gt;
* Determine the data that will be stored&lt;br /&gt;
* Describe any specific restrictions or limitations that should be in place&lt;br /&gt;
* Create a complete set of database schema for all areas of the portal&lt;br /&gt;
* Determine the kind of queries that will be run and plan indexes and other optimizations as needed.&lt;br /&gt;
&lt;br /&gt;
It should be determined what data needs to be stored, how it references other data, and what kind of data is necessary to integrate with systems such as MediaWiki and phpBB3.  There should be some planning for the future to reduce the likelihood/necessity of major database structure changes later. For instance, we should ensure that IPv4 and IPv6 addresses can be stored in any area that tracks IP addresses. PostgreSQL supports storing network addresses, so that may be something to look into. We should also have any restrictions (such as limiting the characters and length of callsigns) clearly defined. This will enable us to create a consistent experience across all web services and in the game itself.&lt;br /&gt;
&lt;br /&gt;
The schema we generate should be database agnostic as it is not yet known what data will be stored in what database. It may be MySQL, OpenLDAP, a mix of the two, or some other database that we have not tried yet (such as PostgreSQL).&lt;br /&gt;
&lt;br /&gt;
We should also determine the types of queries that will be run in order to determine ways to optimize performance. For instance, we will be looking up a specific user by callsign quite often. So it would make sense to have an index on the callsign.&lt;br /&gt;
&lt;br /&gt;
Of course, it&#039;s not possible to think of everything right away, so it&#039;s inevitable that we will have to make some changes later.&lt;br /&gt;
&lt;br /&gt;
===Milestone 2 - Weblogin and Server Authentication===&lt;br /&gt;
&lt;br /&gt;
Goals:&lt;br /&gt;
* Migrate the server authentication key system&lt;br /&gt;
* Migrate the weblogin system&lt;br /&gt;
&lt;br /&gt;
The easiest thing to migrate over is the server key management system and weblogin. These items are not tied in to many other areas like groups and registration are.&lt;br /&gt;
&lt;br /&gt;
The server key management code is currently in SVN under [http://bzflag.svn.sourceforge.net/viewvc/bzflag/trunk/web/listkeymgr/ /trunk/web/listkeymgr]. Parts of this code could be adapted or used with the player portal. This will still need to integrate with the existing list server (or vice versa) until the list server is heavily updated or rewritten.&lt;br /&gt;
&lt;br /&gt;
The weblogin system will just be the current weblogin.php script. This may retain the same visual look or we may integrate the look into the rest of the website. A long term goal is to have all our web services have the same visual look.&lt;br /&gt;
&lt;br /&gt;
===Milestone 3 - Group Management===&lt;br /&gt;
&lt;br /&gt;
Goals:&lt;br /&gt;
* Create the group management system&lt;br /&gt;
* Migrate the organizations/groups from the forum into the new group management system&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
===Milestone 4 - Registration===&lt;br /&gt;
&lt;br /&gt;
Goals:&lt;br /&gt;
* Create the registration system&lt;br /&gt;
* Allow users to modify their profile from the player portal&lt;br /&gt;
* Enable activation of a forum account&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
===Milestone 5 - ...===&lt;br /&gt;
&lt;br /&gt;
...&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=AptRepo&amp;diff=10112</id>
		<title>AptRepo</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=AptRepo&amp;diff=10112"/>
		<updated>2025-12-15T04:04:14Z</updated>

		<summary type="html">&lt;p&gt;Zehra: I think we already got there, so redirect to main page for now&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Main Page]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_FAQ&amp;diff=10111</id>
		<title>Map FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_FAQ&amp;diff=10111"/>
		<updated>2025-12-15T04:01:42Z</updated>

		<summary type="html">&lt;p&gt;Zehra: merged content into Map making&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Map making]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making&amp;diff=10110</id>
		<title>Map making</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making&amp;diff=10110"/>
		<updated>2025-12-15T04:00:57Z</updated>

		<summary type="html">&lt;p&gt;Zehra: redirected Map FAQ and merged page contents here&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BZFlag uses its own map file format, [[BZW]] (BZ World). BZW files are text based and contain a list of objects and map options that are read by the [[BZFS]] server. There is a [[Map FAQ]] that deals with several frequently asked map making questions.&lt;br /&gt;
&lt;br /&gt;
==Map Creation Methods==&lt;br /&gt;
BZFlag has several well practiced methods for the design of maps, from simple text editing, custom editors, to exporters for 3D modeling software. While basic dedicated map editors, such as BZEdit, can often only create simple objects, 3D modeling software can create complex custom [[mesh]] objects, but have a much steeper learning curve.&lt;br /&gt;
&lt;br /&gt;
===Dedicated Map editors===&lt;br /&gt;
Dedicated BZFlag map editors (i.e. written specifically for graphically editing BZW files) generally go by the name BZEdit. There are a number of versions of BZEdit that have been developed over the years. Each editor has its own level of support for various map features. At this time there is no custom editor that supports every feature of the BZW format. In general, these will only support simple version 1.10 objects, like boxes, pyramids, bases, and teleporters.&lt;br /&gt;
&lt;br /&gt;
Editors supporting BZW 1.10 features:&lt;br /&gt;
*[[BZEdit]]&lt;br /&gt;
*[[BZEditWin32]]&lt;br /&gt;
*[[BZFed]]&lt;br /&gt;
&lt;br /&gt;
Editors supporting some BZW 2.0 features.&lt;br /&gt;
*[[iBZEdit]]&lt;br /&gt;
*[[pyBZEdit]]&lt;br /&gt;
&lt;br /&gt;
===Non-dedicated editors===&lt;br /&gt;
Technically, you can use any 3D modeling package that can export to .obj format. You can then either use [[modeltool]] or Wings3D to convert that file to BZW format.&lt;br /&gt;
&lt;br /&gt;
====Blender====&lt;br /&gt;
The [http://www.blender.org/ blender] 3D modeling application features a plug-in called [[BZWTools]], which enables blender to read and write the BZW file format and to create BZW specific objects.  Tutorials on using blender (not specific to BZFlag) can be found on the [http://www.blender.org/tutorials-help/tutorials/ blender web tutorials] pages.&lt;br /&gt;
&lt;br /&gt;
Mostly, though, it is easier to use blender, scale your map correctly (there are four default blender units to two [[World units]]. Then run the [[modeltool]] to convert it. Note that exporting from blender default obj will have the whole model tilted -90 0 0.&lt;br /&gt;
&lt;br /&gt;
====Wings 3D====&lt;br /&gt;
[http://www.wings3d.com/ Wings 3D] is a good modeler to use if you&#039;re new modeling. It has a much smaller learning curve than Blender, although it doesn&#039;t have as many features. [[Wings3D]] allows you to export wings objects to a BZW file. Tutorials on using wings (not specific to BZFlag) can be found on the [http://www.wings3d.com/tutorials.php wings web tutorials] pages, as well as a useful tutorial on [http://www.geocities.com/peterchov/BarrelUV.html UV mapping]&lt;br /&gt;
&lt;br /&gt;
====Getting Maps In .obj Format====&lt;br /&gt;
It is not widely known that you can export a bzflag map from the actual bzflag client in .obj format.  To do so, you must connect to a server hosting the BZW map you would like to download and type &#039;&#039;/saveworld -o &amp;quot;mapname.obj&amp;quot;&#039;&#039;.  This will allow you to then import the .obj file into a modeler and edit the map.&lt;br /&gt;
&lt;br /&gt;
===Creating BZW files via scripting or programming===&lt;br /&gt;
Writing programs to output map files can be a very effective and efficient way of creating maps.  One may, for instance, use variables to represent key heights or distances within maps (so that, for example, anyone at a given level may shoot someone at the same level), or to create composites based on collections of basic objects, co-located programmatically.  Basic objects may be stretched/scaled to fit specific spaces; they may be programmatically varied in texture, color, and position; software may (internally) represent objects and work with them so that they don&#039;t collide or overlap.  AI-based software may compose maps based on specific design principles, aiming for particular play styles or tactical challenges.&lt;br /&gt;
&lt;br /&gt;
The core of software map generation is the creation of the basic BZFlag elements, whether the simple boxes, pyramids, etc., or complete meshes, by outputting map element statements to a file.  The objects are typically output as sequences of text strings to a .bzw model file, which may then be read by the bzfs server.  While simple objects may be fairly easily edited by hand, more complex objects, such as meshes, are more readily generated by software.&lt;br /&gt;
&lt;br /&gt;
Mesh generation, while it may be done with Blender, etc., as above, may be done equally as well by constructing programs to output the faces required within a mesh.  For example, a program may take a curve and spin it about an axis to create a 3D surface (a sort of &amp;quot;lathe&amp;quot; in the virtual world), outputting faces at each increment of rotation.  Hand-written scripting software may fit irregular polygons together, defining a sequence of mesh objects that seamlessly create, for example a roadway.  Writing such software usually requires very careful testing to guarantee that the bzfs server interprets the objects as the author intends.&lt;br /&gt;
&lt;br /&gt;
Software map creation provides the map maker with the ability to customize objects in detail, such as whether the faces of the object allow bullets or tanks to pass, or the level of transparency to assign to any specific face, at a level of detail often hard to achieve within other 3D modeling tools.  Abstractions within map generation software are often defined to create basic tactically-relevant map elements - these then may be scaled, shifted, textured, or otherwise modified to fit a particular designer&#039;s tastes or constraints.   &lt;br /&gt;
&lt;br /&gt;
The disadvantages in using this are that the underlying representation of the work is not available directly from the map file.  The underlying intended abstractions are missing because only the resulting object primitives are in the generated map file, and there is no straightforward way to recover this (though software may be used to parse existing map files with the goal of augmenting them).  This lack of directly-accessible abstraction is of course true of any tool used to generate a map, there being no standard way to encode this within a .bzw file.  &lt;br /&gt;
&lt;br /&gt;
===Map making by Hand===&lt;br /&gt;
The last method of creating maps is simply coding them by hand as text files using the raw BZW structures. This is still one of the most common ways that people create and edit maps, and can be very fun and challenging. This is easily done in any text editor, for example NotePad on Windows, and TextEdit on Mac OS X.&lt;br /&gt;
&lt;br /&gt;
Most maps made by hand tend to be fairly simple, though experienced mappers have made some extraordinary maps in this way. The reason for the popularity of the &amp;quot;hand made&amp;quot; approach is partly because of the simple structure of the BZW code, but also the fact that, until recently, there were no graphical editors available for operating systems like Mac OS X. A detailed explanation about creating a map by hand can be found on the [[Map making by Hand]] page.&lt;br /&gt;
&lt;br /&gt;
Maps that contain 2.0 objects (such as [[mesh]]) tend to have been either completely made in a text editor, or partly modeled in 3D modeling software, and later manipulated in text format.&lt;br /&gt;
&lt;br /&gt;
This page is an aim at answering some frequently asked questions regarding map creation, and to help people new to mapping.&lt;br /&gt;
&lt;br /&gt;
==Common Misconceptions==&lt;br /&gt;
First off let&#039;s clear up some common terms and misconceptions:&lt;br /&gt;
&lt;br /&gt;
• The word &#039;&#039;&#039;&amp;quot;map&amp;quot;&#039;&#039;&#039; is not synonymous to the word &#039;&#039;&#039;&amp;quot;server&amp;quot;&#039;&#039;&#039;. They are different things. A map is run on a server.&lt;br /&gt;
&lt;br /&gt;
• When we say &#039;server&#039; we mean &#039;BZFS&#039;, the BZFlag server application that comes with every stable binary release of BZFlag. BZFS allows you to host a BZFlag game, with either a randomly generated map, or a custom map.&lt;br /&gt;
&lt;br /&gt;
• The standard extension for a BZFlag map is &amp;quot;.bzw&amp;quot;. There are a variety of ways for making maps, and this can be done on any platform [[BZFlag]] runs on.&lt;br /&gt;
&lt;br /&gt;
• You will often hear the different types of map objects referred to by the first version of [[BZFS]] they appeared in. &amp;quot;1.x&amp;quot; objects are simple boxes, pyramids and teleporters. &amp;quot;2.0&amp;quot; or &amp;quot;2.x&amp;quot; objects are objects such as [[mesh|meshes]], [[arc|arcs]], [[material|materials]], etc. With skill, these can be textured to look like almost anything you want.&lt;br /&gt;
&lt;br /&gt;
• Textures &#039;&#039;&#039;must&#039;&#039;&#039; be in the .png format.&lt;br /&gt;
&lt;br /&gt;
• Team numbering occurs frequently in BZW. Each team is given a number, and these are as follows: 0 = rogue; 1 = red; 2 = green; 3 = blue; 4 = purple.&lt;br /&gt;
&lt;br /&gt;
• &#039;&#039;&#039;Think carefully about the layout of your map: Is it going to be fun to play?&#039;&#039;&#039; This is a factor that many people call &#039;playability&#039;. This is probably the most important thing for a map that is intended to be played on. It may seem obvious, but you&#039;d be surprised at the number of maps that are either too full of eye candy, or just badly thought out. You want to think about, among other things, distribution of obstacles, how balanced it is for CTF, concentration of ricochet bullets and sloped surfaces to rebound lasers.&lt;br /&gt;
&lt;br /&gt;
==Frequently Asked Questions==&lt;br /&gt;
&lt;br /&gt;
===How Do I Make a Map/World for BZFlag?===&lt;br /&gt;
&#039;&#039;&#039;There are many ways to do this:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
• You can use a dedicated map editor such as [[BZEdit]], [[iBZEdit]] or [[BZFed]]. In general, dedicated editors will only support simple map objects such as a box, a pyramid or a teleporter, and there are none in active development. On the whole, this is the easiest way to create maps for most people. See [[Category:Map_Making]] for more.&lt;br /&gt;
&lt;br /&gt;
• You can use a 3D modeling application, such as Blender or Wings3D. There are plugins available for each. With a 3D modeler, you can create much more complex maps, but there is a much steeper learning curve.&lt;br /&gt;
The blender plugin, [[BZWTools]], can be found [http://my.bzflag.org/bb/viewtopic.php?t=5862 here].&lt;br /&gt;
The wings plugin can be found [http://my.bzflag.org/bb/viewtopic.php?t=3652 here].&lt;br /&gt;
&lt;br /&gt;
• Lastly, you can edit maps by hand in your favorite plain text editor. Most maps made by hand tend to be fairly simple, though experienced mappers have made some extraordinary maps in this way. It is a good idea to be familiar with the structure of BZW code, as often exported meshes from 3D modelers will require &#039;touching up&#039; in a text editor. Even the most experienced 3D modeler user needs to know how to text edit.&lt;br /&gt;
&lt;br /&gt;
===Making 2.0 Objects===&lt;br /&gt;
&#039;&#039;&#039;How do I make a cylinder/cone/sphere etc.?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can&#039;t do it in BZEdit. You will need to add them by hand in a text editor.&lt;br /&gt;
&lt;br /&gt;
See [[Category:Map_Making]] and [[BZW]] for more in depth info.&lt;br /&gt;
&lt;br /&gt;
===Adding Textures===&lt;br /&gt;
&#039;&#039;&#039;I created a map in BZEdit, how do I add my own colors and textures?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
BZEdit will &#039;&#039;&#039;not&#039;&#039;&#039; create colored, complex objects. If you want to texture a map made in bzedit, you will need to do so in a text editor such as NotePad. You must change the boxes you want texturing to meshboxes, and define your textures with the [[material]] object.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Where can I host textures that I have made for my map?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
BZFlag offers a free texture hosting service at http://images.bzflag.org . To qualify to be hosted, you need to own the rights to use those textures (i.e. you made it, or you have permission to use it from the creator).&lt;br /&gt;
You can submit images via the [http://images.bzflag.org/submitimages submissions page], and they will be moderated. Be patient - the moderation can take some time. Remember - this service is a privilege, not a right.&lt;br /&gt;
&lt;br /&gt;
===Moving Objects===&lt;br /&gt;
&#039;&#039;&#039;Can I make moving objects in BZFlag?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The short answer is no, and there probably never will be moving objects that tanks can interact with. You can, however make moving textures with the textureMatrix object.&lt;br /&gt;
&lt;br /&gt;
The long answer is yes, simple moving objects have been made that move in a circle around the central Z axis using a method of mesh drawing called DrawInfo, however these objects are always shootthrough and drivethrough, and tanks cannot interact with them in any way - in other words decorative only. The DrawInfo code was never fully documented, but is relatively easy to generate using [[modeltool]]. If you can make an object in wavefront.obj format, you can make drawinfo.&lt;br /&gt;
&lt;br /&gt;
===BZEdit For Mac OS X===&lt;br /&gt;
&#039;&#039;&#039;Can I get BZEdit for Mac OS X?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes, it&#039;s called [[iBZEdit]]&lt;br /&gt;
Alternatively, you could use Wings 3D, or Blender if you&#039;re prepared for a steep learning curve - or you could go for plain text editing in the TextEdit application that came with your OS.&lt;br /&gt;
&lt;br /&gt;
===Flag and Tank Spawns===&lt;br /&gt;
&#039;&#039;&#039;How can I get a flag to spawn in a specific place in my map?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use the following simple code:&lt;br /&gt;
 zone &lt;br /&gt;
   size 0.1 0.1 0.1  ## Size of the zone &lt;br /&gt;
   pos 0 0 0  ## Position of the zone (i.e. the place it will spawn) &lt;br /&gt;
   zoneflag GM 2  ## For example, this will create two GM flags. &lt;br /&gt;
 end&lt;br /&gt;
Note this does &#039;&#039;&#039;not&#039;&#039;&#039; require you to use the +f bzfs option. If you use zoneflag, the flag will be created automaticaly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How can I get a tank to spawn in a specific place in my map?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use the following simple code:&lt;br /&gt;
 zone &lt;br /&gt;
   size 10 10 10  ## Size of the zone &lt;br /&gt;
   pos 0 0 0  ## Position of the zone (i.e. the place it will spawn) &lt;br /&gt;
   team 0 1 2 3 4  ## Every team will spawn here.. &lt;br /&gt;
 end&lt;br /&gt;
Next to &#039;team&#039; you put the numbers of the teams you wish to spawn. See above for more details.&lt;br /&gt;
&lt;br /&gt;
===Death Physics===&lt;br /&gt;
&#039;&#039;&#039;I want tanks to die when a tank touches this box... How?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can create boxes that kill tanks when they are touched by using a [[physics|physics driver]]. A physics driver can be applied to any 2.0 object. Specifically, we need the &#039;death&#039; function.&lt;br /&gt;
 physics&lt;br /&gt;
   name myDeath  ## Name of physics driver.&lt;br /&gt;
   death You Died!  ## Message displayed on death.&lt;br /&gt;
 end&lt;br /&gt;
Then you add the reference to the object or mesh face:&lt;br /&gt;
 phydrv myDeath&lt;br /&gt;
&lt;br /&gt;
===World Weapons===&lt;br /&gt;
&#039;&#039;&#039;How do I add automatically-shooting weapons in my map?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
See [[Weapon (object)|World Weapon]]. You can configure the weapon to fire on a flag capture, like on all your favorite CTF servers.&lt;br /&gt;
&lt;br /&gt;
===Starting a Server===&lt;br /&gt;
&#039;&#039;&#039;How do I start a server to host my map?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://my.bzflag.org/bb/viewtopic.php?t=2915&lt;br /&gt;
&lt;br /&gt;
[[BZFS]]&lt;br /&gt;
&lt;br /&gt;
==Getting Your Map Out There==&lt;br /&gt;
There is a forum dedicated entirely to this on the [http://my.bzflag.org/bb BZBB]. It&#039;s the &#039;Map Releases&#039; forum. Please bear the following in mind when you release your map.&lt;br /&gt;
&lt;br /&gt;
• &#039;&#039;&#039;Releasing you map does not necessarily mean you will get hosting for your map&#039;&#039;&#039;, so do not post &amp;quot;OMGZ this map is sooo good i spent like 2 hours making it and it&#039;s like amazing all my friends think it rawks!!!!!!11&amp;quot;. It&#039;s not going appeal to many people. Instead give about a paragraph to describe your map, and any server settings you may recommend for playing. Be sure to use full sentences, and check your spelling!&lt;br /&gt;
&lt;br /&gt;
• Extensions, extensions: you should always give your map the &#039;.bzw&#039; file extension, text edited or otherwise. It dosn&#039;t matter what you made it in - it&#039;s all the same format. It&#039;s just good practice.&lt;br /&gt;
&lt;br /&gt;
• &#039;&#039;&#039;Give your map an imaginative name&#039;&#039;&#039; - not just &amp;quot;xyz&#039;s CTF&amp;quot;, and not something obvious like &amp;quot;Bridges&amp;quot; or &amp;quot;Castles&amp;quot;, as there are probably about five other maps with this title. Instead think of something decriptive and short. Think as though you were titling a movie or a song, something that&#039;s going to be attractive to people browsing the forum or listserver.&lt;br /&gt;
&lt;br /&gt;
• Take nice screenshots using the roaming feature in observer mode. Most people will use only the screenshots to get an idea of how well your map will actually play. Try to capture the essence of your map with as little screenshots as possible, no more than three or four, and (if you can) convert your images to JPEGs for faster downloading.&lt;br /&gt;
&lt;br /&gt;
• Furthermore, &#039;&#039;&#039;releasing your map means that anyone can download your map.&#039;&#039;&#039; If they decide to host your map they don&#039;t have to make you an admin on their server. If you have any issues with the way they are using your map take it up with them personally. It&#039;s not up for public discussion. See [http://my.bzflag.org/bb/viewtopic.php?t=10575 this announcement] for more information on releasing and licencing in this forum.&lt;br /&gt;
&lt;br /&gt;
• Be open and ready for criticism - if you&#039;re new to mapping, the chances are that your map isn&#039;t going to be a smash hit, so don&#039;t be too offended if somebody doesn&#039;t like it. Instead take that criticism on board and use it to improve your map, or to make further maps better.&lt;br /&gt;
&lt;br /&gt;
==Getting Help==&lt;br /&gt;
&#039;&#039;&#039;If you&#039;re looking for some further help with BZW, you can post a question on the BZBB forum, or you can always try the ##bzw IRC channel on irc.freenode.net. Make sure you&#039;ve searched this Wiki thoroughly first - probably 80% of issues can be resolved with information from this site.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lastly, have fun making maps. Many players enjoy mapping even more than actually playing the game, and find it an ammusing and challenging passtime. Just remember to persevere, and with some work, you could be the next Dutchrai or Louman!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
===Map Editors===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-right: auto; margin-left: 0px;&amp;quot;&lt;br /&gt;
| [[BZEdit]]&lt;br /&gt;
| [[BZEditWin32]]&lt;br /&gt;
| [[BZFed]]&lt;br /&gt;
| [[BZWTools]]&lt;br /&gt;
| [[DI-Machine]]&lt;br /&gt;
|-&lt;br /&gt;
| [[IBZEdit]]&lt;br /&gt;
| [[Modeltool]]&lt;br /&gt;
| [[PyBZEdit]]&lt;br /&gt;
| [[Wings3D]]&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Map Objects===&lt;br /&gt;
{{Template:Map objects}}&lt;br /&gt;
&lt;br /&gt;
===Helpful links===&lt;br /&gt;
* [[Comparison of map editors]]&lt;br /&gt;
* [[Comparison of map objects]]&lt;br /&gt;
* [[Map FAQ]]&lt;br /&gt;
* [[Map making by Hand]]&lt;br /&gt;
* [[Texturing how to]]&lt;br /&gt;
* [[World units]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Map Making]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZFlag_README&amp;diff=10109</id>
		<title>BZFlag README</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZFlag_README&amp;diff=10109"/>
		<updated>2025-12-15T03:58:32Z</updated>

		<summary type="html">&lt;p&gt;Zehra: update bzflag readme to bzflag 2.4.30&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
			    BZFlag 2.4.30&lt;br /&gt;
			 https://BZFlag.org/&lt;br /&gt;
		Copyright (c) 1993-2025 Tim Riker&lt;br /&gt;
&lt;br /&gt;
BZFlag is an Open Source OpenGL multiplayer multiplatform Battle Zone&lt;br /&gt;
capture the Flag game.  At its heart, the game is a 3D first person&lt;br /&gt;
tank simulation where opposing teams battle for dominance.  The game&lt;br /&gt;
was originally written for SGI computers running Irix, but now runs&lt;br /&gt;
and is actively maintained on Windows, Linux, Mac OS X, and other&lt;br /&gt;
platforms.&lt;br /&gt;
&lt;br /&gt;
BZFlag may be redistributed under either the LGPL or MPL licenses.&lt;br /&gt;
&lt;br /&gt;
This is the BZFlag README file.  This file includes introductory build&lt;br /&gt;
instructions, user community interaction references, information for&lt;br /&gt;
getting involved in BZFlag development, a manifest of the source code&lt;br /&gt;
layout, basic usage expectations, contact information, and more.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Table of Contents&lt;br /&gt;
=================&lt;br /&gt;
    Introduction&lt;br /&gt;
    Table of Contents&lt;br /&gt;
    Obtaining BZFlag&lt;br /&gt;
    Compiling and Installation&lt;br /&gt;
	Short Version&lt;br /&gt;
	Long Version&lt;br /&gt;
    Communication&lt;br /&gt;
	Internet Relay Chat&lt;br /&gt;
	Forums&lt;br /&gt;
    Bug Reports and Support&lt;br /&gt;
    Providing Contributions&lt;br /&gt;
    Source Tree Organization&lt;br /&gt;
    Public Internet Servers and the &amp;quot;list server&amp;quot;&lt;br /&gt;
    Notes on &amp;quot;CHEAT&amp;quot; servers and network abuse&lt;br /&gt;
    Project History and Contributions&lt;br /&gt;
    Contact&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Obtaining BZFlag&lt;br /&gt;
================&lt;br /&gt;
&lt;br /&gt;
Main BZFlag Website:  http://BZFlag.org&lt;br /&gt;
BZFlag Github Site:  https://github.com/BZFlag-Dev/bzflag&lt;br /&gt;
&lt;br /&gt;
The main BZFlag website provides access to most all of the resources&lt;br /&gt;
available for the game.  The binary and source distributions of BZFlag&lt;br /&gt;
are, however, provided on the GitHub project site.  Compiled versions&lt;br /&gt;
are distributed as installable packages, disk images, and more, with&lt;br /&gt;
details varying depending on the platform.  Source code distributions&lt;br /&gt;
are provided and archived in various formats as well. See the project&lt;br /&gt;
site for the download links.&lt;br /&gt;
&lt;br /&gt;
BZFlag is also available directly from GitHub.  To obtain BZFlag from&lt;br /&gt;
git, a bit more familiarity with software development is expected.&lt;br /&gt;
If you&#039;re familiar enough, anonymous GIT access is provided from the&lt;br /&gt;
repository:&lt;br /&gt;
&lt;br /&gt;
  https://github.com/BZFlag-Dev/bzflag.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Compiling and Installation&lt;br /&gt;
==========================&lt;br /&gt;
&lt;br /&gt;
To compile a playable BZFlag, the following steps should get you up&lt;br /&gt;
and running quickly if everything external to BZFlag is properly&lt;br /&gt;
installed:&lt;br /&gt;
&lt;br /&gt;
  ./autogen.sh&lt;br /&gt;
  ./configure&lt;br /&gt;
  make&lt;br /&gt;
  ./src/bzflag/bzflag&lt;br /&gt;
&lt;br /&gt;
If configure detected everything it needed to build the BZFlag client,&lt;br /&gt;
after make the client will be sitting in src/bzflag as &#039;bzflag&#039;.  The&lt;br /&gt;
game can be run from there, though you will probably want to &amp;quot;sudo&lt;br /&gt;
make install&amp;quot; or otherwise become a privileged user and install the&lt;br /&gt;
game properly for your system.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re building on a platform that has a README.* file, you should&lt;br /&gt;
consult that file as they usually contain additional instructions or&lt;br /&gt;
details specific for building on that platform.  There are often hints&lt;br /&gt;
for common problems specific to those platforms as well.&lt;br /&gt;
&lt;br /&gt;
The Longer Version:&lt;br /&gt;
&lt;br /&gt;
To build sources directly from a git clone you need to create a&lt;br /&gt;
configure script. You can skip this step if you grab a distribution of&lt;br /&gt;
BZFlag that already has a ./configure script in it, such as from a&lt;br /&gt;
source distribution tarball.  To generate the configure script, you&lt;br /&gt;
need to run the provided autogen.sh script:&lt;br /&gt;
&lt;br /&gt;
  ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
The script will report whether sufficient versions of the GNU Build&lt;br /&gt;
System tools (i.e. autoconf, automake, and libtool) that were detected&lt;br /&gt;
and if successful, a configure script will be generated.  If the&lt;br /&gt;
script fails, submit a report to the developers containing the output&lt;br /&gt;
of &amp;quot;sh autogen.sh -v&amp;quot;. This will run autogen.sh in verbose mode.  One&lt;br /&gt;
of the most common failures is having insufficient versions or&lt;br /&gt;
mismatched combinations of the GNU Build System tools, so make sure&lt;br /&gt;
your tools are recent.&lt;br /&gt;
&lt;br /&gt;
If the previous step was successful you now have a script for&lt;br /&gt;
configuring BZFlag.  This command:&lt;br /&gt;
&lt;br /&gt;
  ./configure --help&lt;br /&gt;
&lt;br /&gt;
will list the variety of configuration options.  The script adapts&lt;br /&gt;
well to various system configurations, so it may be enough to simply&lt;br /&gt;
run it as:&lt;br /&gt;
&lt;br /&gt;
  ./configure&lt;br /&gt;
&lt;br /&gt;
You may want to create a &#039;work&#039; directory and configure from there to&lt;br /&gt;
have all the build products and binary executables get placed in a&lt;br /&gt;
directory separate from the sources.  To do this, simply create a&lt;br /&gt;
directory then run configure and make from there instead.&lt;br /&gt;
&lt;br /&gt;
After configure completes, it will report whether all the requisite&lt;br /&gt;
packages were found that it needs in order to build the client and the&lt;br /&gt;
server.  The client is reliant upon the following external&lt;br /&gt;
dependencies that should be installed before running configure:&lt;br /&gt;
&lt;br /&gt;
  OpenGL 1.0+&lt;br /&gt;
  libSDL 1.2+&lt;br /&gt;
&lt;br /&gt;
If you&#039;re on an operating system that uses a packaging system&lt;br /&gt;
(e.g. apt, portage, ports, etc), be sure to install the development&lt;br /&gt;
kit versions of each of those (e.g. xlibmesa-gl-dev package) so that&lt;br /&gt;
headers are made available.  You may also want to manually install&lt;br /&gt;
other dependencies that BZFlag automatically provides if you do not&lt;br /&gt;
have them pre-installed:&lt;br /&gt;
&lt;br /&gt;
  c-ares&lt;br /&gt;
  libCURL&lt;br /&gt;
  libregex (usually provided as part of libc)&lt;br /&gt;
  zlib&lt;br /&gt;
&lt;br /&gt;
The README.Linux file includes a detailed list of of the packages&lt;br /&gt;
needed to compile and run BZFlag on some popular Linux distributions.&lt;br /&gt;
&lt;br /&gt;
The final summary at the end of running configure will report whether&lt;br /&gt;
the client will be built or not.  Once configure has been run, you may&lt;br /&gt;
compile by simply running &#039;make&#039;.  If you have GNU Make and are on a&lt;br /&gt;
multiprocessor system, you can build in parallel with the -j option:&lt;br /&gt;
&lt;br /&gt;
  make -j4&lt;br /&gt;
&lt;br /&gt;
If compilation was successful, the client will be in src/bzflag and&lt;br /&gt;
the server will be in src/bzfs as &#039;bzflag&#039; and &#039;bzfs&#039; respectively.&lt;br /&gt;
You can run the client or the server directly from those locations&lt;br /&gt;
with or without installing:&lt;br /&gt;
&lt;br /&gt;
  src/bzflag/bzflag&lt;br /&gt;
&lt;br /&gt;
BZFlag looks for data files in a path defined during compile, in&lt;br /&gt;
./data/ , or in the previously specified data path only.  As part of&lt;br /&gt;
the tarball/git clone, the base data library is located in&lt;br /&gt;
&amp;lt;installed-locale&amp;gt;/bzflag/data.  This means that to test in a working&lt;br /&gt;
directory you need to tell bzflag where to find these files if there&lt;br /&gt;
is not a &#039;data&#039; directory in your current directory.  This can be done&lt;br /&gt;
with a symbolic link:&lt;br /&gt;
&lt;br /&gt;
  ln -s ./path/to/bzflag/data&lt;br /&gt;
&lt;br /&gt;
After testing you can install BZFlag by running &#039;make install&#039; with&lt;br /&gt;
sufficient system installation privileges.  Use &#039;sudo&#039;, &#039;su&#039;, or&lt;br /&gt;
similar methods to elevate your privileges when installing BZFlag&lt;br /&gt;
system-wide:&lt;br /&gt;
&lt;br /&gt;
  sudo make install&lt;br /&gt;
&lt;br /&gt;
You should now have BZFlag in the system directory ready to run.&lt;br /&gt;
&lt;br /&gt;
If you do not have admin privileges on your platform, you can install&lt;br /&gt;
files in a directory that you own; for this to work, you have to&lt;br /&gt;
append to the configure command the prefix option:&lt;br /&gt;
&lt;br /&gt;
  ./configure --prefix=YourHomeDirectoryHere&lt;br /&gt;
&lt;br /&gt;
You will then be able to perform a &amp;quot;make install&amp;quot; without needing to&lt;br /&gt;
elevate your privileges, and all bzflag executable files will be&lt;br /&gt;
installed in the subdir bin of the specified path.&lt;br /&gt;
&lt;br /&gt;
For additional information on installing, see INSTALL file.&lt;br /&gt;
&lt;br /&gt;
Again, some platforms may be different.  See the README file&lt;br /&gt;
appropriate to your system for more information.&lt;br /&gt;
&lt;br /&gt;
You can also build an installable package using:&lt;br /&gt;
&lt;br /&gt;
  make package&lt;br /&gt;
&lt;br /&gt;
The package will be placed in ./dist; the exact form of the package&lt;br /&gt;
depends on the platform.&lt;br /&gt;
&lt;br /&gt;
There are three cleanup targets: clean, distclean, and&lt;br /&gt;
maintainer-clean.&lt;br /&gt;
&lt;br /&gt;
`make clean&#039; removes intermediate files but leaves bzflag and other&lt;br /&gt;
programs and any man pages.&lt;br /&gt;
&lt;br /&gt;
`make distclean&#039; removes everything clean does and also programs and&lt;br /&gt;
man pages. This should get things back to a tarball state.&lt;br /&gt;
&lt;br /&gt;
`make maintainer-clean&#039; removes everything distclean does and also&lt;br /&gt;
packages, directories created during the build, and the platform&lt;br /&gt;
configuration; this should get the source tree back to its state in&lt;br /&gt;
the Git repository.&lt;br /&gt;
&lt;br /&gt;
To build BZFlag for an unsupported platform, see PORTING.&lt;br /&gt;
&lt;br /&gt;
The ./configure script has a number of build options that you may find&lt;br /&gt;
interesting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Communication&lt;br /&gt;
=============&lt;br /&gt;
&lt;br /&gt;
The BZFlag project has several resources set up for communicating both&lt;br /&gt;
with other developers and with the community.  There is an IRC&lt;br /&gt;
channel and forums.&lt;br /&gt;
&lt;br /&gt;
Internet Relay Chat&lt;br /&gt;
-------------------&lt;br /&gt;
Most of the BZFlag development activity and discussions occur over&lt;br /&gt;
IRC.  Join the #bzflag IRC channel on the Libera.Chat network&lt;br /&gt;
(irc.libera.chat, TLS port 6697) to get involved.&lt;br /&gt;
&lt;br /&gt;
See https://web.libera.chat/ for a web based interface for&lt;br /&gt;
first-time users.  Individuals that intend to stay in the channel are&lt;br /&gt;
expected to get a non-web-based IRC client.  See http://irchelp.org or&lt;br /&gt;
search the web for IRC clients for your operating system.&lt;br /&gt;
&lt;br /&gt;
Forums&lt;br /&gt;
---------------&lt;br /&gt;
There are extensive and active forums used by players, server&lt;br /&gt;
operators, administrators, and others available here:&lt;br /&gt;
&lt;br /&gt;
https://forums.bzflag.org&lt;br /&gt;
&lt;br /&gt;
Registering an account on the forums presently also registers your callsign&lt;br /&gt;
for use inside of BZFlag.  Some servers require registration in order to&lt;br /&gt;
play.  See the Getting Started page on our site for more about registration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bug Reports and Support&lt;br /&gt;
=======================&lt;br /&gt;
&lt;br /&gt;
For reporting bugs and unexpected behavior, please go to BZFlag bug&lt;br /&gt;
tracking system at:&lt;br /&gt;
&lt;br /&gt;
https://github.com/BZFlag-Dev/bzflag/issues&lt;br /&gt;
&lt;br /&gt;
If you require assistance with some issue, please visit the BZFlag&lt;br /&gt;
IRC channel at #bzflag at irc.libera.chat&lt;br /&gt;
&lt;br /&gt;
Alternatively, discussion forums are also available for resolving issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Providing Contributions&lt;br /&gt;
=======================&lt;br /&gt;
&lt;br /&gt;
Pull Requests should be entered submitted via the GitHub pull system:&lt;br /&gt;
&lt;br /&gt;
https://github.com/BZFlag-Dev/bzflag/pulls&lt;br /&gt;
&lt;br /&gt;
Contributions are gladly accepted for modifications that do not&lt;br /&gt;
affect the core gameplay.  Interacting with the other developers in&lt;br /&gt;
the IRC channel is recommended for any changes which will affect&lt;br /&gt;
gameplay.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Source Tree Organization&lt;br /&gt;
========================&lt;br /&gt;
&lt;br /&gt;
After unpacking a source distribution, you should have at least the&lt;br /&gt;
following files in the new &#039;bzflag&#039; directory:&lt;br /&gt;
&lt;br /&gt;
  README	- this file&lt;br /&gt;
  README.*	- platform specific details&lt;br /&gt;
  AUTHORS	- project contributors&lt;br /&gt;
  COPYING	- the license for BZFlag&lt;br /&gt;
  ChangeLog	- source code changes since previous release&lt;br /&gt;
  DEVINFO       - information for developers&lt;br /&gt;
  NEWS		- history of visible changes for each release&lt;br /&gt;
  PORTING	- a guide for porting BZFlag&lt;br /&gt;
  autogen.sh	- build system preparation script&lt;br /&gt;
  configure.ac	- build system configuration script template&lt;br /&gt;
  data/		- data files (sounds, images, etc.)&lt;br /&gt;
  include/	- include headers for libraries&lt;br /&gt;
  man/		- man pages&lt;br /&gt;
  misc/		- miscellaneous goo&lt;br /&gt;
  MSVC/		- stuff for building on the Windows platform&lt;br /&gt;
  package/	- stuff to build installable packages&lt;br /&gt;
  plugins/	- bzfs plugins&lt;br /&gt;
  src/		- bzflag, bzfs, etc. source code&lt;br /&gt;
    3D/		  - 3D code including texture manager&lt;br /&gt;
    bzadmin/      - bzadmin app source code (text admin/chat client)&lt;br /&gt;
    bzflag/	  - bzflag app source code (game client)&lt;br /&gt;
    bzfs/	  - bzfs app source code (game server)&lt;br /&gt;
    common/	  - general purpose classes&lt;br /&gt;
    date/         - unified version and build date stamping for apps&lt;br /&gt;
    game/	  - game library used by both the server and client(s)&lt;br /&gt;
    geometry/	  - geometry rendering classes&lt;br /&gt;
    mediafile/	  - classes for reading resources&lt;br /&gt;
    net/	  - networking classes and functions&lt;br /&gt;
    obstacle/	  - collision detection stuff&lt;br /&gt;
    ogl/	  - OpenGL utility classes&lt;br /&gt;
    platform/	  - platform dependent code&lt;br /&gt;
    scene/	  - high level rendering algorithms&lt;br /&gt;
  tools/	- various helper utilities&lt;br /&gt;
  Xcode	        - Mac OS X Xcode project and associated files&lt;br /&gt;
&lt;br /&gt;
Note that include/ does not have all the include files.  If a header&lt;br /&gt;
is used entirely within a library (i.e. it doesn&#039;t directly provide&lt;br /&gt;
functionality outside the library) then the header is found in the&lt;br /&gt;
library&#039;s directory under src/.  An include file goes in include/ only&lt;br /&gt;
if it&#039;s required by another library or libraries or executables.&lt;br /&gt;
While this complicates locating a header file (it can be in one of two&lt;br /&gt;
places instead of just one place), you can instantly tell if a header&lt;br /&gt;
file is (can be) used by clients of the library.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Public Internet Servers and the &amp;quot;list server&amp;quot;&lt;br /&gt;
=============================================&lt;br /&gt;
&lt;br /&gt;
The bzflag project offers a public server listing service that allows&lt;br /&gt;
players to find servers to play on. This service is run for the&lt;br /&gt;
benefit of the project. As of Version 2.4, BZFlag servers that wish to&lt;br /&gt;
be listed on the public list server must provide an authentication key&lt;br /&gt;
that ties the server to a specific global user. This is done to&lt;br /&gt;
provide contact information for players and project&lt;br /&gt;
staff. Authentication keys are automatically generated at&lt;br /&gt;
https://my.bzflag.org/listkeys/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notes on &amp;quot;CHEAT&amp;quot; servers and network abuse&lt;br /&gt;
==========================================&lt;br /&gt;
&lt;br /&gt;
While the license for BZFlag certainly allows users to run any server&lt;br /&gt;
modification that they wish or to modify the code in any way, we ask&lt;br /&gt;
that people do not publish or host &amp;quot;cheat&amp;quot; clients or servers to the&lt;br /&gt;
general public for use.  We also expect that users will abide by basic&lt;br /&gt;
usage guidelines of reasonable and tolerable behavior that are not&lt;br /&gt;
detrimental to the game&#039;s heritage of a fun gaming environment for&lt;br /&gt;
all.&lt;br /&gt;
&lt;br /&gt;
We understand the desire to expand, modify, and improve the game and&lt;br /&gt;
its sources including the ability to test out new features publicly.&lt;br /&gt;
These modified clients and servers generally provide some advantage&lt;br /&gt;
over unmodified clients and are generally discouraged for widespread&lt;br /&gt;
use.  As such, we ask that anyone wishing to host or otherwise&lt;br /&gt;
participate in a game that involves a modified client or server to&lt;br /&gt;
register under a different network protocol than the current public&lt;br /&gt;
release by modifying BZ_PROTO_VERSION in the src/date/buildDate.cxx&lt;br /&gt;
file.  This will let modified games be played and prevent modified&lt;br /&gt;
clients from being used on public unmodified servers.&lt;br /&gt;
&lt;br /&gt;
Any individuals that are found to be contributing to abuse of the&lt;br /&gt;
public services being provided may be subject to bans or other access&lt;br /&gt;
restrictions.  Abuse generally consists of any disruption to one of&lt;br /&gt;
BZFlag&#039;s network services including denial of service attacks,&lt;br /&gt;
spamming of BZFlag web sites or servers, disruptive gameplay on&lt;br /&gt;
multiple public servers, intrusion attempts, password sniffing, or any&lt;br /&gt;
other behavior that is deemed inappropriate.&lt;br /&gt;
&lt;br /&gt;
The BZFlag project administrators reserve the right to remove public&lt;br /&gt;
listings of any game servers for any reason whatsoever, including&lt;br /&gt;
removal of servers or banning of individuals that do not follow this&lt;br /&gt;
request.  Similarly, the BZFlag project administrators also reserve&lt;br /&gt;
the right to limit access or otherwise block any players from public&lt;br /&gt;
service access at any time.  These actions may include the suspension&lt;br /&gt;
or removal of global accounts and limiting access to the web site&lt;br /&gt;
services including web site services, list server access, forum access,&lt;br /&gt;
and any league resources.&lt;br /&gt;
&lt;br /&gt;
In general, the entire network is provided by the community for the&lt;br /&gt;
community as an entirely volunteer and contributed effort.  We ask&lt;br /&gt;
that all players recognize and respect the time, effort, and resources&lt;br /&gt;
involved and that we&#039;re all generally here to have a good time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Project History and Contributions&lt;br /&gt;
=================================&lt;br /&gt;
&lt;br /&gt;
BZFlag was primarily originally authored by Chris Schoeneman&lt;br /&gt;
&amp;lt;crs23@bigfoot.com&amp;gt; in the early 1990&#039;s.  After several years of&lt;br /&gt;
development, Chris turned over copyright and maintainership of the&lt;br /&gt;
game to Tim Riker.&lt;br /&gt;
&lt;br /&gt;
BZFlag continues today to be maintained and developed by the Open&lt;br /&gt;
Source community by a project administration team with contributions coming&lt;br /&gt;
in from all over the world.  See the AUTHORS file for more details on&lt;br /&gt;
contributions to the project.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Contact&lt;br /&gt;
=======&lt;br /&gt;
&lt;br /&gt;
Any of the core developers listed in the AUTHORS file are generally&lt;br /&gt;
receptive to being contacted for most matters relating to the game.&lt;br /&gt;
Internet Relay Chat (IRC) or e-mail is generally the expected method&lt;br /&gt;
of interaction with IRC being generally preferred.  The project&lt;br /&gt;
maintainer Tim Riker &amp;lt;Tim@Rikers.org&amp;gt; is available for most legal matters,&lt;br /&gt;
but day to day development is handled by the Project Administrators:&lt;br /&gt;
&lt;br /&gt;
Scott Wichser (blast007) &amp;lt;blast007@users.sourceforge.net&amp;gt;&lt;br /&gt;
Jeff Makey (BulletCatcher) &amp;lt;bullet_catcher@users.sourceforge.net&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Happy Shooting!&lt;br /&gt;
The BZFlag Development Team&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZWGen_revisited&amp;diff=10108</id>
		<title>BZWGen revisited</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZWGen_revisited&amp;diff=10108"/>
		<updated>2025-12-15T03:53:00Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page BZWGen revisited to GSoC: BZWGen revisited: making GSoC projects and proposals more consistent with &amp;#039;&amp;#039;&amp;#039;GSoC&amp;#039;&amp;#039;&amp;#039; prefix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[GSoC: BZWGen revisited]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=GSoC:_BZWGen_revisited&amp;diff=10107</id>
		<title>GSoC: BZWGen revisited</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=GSoC:_BZWGen_revisited&amp;diff=10107"/>
		<updated>2025-12-15T03:53:00Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page BZWGen revisited to GSoC: BZWGen revisited: making GSoC projects and proposals more consistent with &amp;#039;&amp;#039;&amp;#039;GSoC&amp;#039;&amp;#039;&amp;#039; prefix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{IdeaDesign}}&lt;br /&gt;
&lt;br /&gt;
This is a two part project that aims to address two main issues of BZWGen, accessibility and universality. &lt;br /&gt;
&lt;br /&gt;
Accessibility has been probably the main reason that BZWGen didn&#039;t get much attention -- using the program required downloading a separate program and compiling it&#039;s sources, then running it and setting it up to work with bzfs. On the other side, getting the program to produce different results requires the knowledge of a language that however documented is not straightforward for the user. &lt;br /&gt;
&lt;br /&gt;
Universality addresses the fact that BZWGen would more accurately be called now a City Generator, despite the fact that the underlying engine could do much more. Furthermore, some of the ideas I initially had for 2007 were never even touched. The second (bigger) part of this years project would be to present an accessible way for the program to generate a broad choice of outputs.&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
The aim of the project is to provide a revised version of BZWGen that will work both as a standalone app and a plugin to bzfs. As a side effect, a common protocol will be presented for handling world-generating plugins.&lt;br /&gt;
&lt;br /&gt;
The generator itself will be severely enhanced to provide a much wider array of output, and to allow a first time user to do much customization without the need of reading much documentation. Additionally textures and data files for the extended generator capabilities will be provided as well.&lt;br /&gt;
&lt;br /&gt;
=== Streamlining ===&lt;br /&gt;
&lt;br /&gt;
To pluginize BZWGen a common interface for generators will be established, which will take care of supplying the generator with necessary data. In case of bzfs data will be read from a config file. The existing map generator will then also be pluginized, an in the future, replaced by a config file for BZWGen that ideally mimics it&#039;s behavior.&lt;br /&gt;
&lt;br /&gt;
=== Documentation update ===&lt;br /&gt;
&lt;br /&gt;
As the system currently is somewhat mysterious to people, I&#039;d like to provide better documentation on the L-system generator, including an illustrated tutorial on writing your own rules.&lt;br /&gt;
&lt;br /&gt;
=== Config file layer ===&lt;br /&gt;
&lt;br /&gt;
L-systems are hardly transparent for someone not used to them. However I didn&#039;t intend them as the main modification tool. Above the low-level L-system layer there should be a lot more readable &amp;quot;template&amp;quot; file layer, that decides what will be generated on a given map zone. What now is treated as command line parameters for BZWG will then be placed in the template file, along with the ability to use different texture sets, and load custom L-system sets.&lt;br /&gt;
&lt;br /&gt;
=== Generation zones ===&lt;br /&gt;
&lt;br /&gt;
The L-system based approach that BZWG uses now is just one of the features I intended for it. To smoothly blend multiple generation tools a system of splitting the map into zones is needed. Each zone will have generation parameters supplied via config files. Zones will be not limited to rectangles as is the case now, but any arbitrary polygon.&lt;br /&gt;
&lt;br /&gt;
=== Road placement algorithm rewrite ===&lt;br /&gt;
&lt;br /&gt;
The current subdivision method will be left intact as an option, but thanks to the custom shaped generation zones, the original intent of the L-system based road placement generator will be implemented. Apart for generating roads it will be able to do a custom territory split of a given map.&lt;br /&gt;
&lt;br /&gt;
=== Extensions ===&lt;br /&gt;
&lt;br /&gt;
Some of the planned extensions to the generator itself are listed below:&lt;br /&gt;
&lt;br /&gt;
* scatter algorithms -- expands on the existing bzfs map generator to allow a finer control on scattering, like the control of scattered objects, control over where objects may be scattered, and control over their size and orientation. Higher level example -- scattering of L-system generated buildings.&lt;br /&gt;
 &lt;br /&gt;
* template based building -- a way to control the placement of other generation algorithms -- constructs the map out of a predefined template, where the template parts will be filled with the given generation result, or a preprepared map-tile.&lt;br /&gt;
 &lt;br /&gt;
* block-connected building -- the map is build out of pre-prepared chunks of geometry that follow the defined rules for connection. This is the way that map generation works in contemporary 3d RPG games -- dungeons are constructed from preprepared components randomly connected. The approach is suitable for overland structures as well.&lt;br /&gt;
 &lt;br /&gt;
* procedural objects -- as time will allow BZWG will be equipped with procedural generators for various real-world objects, for example trees and foliage. Priority is set on items that can be used in the scatter algorithm.&lt;br /&gt;
 &lt;br /&gt;
== Project schedule ==&lt;br /&gt;
&lt;br /&gt;
The existing blog ( http://bzflag.chaosforge.org/ ) will be used to report progress. Posts will be made at least twice weekly during the main program timeframe. Having the experience of last year, I hope to organize my time a lot better this year, and get a lot more accomplished.&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 -- May 26 - July 1 ===&lt;br /&gt;
&lt;br /&gt;
==== May 26 - June 15 ====&lt;br /&gt;
* bzwgen compiles and works as a plugin for bzfs&lt;br /&gt;
* bzwgen&#039;s existing codebase is cleaned up&lt;br /&gt;
* a detailed schedule and plan for the rest of GSoC is prepared and accepted&lt;br /&gt;
* design for the template layer and other promised features&lt;br /&gt;
* reevaluation of bzflags collision code&lt;br /&gt;
* alternative ruleset/textureset to show the current capabilities&lt;br /&gt;
&lt;br /&gt;
==== June 16 - June 28 ====&lt;br /&gt;
* implementation of double-linked graph based network for usage for both the road network algorithm and the new zoning algorithm&lt;br /&gt;
* implementation of an alternative ad-hoc non-orthogonal road layout generator and making it work with the existing grammar (especially rewriting zones to be non-quad)&lt;br /&gt;
&lt;br /&gt;
==== June 30 - July 6 ====&lt;br /&gt;
* scatter generator&lt;br /&gt;
* primitives and custom mesh consolidation&lt;br /&gt;
* procedural meshes (extension of grammar if needed)&lt;br /&gt;
* reconstructing the existing generator as a compile option&lt;br /&gt;
&lt;br /&gt;
=== Phase 2 -- July 6 - August 11 ===&lt;br /&gt;
&lt;br /&gt;
==== July 6 - July 14 ====&lt;br /&gt;
* setting up a test server, promotion on the forum, and outside&lt;br /&gt;
* refining the road layout algorithm to be less chaotic, and more realistic&lt;br /&gt;
* config file layer&lt;br /&gt;
&lt;br /&gt;
==== July 14 - July 20 ====&lt;br /&gt;
* extentending the config file layer with full templating capabilities&lt;br /&gt;
* documentation and tutorial for the existing config/template system&lt;br /&gt;
* sample interesting template/config files, more media&lt;br /&gt;
&lt;br /&gt;
==== July 21 - July 27 ====&lt;br /&gt;
* extension of the grammar system to allow more Mueller-quality buildings (I think I found a solution for that)&lt;br /&gt;
&lt;br /&gt;
==== July 28 - August 3 ====&lt;br /&gt;
* block-connected building system based on the mesh import feature&lt;br /&gt;
* sample data for both &amp;quot;internal&amp;quot; and &amp;quot;external&amp;quot; effects&lt;br /&gt;
* additional template files, and documentation for this and previous weeks features&lt;br /&gt;
&lt;br /&gt;
==== July 4 - August 11 ====&lt;br /&gt;
* bringing it all together, and merging with BZFlag core as much as the devs allow&lt;br /&gt;
&lt;br /&gt;
=== Phase 3 -- August 11+ ===&lt;br /&gt;
&lt;br /&gt;
Cleanup time for the GSoC finalization. Once that is done, I hope that there will be some RFE&#039;s from the community that I will be happy to implement.&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Talk:Webadmin_SOC2008&amp;diff=10106</id>
		<title>Talk:Webadmin SOC2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Talk:Webadmin_SOC2008&amp;diff=10106"/>
		<updated>2025-12-15T03:48:16Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Talk:Webadmin SOC2008 to Talk:GSoC: Webadmin 2008: giving GSoC projects/proposals a GSoC prefix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Talk:GSoC: Webadmin 2008]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Talk:GSoC:_Webadmin_2008&amp;diff=10105</id>
		<title>Talk:GSoC: Webadmin 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Talk:GSoC:_Webadmin_2008&amp;diff=10105"/>
		<updated>2025-12-15T03:48:16Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Talk:Webadmin SOC2008 to Talk:GSoC: Webadmin 2008: giving GSoC projects/proposals a GSoC prefix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Flesh out the propsoed features, try to make them as generic as possible. i.e If you allow the editing of a bad words file, you basicly allow the editing of ANY external file, so put it that way. Describe the code section in more detail breaking down the various sections that you will have. Describe the various actions that you plan for controlling the live game. Do you want to do reports, chat, or kicks and bans?&lt;br /&gt;
--[[User:JeffM2501|JeffM2501]] 01:07, 22 April 2008 (EDT)&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Webadmin_SOC2008&amp;diff=10104</id>
		<title>Webadmin SOC2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Webadmin_SOC2008&amp;diff=10104"/>
		<updated>2025-12-15T03:48:16Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Webadmin SOC2008 to GSoC: Webadmin 2008: giving GSoC projects/proposals a GSoC prefix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[GSoC: Webadmin 2008]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=GSoC:_Webadmin_2008&amp;diff=10103</id>
		<title>GSoC: Webadmin 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=GSoC:_Webadmin_2008&amp;diff=10103"/>
		<updated>2025-12-15T03:48:16Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Webadmin SOC2008 to GSoC: Webadmin 2008: giving GSoC projects/proposals a GSoC prefix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is [[User:BugQ|bugQ]]&#039;s proposal for [[GSoC]] 2008, which may change with the minds of those involved.&lt;br /&gt;
&lt;br /&gt;
See bugQ&#039;s development blog to check and discuss the project&#039;s progress: http://planet-soc.com/blog/89&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&#039;&#039;&#039;webadmin&#039;&#039;&#039; will be a web-based control interface for [[BZFS]].  As opposed to the existing Javascript/HTML tool for generating config files, this interface will let the server owner control the server directly via a standard web browser.&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
The use of a browser with a live server will allow additional administration and configuration tasks that are not available with a simple config.&lt;br /&gt;
These tasks include:&lt;br /&gt;
* Editing all config-related files&lt;br /&gt;
* Saving configuration on server-side&lt;br /&gt;
* Reading and clearing logs&lt;br /&gt;
* Controlling and checking the status of the server process.&lt;br /&gt;
 &lt;br /&gt;
=== Initial Limitations===&lt;br /&gt;
Optimally the tool could be developed to a point where it was able to control nearly every aspect of the server. The primary focus of this initial design interface will be ease of use and security. Portability is also a major secondary concern.&lt;br /&gt;
&lt;br /&gt;
==Proposed Features==&lt;br /&gt;
&lt;br /&gt;
=== File editing===&lt;br /&gt;
An example feature lacking in &amp;lt;tt&amp;gt;bzfs_conf.html&amp;lt;/tt&amp;gt; is the ability to edit and save the several other config-related files, like badwords and helpmsg, from within the browser. &lt;br /&gt;
This is reasonable, since Javascript can&#039;t usually write to disk, but for this project, it&#039;s a necessity. It could be as simple as a text field, but a more sophisticated interface might be useful, such as a table of banned IP addresses with a custom input form and buttons to remove addresses from the list. Depending on the of complexity and layout of these, a separate page for the editing interface for each file might also be warranted. On the other hand, the daemon will overwrite a few files on exit for the things that can be changed by server commands, like the banlist, so a better option for those might be to let the user issue commands to the server from the web interface, which would give control over other parts of the server, as well.&lt;br /&gt;
&lt;br /&gt;
=== Plugins ===&lt;br /&gt;
The user should be able to choose from plugins and maps in pre-defined folders, and upload custom maps. Depending on the relative difficulty, maps might be validated on upload or BZFS will check them on startup.  (Although it would be interesting to do the same for plugin files, there probably wouldn&#039;t be any nice way of keeping it secure.)&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
Javascript will be used sparingly, in places where it makes the interface easier to use.  Since not all users allow Javascript, of course, any client-side input validation will be mirrored on the server side.  If time allows, and if it would add to the usability of the tool in certain areas, some use of asynchronus Javascript messages through XMLHttpRequest might be explored.  However, the entire interface must lose no functionality where user scripting is unavailable.&lt;br /&gt;
&lt;br /&gt;
There should also be very few external tools used in this project, so that it can be deployed as widely as possible. It could be written in PHP or another common scripting language, but that would require whatever language chosen to be present on the host machine.  Since BZFlag itself is written in C++, using that language would eliminate the dependency.  It would also allow the admin interface to be implemented as a plug-in, using the in-port HTTP feature of the BZFS API, which would likely make it more convenient to deploy.  However, in order to ease development, a scripting language may be used to create a working prototype which would then be a blueprint to rewrite the tool in C++.&lt;br /&gt;
&lt;br /&gt;
==Development==&lt;br /&gt;
[[User:BugQ|BugQ]] will be carrying out tests on the config files generated by the tool as well as hosting a test server for others to try and give comments on.  Suggestions on unnecessary or possible new features should be added to the talk page.&lt;br /&gt;
&lt;br /&gt;
[[Category: Summer Of Code 2008]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=LibBZW&amp;diff=10102</id>
		<title>LibBZW</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=LibBZW&amp;diff=10102"/>
		<updated>2025-12-15T03:46:49Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page LibBZW to GSoC: LibBZW: projects can be prefixed with &amp;#039;&amp;#039;&amp;#039;GSoC:&amp;#039;&amp;#039;&amp;#039;, to better keep track of them&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[GSoC: LibBZW]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=GSoC:_LibBZW&amp;diff=10101</id>
		<title>GSoC: LibBZW</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=GSoC:_LibBZW&amp;diff=10101"/>
		<updated>2025-12-15T03:46:49Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page LibBZW to GSoC: LibBZW: projects can be prefixed with &amp;#039;&amp;#039;&amp;#039;GSoC:&amp;#039;&amp;#039;&amp;#039;, to better keep track of them&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;libBZW is a proposed library that will encompass current and future [[BZW]] functionality, replacing independant implementations in various applications, including bzfs.&#039;&#039;&lt;br /&gt;
==Implementation==&lt;br /&gt;
libBZW will be implemented as a static library within [[BZFlag]]. Applications/builds depending on libBZW should be within the BZFlag tree as well for sanity&#039;s sake (i.e. [[BZFS]] will depend on libBZW, and is within /bzflag/src).&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
*BZW file parsing&lt;br /&gt;
&lt;br /&gt;
==Functionality==&lt;br /&gt;
libBZW will initially contain methods and functionality from the following sources:&lt;br /&gt;
 Just so I can keep track of what files I will need initially, obtained via grep, primitive list.&lt;br /&gt;
 Need to add summaries of functionality desired to be copied/reproduced/replicated from each file. --Lukstr&lt;br /&gt;
*bzflag/&lt;br /&gt;
**src/&lt;br /&gt;
***bzfs/&lt;br /&gt;
****&#039;&#039;&#039;bzfs.cxx&#039;&#039;&#039; -- &#039;&#039;Read worlds (via stream/blob or filename), retrieve WorldInfo&#039;&#039;&lt;br /&gt;
****&#039;&#039;&#039;BZWReader.h&#039;&#039;&#039;&lt;br /&gt;
****&#039;&#039;&#039;BZWReader.cxx&#039;&#039;&#039;&lt;br /&gt;
****&#039;&#039;&#039;BZWError.cxx&#039;&#039;&#039;&lt;br /&gt;
****&#039;&#039;&#039;BZWError.h&#039;&#039;&#039;&lt;br /&gt;
****&#039;&#039;&#039;CmdLineOptions.cxx&#039;&#039;&#039;&lt;br /&gt;
***bzflag/&lt;br /&gt;
****&#039;&#039;&#039;World.cxx&#039;&#039;&#039;&lt;br /&gt;
**tools/&lt;br /&gt;
***modeltool/&lt;br /&gt;
****&#039;&#039;&#039;modeltool.cxx&#039;&#039;&#039; -- &#039;&#039;Creating/writing bzw files&#039;&#039;&lt;br /&gt;
*bzwworkbench/&lt;br /&gt;
**src/&lt;br /&gt;
***model/&lt;br /&gt;
****&#039;&#039;&#039;BZWParser.cpp&#039;&#039;&#039; -- &#039;&#039;Cleaner parser than bzfs?&#039;&#039;&lt;br /&gt;
****&#039;&#039;&#039;Model.cpp&#039;&#039;&#039;&lt;br /&gt;
**include/&lt;br /&gt;
***model/&lt;br /&gt;
****&#039;&#039;&#039;BZWParser.h&#039;&#039;&#039;&lt;br /&gt;
****&#039;&#039;&#039;Model.h&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==API==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Summer Of Code 2008]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Bz_getPublicPort&amp;diff=10099</id>
		<title>Bz getPublicPort</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Bz_getPublicPort&amp;diff=10099"/>
		<updated>2025-12-07T02:01:30Z</updated>

		<summary type="html">&lt;p&gt;Zehra: redirect, since functions are in official docs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Category:BZFS API Docs]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Bz_getPublicDescription&amp;diff=10098</id>
		<title>Bz getPublicDescription</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Bz_getPublicDescription&amp;diff=10098"/>
		<updated>2025-12-07T02:01:15Z</updated>

		<summary type="html">&lt;p&gt;Zehra: redirect, since functions are in official docs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Category:BZFS API Docs]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZRobots&amp;diff=10097</id>
		<title>BZRobots</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZRobots&amp;diff=10097"/>
		<updated>2025-12-07T01:57:02Z</updated>

		<summary type="html">&lt;p&gt;Zehra: /* API Methods */ completed conversion to templates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=About BZRobots=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(Note that the following information applies to the BZRobots in the upcoming BZFlag 3.0 release)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
BZRobots is a programmable computer player client that is compatible with the [[BZFS]] server. It is designed to be an artificial intelligence training and development tool that operates under the BZFlag platform.&lt;br /&gt;
&lt;br /&gt;
BZRobots requires that you have already configured and are running an instance of [[BZFS]], that allows one or more bots (using the -botsPerIP setting). Also, BZRobots is a &amp;quot;headless&amp;quot; client (i.e. there are no graphics, it is only text-based), so if you want to watch your bots in action, you will also need to join as an observer or player using the BZFlag client.&lt;br /&gt;
&lt;br /&gt;
=Quick Start: Building=&lt;br /&gt;
===Linux/OS X===&lt;br /&gt;
The BZRobots client (and support for C++ bots) will by default as a standard part of the bzflag trunk build. However, if you want to build Python bots, you will need to run ./configure with the option --enable-bzrobots-python (and of course have the necessary dependencies)&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
Open the bzrobots solution, then build the bzrobots and testbot projects. &lt;br /&gt;
&lt;br /&gt;
=Quick Start: Running=&lt;br /&gt;
(Note: This quick start assumes that you will be testing bzrobots from within the build directory, have already run &#039;autogen.sh&#039;, &#039;configure&#039;, and &#039;make&#039; and have not run &#039;make install&#039;)&lt;br /&gt;
===Linux/OS X: Shared Library [.so]===&lt;br /&gt;
(Due to the use of libtool, the binary TestRobot.so is in the .libs directory)&lt;br /&gt;
 # cd bzflag/src/bzrobots&lt;br /&gt;
 # ./bzrobots -team red sobot@localhost .libs/TestRobot.so&lt;br /&gt;
&lt;br /&gt;
===Linux/OS X: Python [.py]===&lt;br /&gt;
 # cd bzflag/src/bzrobots&lt;br /&gt;
 # ln -s .libs/bzrobot_pyext.so ./bzrobot_pyext.so&lt;br /&gt;
 # ./bzrobots -team red pybot@localhost ../../bots/python/TestRobot.py&lt;br /&gt;
&lt;br /&gt;
===Linux/OS X: LUA [.lua]===&lt;br /&gt;
 # cd bzflag/src/bzrobots&lt;br /&gt;
 # ./bzrobots -team red luabot@localhost ../../bots/lua/bzbot.lua&lt;br /&gt;
&lt;br /&gt;
===Windows: Shared Library [.dll]===&lt;br /&gt;
 # cd bzflag&lt;br /&gt;
 # bzrobots.exe -team red dllbot@localhost TestRobot.dll&lt;br /&gt;
&lt;br /&gt;
===Windows: LUA [.lua]===&lt;br /&gt;
 # cd bzflag&lt;br /&gt;
 # bzrobots.exe -team red luabot@localhost bots\lua\bzbot.lua&lt;br /&gt;
&lt;br /&gt;
=Developing Robots=&lt;br /&gt;
* [[BZRobots/API]] - A description the BZRobots API&lt;br /&gt;
* [[BZRobots/API_BZRobots_vs_Robocode]] - For those coming from RoboCode, a list of differences between the RoboCode and BZRobots&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
=BZRobots/Ideas=&lt;br /&gt;
This page is to collaborate on ideas for the [[BZRobots]] Programmable Computer Player Client&lt;br /&gt;
&lt;br /&gt;
= Suggested ideas =&lt;br /&gt;
==API functions==&lt;br /&gt;
* Provide an API for visual targets based on the same rules a player would see.&lt;br /&gt;
** This would only apply to maps using flags&lt;br /&gt;
* Provide global, team, admin, and report chat APIs so bots can communicate just like players, perhaps with some parsing helper functions.&lt;br /&gt;
&lt;br /&gt;
== Input ==&lt;br /&gt;
* Allows input of coordinates/properties from stdin, so info from other apps, gps, etc. can be pumped into the bot&lt;br /&gt;
** What to do when multiple bots are running in the same client?&lt;br /&gt;
&lt;br /&gt;
= Accepted ideas =&lt;br /&gt;
==Scripting==&lt;br /&gt;
* Be able to load multiple modules.&lt;br /&gt;
** A small amount of work in bzrobots client should make this happen&lt;br /&gt;
&lt;br /&gt;
= Rejected ideas =&lt;br /&gt;
==API functions==&lt;br /&gt;
* Have methods to compute travel paths to desired locations, with updates for moving targets.&lt;br /&gt;
** (Rejected as it defeats the purpose of BZRobots as an AI learning tool)&lt;br /&gt;
* Add a getTank(callsign) function&lt;br /&gt;
** (Rejected due because BZRobots now supports the onScannedPlayer event)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=History=&lt;br /&gt;
The BZRobots Programmable Computer Player Client was originally developed by Brigham Young University as a project called [http://bzrc.cs.byu.edu/ BZRC]&lt;br /&gt;
&lt;br /&gt;
In 2007 it was further developed by Jørgen Pedersen Tjernø (AKA daxxar) as part of the [[Google_Summer_of_Code#Programmable_Computer_Player_Client|Google Summer of Code]]. Information about his work can be found on his GSoC blog at http://gsoc.daxxar.com&lt;br /&gt;
&lt;br /&gt;
This work was continued in 2009 by Mathew Eis (AKA Bulldozer and KingRobot), again as part of  [[Google_Summer_of_Code#Programmable_Computer_Player_Client|Google Summer of Code]].&lt;br /&gt;
&lt;br /&gt;
The current BZRobots code can be found in the [[BZFlag_SVN| BZFlag subversion system]] at http://bzflag.svn.sourceforge.net/svnroot/bzflag/trunk/bzflag/src/bzrobots&lt;br /&gt;
&lt;br /&gt;
=BZRobots API=&lt;br /&gt;
&lt;br /&gt;
The API for the BZRobots Programmable Computer Player Client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [[BZRobots]] API is based heavily on the [http://robocode.sourceforge.net/ robocode] project. It is class-based, meaning that a robot is built by extending from one of the following two classes:&lt;br /&gt;
* Robot (An easy-to-use robot with a simplified API, e.g. degree units, etc.)&lt;br /&gt;
* AdvancedRobot (A robot with more advanced features in the API, e.g. radian units, etc.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The main control loop is created by overriding the class method &#039;&#039;run&#039;&#039;, and then using the methods shown below to control the robot. These control methods fit into two categories &#039;blocking&#039;, and &#039;non-blocking&#039;. A blocking function, once called, will not return until either the requested action has completed, or the amount of time allotted for a &amp;quot;turn&amp;quot; or &amp;quot;tick&amp;quot; has passed - whichever comes later. &lt;br /&gt;
&lt;br /&gt;
Non-blocking functions will return immediately, allowing for additional processing, but their actions do not take effect immediately; rather, they will take place when the &#039;&#039;execute&#039;&#039; method is called. After a blocking function has been called, various &amp;quot;events&amp;quot; that have been generated during that turn may be processed by the various event methods, if they have been overridden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are new to BZRobots, but have Robocode experience, you may want to take a look at [[BZRobots/API_BZRobots_vs_Robocode]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unless otherwise specified, all units are in map units (distance), degrees (angles), and seconds (time)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=API Methods=&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; &#039;&#039;As BZRobots currently supports bot scripts written in three different languages, the following is language independent description of the methods available for bot development. Actual usage will vary depending on the language used&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=4 {{Prettytable}}&lt;br /&gt;
|-&lt;br /&gt;
! colspan=7 {{Hl3}} | ==Robot/AdvancedRobot Methods== &lt;br /&gt;
|-&lt;br /&gt;
| {{Hl3}} |&#039;&#039;&#039;Method&#039;&#039;&#039; &lt;br /&gt;
| {{Hl3}} |&#039;&#039;&#039;Description&#039;&#039;&#039; &lt;br /&gt;
| {{Hl3}} |&#039;&#039;&#039;Blocking&#039;&#039;&#039;  &lt;br /&gt;
| {{Hl3}} |&#039;&#039;&#039;Robot&#039;&#039;&#039;&lt;br /&gt;
| {{Hl3}} |&#039;&#039;&#039;Advanced&amp;lt;br&amp;gt;Robot&#039;&#039;&#039; &lt;br /&gt;
| {{Hl3}} |&#039;&#039;&#039;Robocode&amp;lt;br&amp;gt;Compatible&#039;&#039;&#039; &lt;br /&gt;
| {{Hl3}} |&#039;&#039;&#039;Functional&amp;lt;br&amp;gt;Status&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
| void ahead(double distance) &lt;br /&gt;
| Moves the robot ahead by &#039;&#039;distance&#039;&#039;&lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void back(double distance) &lt;br /&gt;
| Moves the robot back by &#039;&#039;distance&#039;&#039; &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void clearAllEvents() &lt;br /&gt;
| Clears the event queue; any events will be disgarded &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void doNothing() &lt;br /&gt;
| Clears the event queue; any events will be disgarded &lt;br /&gt;
! {{Red}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void execute() &lt;br /&gt;
| Causes any action queued by setAhead, setTurnRight, etc. to take place, ending the &amp;quot;turn&amp;quot; &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void fire(double power)&lt;br /&gt;
| Fires a single shot &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| Bullet *fireBullet(double power)&lt;br /&gt;
| Fires a single shot, returning a reference to the fired shot&lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y &lt;br /&gt;
! {{Yellow}} | 50% &lt;br /&gt;
|-&lt;br /&gt;
| list&amp;lt;Event&amp;gt; getAllEvents()&lt;br /&gt;
| Returns a list of all events currently in the queue&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Red}} | 5% &lt;br /&gt;
|-&lt;br /&gt;
| double getBattleFieldLength()&lt;br /&gt;
| Returns the length of the battle field&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| double getBattleFieldWidth()&lt;br /&gt;
| Returns the width of the battle field&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| list&amp;lt;Event&amp;gt; getBulletHitBulletEvents()&lt;br /&gt;
| Returns a list of BulletHitBulletEvent currently in the queue&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Red}} | 5% &lt;br /&gt;
|-&lt;br /&gt;
| list&amp;lt;Event&amp;gt; getBulletHitEvents()&lt;br /&gt;
| Returns a list of BulletHitEvent currently in the queue&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Red}} | 5% &lt;br /&gt;
|-&lt;br /&gt;
| list&amp;lt;Event&amp;gt; getBulletMissedEvents()&lt;br /&gt;
| Returns a list of all BulletMissedEvent currently in the queue&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Red}} | 5% &lt;br /&gt;
|-&lt;br /&gt;
| double getDistanceRemaining()&lt;br /&gt;
| Returns the distance remaining from a setAhead/setBack &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| double getEnergy()&lt;br /&gt;
| For robocode compatibly - robot&#039;s current &amp;quot;energy&amp;quot; (Always 16) &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| double getGunCoolingRate()&lt;br /&gt;
| Returns the time it takes to reload a single shot &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| double getGunHeading()&lt;br /&gt;
| For robocode compatibly - robot&#039;s gun heading (Always matches robot heading)&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| double getGunHeadingRadians()&lt;br /&gt;
| For robocode compatibly - robot&#039;s gun heading (Always matches robot heading)&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| double getGunHeat()&lt;br /&gt;
| Returns the time until the gun will be ready to fire&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| double getGunTurnRemaining()&lt;br /&gt;
| For robocode compatibly - (Always returns 0)&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| double getGunTurnRemainingRadians()&lt;br /&gt;
| For robocode compatibly - (Always returns 0)&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| double getHeading()&lt;br /&gt;
| Returns the current heading of the robot &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| double getHeadingRadians()&lt;br /&gt;
| Returns the current heading of the robot in radians&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| double getHeight()&lt;br /&gt;
| Returns the height (Z-size) of the robot &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Red}} | N&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| double getLength()&lt;br /&gt;
| Returns the length (Y-size) of the robot&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| string getName()&lt;br /&gt;
| Returns the name (Callsign) of the robot &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| int getNumRounds()&lt;br /&gt;
| For robocode compatibly - number of battle rounds (Always &#039;&#039;&#039;1&#039;&#039;&#039;) &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| int getOthers()&lt;br /&gt;
| Returns the number of other robots/tanks currently in the battle &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| double getRadarHeading()&lt;br /&gt;
| For robocode compatibly - robot&#039;s radar heading (Always matches robot heading)&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| double getRadarHeadingRadians()&lt;br /&gt;
| For robocode compatibly - robot&#039;s radar heading (Always matches robot heading)&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| double getRadarTurnRemaining()&lt;br /&gt;
| For robocode compatibly - (Always returns 0)&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| double getRadarTurnRemainingRadians()&lt;br /&gt;
| For robocode compatibly - (Always returns 0)&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| list&amp;lt;Event&amp;gt; getRobotDeathEvents()&lt;br /&gt;
| Returns a list of all RobotDeathEvent currently in the queue&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Red}} | 5% &lt;br /&gt;
|-&lt;br /&gt;
| int getRoundNum()&lt;br /&gt;
| For robocode compatibly - current battle round (Always &#039;&#039;&#039;1&#039;&#039;&#039;) &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| list&amp;lt;Event&amp;gt; getScannedRobotEvents()&lt;br /&gt;
| Returns a list of all ScannedRobotEvent currently in the queue&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Red}} | 5% &lt;br /&gt;
|-&lt;br /&gt;
| list&amp;lt;Event&amp;gt; getStatusEvents()&lt;br /&gt;
| Returns a list of all StatusEvent currently in the queue&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Red}} | 5% &lt;br /&gt;
|-&lt;br /&gt;
| double getTime()&lt;br /&gt;
| Returns the current game time &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| double getTurnRemaining()&lt;br /&gt;
| Returns the distance remaining from a setTurnLeft/setTurnRight &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| double getTurnRemainingRadians()&lt;br /&gt;
| Returns the distance remaining from a setTurnLeft/setTurnRight in radians&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| double getVelocity()&lt;br /&gt;
| Returns the speed of the robot (excluding the Z-speed)&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| double getWidth()&lt;br /&gt;
| Returns the width (X-size) of the robot &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| double getX()&lt;br /&gt;
| Returns the current X coordinate of the robot &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| double getY()&lt;br /&gt;
| Returns the current Y coordinate of the robot &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| double getZ()&lt;br /&gt;
| Returns the current Z coordinate of the robot &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| bool isAdjustGunForRobotTurn&lt;br /&gt;
| For robocode compatibility - always true&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| bool isAdjustRadarForGunTurn&lt;br /&gt;
| For robocode compatibility - always true&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| bool isAdjustRadarForRobotTurn&lt;br /&gt;
| For robocode compatibility - always true&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| void resume()&lt;br /&gt;
| Resumes any movements saved by a previous call to &#039;&#039;stop&#039;&#039;&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void scan()&lt;br /&gt;
| Prompts a radar scan, resulting in onScannedRobot events&lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void setAdjustGunForRobotTurn(bool independent)&lt;br /&gt;
| For robocode compatibly - but has no effect when false&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| void setAdjustRadarForGunTurn(bool independent)&lt;br /&gt;
| For robocode compatibly - but has no effect when false&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| void setAdjustRadarForRobotTurn(bool independent)&lt;br /&gt;
| For robocode compatibly - but has no effect when false&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| void setAhead(double distance)&lt;br /&gt;
| Specifies that the robot should move forward by &#039;&#039;distance&#039;&#039; at the next execute()&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void setBack(double distance)&lt;br /&gt;
| Specifies that the robot should move backwad by &#039;&#039;distance&#039;&#039; at the next execute()&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void setFire(double power)&lt;br /&gt;
| Specifies that the robot should fire a bullet of &#039;&#039;power&#039;&#039; at the next execute()&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| Bullet *setFireBullet(double power)&lt;br /&gt;
| Specifies that the robot should fire a bullet of &#039;&#039;power&#039;&#039; at the next execute()&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y&lt;br /&gt;
! {{Yellow}} | 50% &lt;br /&gt;
|-&lt;br /&gt;
| void setMaxTurnRate(double maxTurnRate)&lt;br /&gt;
| Sets a limit on the maximum turn rate of the robot at the next execute()&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void setMaxVelocity(double maxVelocity)&lt;br /&gt;
| Sets a limit on the maximum speed of the robot at the next execute()&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void setResume()&lt;br /&gt;
| Immediately resumes any motion halted by setStop&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void setStop(bool overwrite = false)&lt;br /&gt;
| Immediately stops any motion until resumed by setResume&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void void setTurnGunLeft(double degrees)&lt;br /&gt;
| For robocode compatablity - has no effect&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| void void setTurnGunLeftRadians(double radians)&lt;br /&gt;
| For robocode compatablity - has no effect&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| void void setTurnGunRight(double degrees)&lt;br /&gt;
| For robocode compatablity - has no effect&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| void void setTurnGunRightRadians(double radians)&lt;br /&gt;
| For robocode compatablity - has no effect&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| void void setTurnLeft(double degrees)&lt;br /&gt;
| Sets the robot to turn left by &#039;&#039;degrees&#039;&#039; at the next execute()&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void void setTurnLeftRadians(double radians)&lt;br /&gt;
| Sets the robot to turn left by &#039;&#039;radians&#039;&#039; at the next execute()&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void void setTurnRadarLeft(double degrees)&lt;br /&gt;
| For robocode compatibility - has no effect&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| void void setTurnRadarLeftRadians(double radians)&lt;br /&gt;
| For robocode compatibility - has no effect&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| void void setTurnRadarRight(double degrees)&lt;br /&gt;
| For robocode compatibility - has no effect&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| void void setTurnRadarRightRadians(double radians)&lt;br /&gt;
| For robocode compatibility - has no effect&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| void void setTurnRight(double degrees)&lt;br /&gt;
| Sets the robot to turn right by &#039;&#039;degrees&#039;&#039; at the next execute()&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void void setTurnRightRadians(double radians)&lt;br /&gt;
| Sets the robot to turn right by &#039;&#039;radians&#039;&#039; at the next execute()&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void stop(bool overwrite = false)&lt;br /&gt;
| Stops the robot, saving any current movements &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void turnGunRight(double degrees)&lt;br /&gt;
| For robocode compatibly - but has no effect&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| void turnGunLeft(double degrees)&lt;br /&gt;
| For robocode compatibly - but has no effect&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| void turnLeft(double degrees)&lt;br /&gt;
| Turns the robot left &#039;&#039;degrees&#039;&#039; degrees&lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void turnLeftRadians(double radians)&lt;br /&gt;
| Turns the robot left &#039;&#039;radians&#039;&#039; radians&lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void turnRadarRight(double degrees)&lt;br /&gt;
| For robocode compatibly - but has no effect&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y &lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| void turnRadarLeft(double degrees)&lt;br /&gt;
| For robocode compatibly - but has no effect&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y &lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| void turnRadarLeftRadians(double radians)&lt;br /&gt;
| For robocode compatibly - but has no effect&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y &lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| void turnRadarRight(double degrees)&lt;br /&gt;
| For robocode compatibly - but has no effect&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y &lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| void turnRadarRightRadians(double radians)&lt;br /&gt;
| For robocode compatibly - but has no effect&lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y &lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| void turnRight(double degrees)&lt;br /&gt;
| Turns the robot right &#039;&#039;degrees&#039;&#039; degrees&lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void turnRightRadians(double radians)&lt;br /&gt;
| Turns the robot right &#039;&#039;radians&#039;&#039; radians&lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Red}} | N &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
! colspan=7 {{Hl3}} | ==Robot/AdvancedRobot Event Handlers== &lt;br /&gt;
|-&lt;br /&gt;
| {{Hl3}} |&#039;&#039;&#039;Method&#039;&#039;&#039; &lt;br /&gt;
| {{Hl3}} |&#039;&#039;&#039;Description&#039;&#039;&#039; &lt;br /&gt;
| {{Hl3}} |&#039;&#039;&#039;Blocking&#039;&#039;&#039;  &lt;br /&gt;
| {{Hl3}} |&#039;&#039;&#039;Robot&#039;&#039;&#039;&lt;br /&gt;
| {{Hl3}} |&#039;&#039;&#039;Advanced&amp;lt;br&amp;gt;Robot&#039;&#039;&#039; &lt;br /&gt;
| {{Hl3}} |&#039;&#039;&#039;Robocode&amp;lt;br&amp;gt;Compatible&#039;&#039;&#039; &lt;br /&gt;
| {{Hl3}} |&#039;&#039;&#039;Functional&amp;lt;br&amp;gt;Status&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
| void onBattleEnded(BattleEndedEvent e)&lt;br /&gt;
| Called at the end of a league match, or the server shutting down&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Red}} | 10% &lt;br /&gt;
|-&lt;br /&gt;
| void onBulletFired(BulletFiredEvent e)&lt;br /&gt;
| Called when another robot/tank fires a bullet&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
! {{Red}} | 10% &lt;br /&gt;
|-&lt;br /&gt;
| void onBulletHit(BulletHitEvent e)&lt;br /&gt;
| Called when a bullet fired by the robot hits another robot&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | 80% &lt;br /&gt;
|-&lt;br /&gt;
| void onBulletHitBullet(BulletHitBulletEvente)&lt;br /&gt;
| For robocode compatibility - will never take place&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| void onBulletMissed(BulletMissedEvent e)&lt;br /&gt;
| Called when a bullet fired by the robot expires or hits a wall&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Red}} | 10% &lt;br /&gt;
|-&lt;br /&gt;
| void onDeath(DeathEvent e)&lt;br /&gt;
| Called when the robot dies&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void onHitByBullet(HitByBulletEvent e)&lt;br /&gt;
| Called when the robot is hit by a bullet&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Red}} | 25% &lt;br /&gt;
|-&lt;br /&gt;
| void onHitRobot(HitRobotEvente)&lt;br /&gt;
| For robocode compatibility - will never be called&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
|-&lt;br /&gt;
| void onHitWall(HitWallEvent e)&lt;br /&gt;
| Called when the robot runs into a wall or object&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! bgcolor=&amp;quot;#22BB00&amp;quot; | 90% &lt;br /&gt;
|-&lt;br /&gt;
| void onRobotDeath(RobotDeathEvent e)&lt;br /&gt;
| Called when the robot is killed&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void onScannedRobot(ScannedRobotEvent e)&lt;br /&gt;
| Called each turn as the robot&#039;s radar &amp;quot;sees&amp;quot; another robot&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void onSpawn(SpawnEvent e)&lt;br /&gt;
| Called when the robot spawns&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Grey}} | N/A&lt;br /&gt;
! {{Green}} | 100% &lt;br /&gt;
|-&lt;br /&gt;
| void onStatus(StatusEvent e)&lt;br /&gt;
| Called at the beginning of each &amp;quot;turn&amp;quot;, before the main loop is run&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | 95% &lt;br /&gt;
|-&lt;br /&gt;
| void onWin(WinEvent e)&lt;br /&gt;
| Called when the robot (or it&#039;s team) wins a league match&lt;br /&gt;
! {{Grey}} | N/A &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Green}} | Y &lt;br /&gt;
! {{Yellow}} | Y &lt;br /&gt;
! {{Red}} | 10% &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
&lt;br /&gt;
* [[BZRobots/API_BZRobots_vs_Robocode]] - Differences between Robocode and BZRobots&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Template:Grey&amp;diff=10096</id>
		<title>Template:Grey</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Template:Grey&amp;diff=10096"/>
		<updated>2025-12-07T01:54:23Z</updated>

		<summary type="html">&lt;p&gt;Zehra: created grey template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;bgcolor=&amp;quot;#555555&amp;quot;&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Template:Yellow&amp;diff=10095</id>
		<title>Template:Yellow</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Template:Yellow&amp;diff=10095"/>
		<updated>2025-12-07T01:51:58Z</updated>

		<summary type="html">&lt;p&gt;Zehra: created yellow template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;bgcolor=&amp;quot;#BBBB00&amp;quot;&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Comparison_of_map_objects&amp;diff=10094</id>
		<title>Comparison of map objects</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Comparison_of_map_objects&amp;diff=10094"/>
		<updated>2025-12-07T01:30:45Z</updated>

		<summary type="html">&lt;p&gt;Zehra: content merged to BZW Index&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[BZW Index]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=BZW_Index&amp;diff=10093</id>
		<title>BZW Index</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=BZW_Index&amp;diff=10093"/>
		<updated>2025-12-07T01:29:49Z</updated>

		<summary type="html">&lt;p&gt;Zehra: merged content from Comparison of map objects&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Index of BZW maps, tools, utilities and more.&lt;br /&gt;
&lt;br /&gt;
=Map Editors=&lt;br /&gt;
Map editors are programs that are specifically written to create and edit [[BZW]] map files.&lt;br /&gt;
&lt;br /&gt;
There&#039;s several different versions of map editors which currently exist.&lt;br /&gt;
Some are standalone programs while others are based on plug-ins and/or scripts and mostly are designed to convert files into the BZW format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a basic general comparison of several map editors.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Map editor&lt;br /&gt;
! Operating system&lt;br /&gt;
! Supports 2.0 world objects&lt;br /&gt;
! Type of program&lt;br /&gt;
|-&lt;br /&gt;
! [[BZEdit]]&lt;br /&gt;
| Linux&lt;br /&gt;
| No&lt;br /&gt;
| Standalone&lt;br /&gt;
|-&lt;br /&gt;
! [[BZEditWin32]]&lt;br /&gt;
| Windows&lt;br /&gt;
| No&lt;br /&gt;
| Standalone&lt;br /&gt;
|-&lt;br /&gt;
! [[BZFed]]&lt;br /&gt;
| Linux&lt;br /&gt;
| No&lt;br /&gt;
| Standalone&lt;br /&gt;
|-&lt;br /&gt;
! [[BZWTools]]&lt;br /&gt;
| Cross-platform&lt;br /&gt;
| Yes&lt;br /&gt;
| Plug-in&lt;br /&gt;
|-&lt;br /&gt;
! [[DI-Machine]]&lt;br /&gt;
| Cross-platform&lt;br /&gt;
| Yes&lt;br /&gt;
| Script to convert .obj file into a drawInfo-specific .bzw file&lt;br /&gt;
|-&lt;br /&gt;
! [[IBZEdit]]&lt;br /&gt;
| Mac OS&lt;br /&gt;
| Some objects are supported &lt;br /&gt;
| Standalone&lt;br /&gt;
|-&lt;br /&gt;
! [[Modeltool]]&lt;br /&gt;
| Cross-platform&lt;br /&gt;
| Yes&lt;br /&gt;
| Tool to convert wavefront.obj files to .bzw mesh&lt;br /&gt;
|-&lt;br /&gt;
! [[PyBZEdit]]&lt;br /&gt;
| Cross-platform&lt;br /&gt;
| Yes&lt;br /&gt;
| Standalone&lt;br /&gt;
|-&lt;br /&gt;
! [[Wings3D]]&lt;br /&gt;
| Cross-plaform&lt;br /&gt;
| Yes&lt;br /&gt;
| Standalone&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Tools and Utilities:=&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|-&lt;br /&gt;
| {{Hl3}} |&#039;&#039;&#039;Tool/Utility name&#039;&#039;&#039; &lt;br /&gt;
| {{Hl3}} |&#039;&#039;&#039;Description&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=20415 bzflag-rendering.php] || &#039;&#039;&#039;Generating map thumbnails in PHP&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=468 Bmp2Bzw] || &#039;&#039;&#039;Converts .bmp files into maps.&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=1651 bzmapper v2.0] || &#039;&#039;&#039;1.x  Multi-tool map generator&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=7928 BZReader] || &#039;&#039;&#039;Texture grabber and organizer for images.bzflag.org&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=6520 BZFlag MapU - Box to Mesh] || &#039;&#039;&#039;Builds a mesh based on specifications for a box. (Some errors may be present.)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=20587 Pyramid to Mesh] || &#039;&#039;&#039;Builds a mesh according to specifications for a pyramid.&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=11514 DI-machine] || &#039;&#039;&#039;Converts .obj files into pure drawInfo. (Requires PHP.)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=20707 Py-Machine] || &#039;&#039;&#039;Python port of DI-Machine&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=12636 applescript Material Generator] || &#039;&#039;&#039;AppleScript program for bzw materials generation.&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=12703 pyconvert] || &#039;&#039;&#039;Converts old style (1.0) maps into textured mesh maps.&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=16040 Anim8or to BZW Converter] || &#039;&#039;&#039;Tool to convert cubes in animator to .bzw boxes, pyramids or teleporters. &#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=20709 Anim8orToBZW] || &#039;&#039;&#039;Port of the original tool to Python&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=16071 random generator] || &#039;&#039;&#039;Tool for helping generate random symmetric maps with the &amp;quot;group&amp;quot; object.&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=13058 bzwmoviemaker] || &#039;&#039;&#039;Script for making billboard animations in BZFlag&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=12886 FixOldTeles] || &#039;&#039;&#039;Fixes broken teleport links from BZEdit&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?p=136642#p136642 GrassTuftGenerator] || &#039;&#039;&#039;Creates 3D grass tufts for a map&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[BZWTools]]  || &#039;&#039;&#039;Plug-in for viewing and editing bzw maps in Blender. (Does not work with current version of Blender.)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=19267 UnityBZFlagBoxExport] || &#039;&#039;&#039;Supports the creation and positioning of boxes in 3D view. (Nearly a map editor.)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[Modeltool]]  || &#039;&#039;&#039;Current go to tool for converting .obj files to bzw mesh maps.&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=1899 remove map file comments] || &#039;&#039;&#039;C++ app&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=1867  &amp;quot;Maze&amp;quot; generator] || &#039;&#039;&#039;In C and in Python&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=1614 Map generator script] || &#039;&#039;&#039;In Python&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=11693 BZEdit Replacement Textures] || &#039;&#039;&#039;Better textures for BZEdit&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=18429 Autogeneration of bzw world] || &#039;&#039;&#039;In GNU Emacs&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=5404 MAP converter] || &#039;&#039;&#039;In Qbasic&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=6995 Write text with bullets] || &#039;&#039;&#039;In Qbasic&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=8343 A text to map converter] || &#039;&#039;&#039;In Qbasic&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=7008 A text to map converter /!\ OLD version] || &#039;&#039;&#039;In Qbasic&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [https://forums.bzflag.org/viewtopic.php?t=7133 Random Map Generator] || &#039;&#039;&#039;Lots of versions of random map generators&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Map Objects==&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|-&lt;br /&gt;
| {{Hl3}} |&#039;&#039;&#039;Map Object&#039;&#039;&#039; &lt;br /&gt;
| {{Hl3}} |&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|  [[ Arc]] ||  Arc is an object that defines an arc or cylinder in a map.&lt;br /&gt;
|-&lt;br /&gt;
| [[ Base]] ||  Base is an object which is similar to a box, but defines properties of it being a base for capture the flag style game play modes.&lt;br /&gt;
|-&lt;br /&gt;
|  [[Box]]  ||   Box is an object which defines a cube structure in a world file.&lt;br /&gt;
|-&lt;br /&gt;
|  [[Color(BZW)]]  ||  Color is used in a BZFlag world (BZW) as a sub parameter for many parameters, such as materials and dynamic colors.&lt;br /&gt;
|-&lt;br /&gt;
|  [[Cone]]  ||  Cone object is a BZW object that defines a cone in a BZW world file.&lt;br /&gt;
|-&lt;br /&gt;
|  [[Define]]  ||  Group Definition, or define, will group a set of objects that can be recalled and duplicated multiple times with the group object.&lt;br /&gt;
|-&lt;br /&gt;
|  [[DrawInfo]]  ||  DrawInfo allows clients to render the mesh object more efficiently through LODs (Levels of Detail). Drawinfo also allows the ability to create moving objects in a map.&lt;br /&gt;
|-&lt;br /&gt;
|  [[DynamicColor]]  ||  DynamicColor describes how a color channel will be dynamically updated.&lt;br /&gt;
|-&lt;br /&gt;
|  [[GroundMaterial]] ||  GroundMaterial is an option for a Material that allows one to set the ground texture. .&lt;br /&gt;
|-&lt;br /&gt;
|  [[Group]] ||  Group allows one to bring together a number of elements and refer to them as a single object.&lt;br /&gt;
|-&lt;br /&gt;
|  [[Include]] ||  Include is an option which allows one to specify a second bzw file that will be included in the first bzw.&lt;br /&gt;
|-&lt;br /&gt;
|  [[Link]]  ||  Link is an object which creates a link (route) between two teleporters.&lt;br /&gt;
|-&lt;br /&gt;
|  [[Linkmaterial]]  ||  LinkMaterial allows one to set the texture of the teleporter window to anything one would like it to be..&lt;br /&gt;
|-&lt;br /&gt;
|  [[Material]]  ||  A material is used in a BZFlag world to define a new look for otherwise regular objects, such as meshboxes.&lt;br /&gt;
|-&lt;br /&gt;
|  [[Mesh]]  || Mesh is an object which defines an arbitrary three dimensional shape.&lt;br /&gt;
|-&lt;br /&gt;
|  [[Meshbox]]  ||  Meshbox is an update to the original [[Box]] object and supports features such as physics drivers and textures.&lt;br /&gt;
|-&lt;br /&gt;
|  [[Meshpyr]]  ||  Meshpyr is an object that constructs a specialized mesh that has the geometric appearance of a Pyramid.&lt;br /&gt;
|-&lt;br /&gt;
|  [[Options (object)]]  ||  Options object is a BZW map structure that defines various options for a server to use when running a map.&lt;br /&gt;
|-&lt;br /&gt;
|  [[Physics]]  ||  Physics, or Physics Driver, is an object when applied to another object, will affect a tank touching it in some way.&lt;br /&gt;
|-&lt;br /&gt;
|  [[Pyramid]]  ||  Pyramid is a BZW map structure that defines a polyhedron having a polygonal base and triangular sides with a common vertex in the world.&lt;br /&gt;
|-&lt;br /&gt;
|  [[Sphere]]  ||  The sphere is an Object that defines a sphere in a map file.&lt;br /&gt;
|-&lt;br /&gt;
|  [[Teleporter]]  ||  Teleporter is an object which transports the user to another teleporter in a different part of the world.&lt;br /&gt;
|-&lt;br /&gt;
|  [[Tetra]]  ||  Tetra is an map object which creates a polygon with four vertices.&lt;br /&gt;
|-&lt;br /&gt;
|  [[TextureMatrix]]  ||  TextureMatrix, or texmat, when applied to a material object, allows you to define how a texture will appear in a material.&lt;br /&gt;
|-&lt;br /&gt;
|  [[WaterLevel]]  ||  WaterLevel is an object that defines a plane of water that spans the entire map. WaterLevel is deadly to all tanks that cross it.&lt;br /&gt;
|-&lt;br /&gt;
|  [[Weapon (object)]]  ||  Weapon object is a BZW map structure that defines a fixed weapon effect.&lt;br /&gt;
|-&lt;br /&gt;
|  [[World (object)]]  ||  World object is a BZW map structure that defines various options for the map.&lt;br /&gt;
|-&lt;br /&gt;
|  [[Zone]]  ||  Zone is a rectangular BZW map structure for spawn or flag zones.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Map Making]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code/2009/OrgApplication&amp;diff=10092</id>
		<title>Google Summer of Code/2009/OrgApplication</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code/2009/OrgApplication&amp;diff=10092"/>
		<updated>2025-12-07T01:13:18Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Google Summer of Code/2009/OrgApplication to Google Summer of Code: 2009:OrgApplication: let&amp;#039;s standardize the pages a bit with &amp;#039;&amp;#039;&amp;#039;Google Summer of Code:&amp;#039;&amp;#039;&amp;#039; as prefix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Google Summer of Code: 2009:OrgApplication]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_2009:OrgApplication&amp;diff=10091</id>
		<title>Google Summer of Code: 2009:OrgApplication</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_2009:OrgApplication&amp;diff=10091"/>
		<updated>2025-12-07T01:13:18Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Google Summer of Code/2009/OrgApplication to Google Summer of Code: 2009:OrgApplication: let&amp;#039;s standardize the pages a bit with &amp;#039;&amp;#039;&amp;#039;Google Summer of Code:&amp;#039;&amp;#039;&amp;#039; as prefix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description = &lt;br /&gt;
BZFlag is a free online multiplayer cross-platform open source 3D tank battle game that is maintained by an active community of individuals distributed all around the world.  It is one of the most successful and sustained cross-platform open source games ever with an active developer, administrative, and player community.  There have been more than a million downloads in the last five years alone and our user base presently consists of more than 200 players online at any time of day or night.  The project has actually become more popular over the years as we continue to improve and enhance the game.  BZFlag has been under active development since 1992.&lt;br /&gt;
&lt;br /&gt;
Our organization is presently comprised of a rather disparate group of individuals that work on BZFlag because they love the game and the community that surrounds it.  There are presently 71 individuals entrusted with access to BZFlag core resources including 46 individuals that have committed source code modifications over the project&#039;s life span.  Our developer base presently consists of 9 documented core developers that have made extensive contributions to the game and remained active over many years, along with about a dozen apprentice-level developers that are coming up in the ranks, and about two dozen peripheral/casual developers, extension developers, and web integration programmers.  Additionally, there are several dozen trusted staffers, server operators, and graphic artists that assist in the day-to-day operations needed by the game for keeping servers up and running, providing server list services, designing artwork, providing network statistics, image hosting, web hosting, and much more.&lt;br /&gt;
&lt;br /&gt;
All of our project developers almost exclusively collaborate on the #bzflag Freenode IRC channel, which is the central hub for most of our development discussions, decision planning meetings, game operations, and network infrastructure administration.  We operate via a benevolent dictatorship combined with a meritocracy that strives for consensus between the core developers and other involved community members.  Extensive discussions are held for any changes to BZFlag that affect the game&#039;s traditional spirit, mood of gameplay, tone of the user environment, and types of interactions possible in the game.  These discussions also include considerations whenever there are new features being added such as new flags, enhanced graphics, or changes to the gameplay.  We also serve as a support arm to our user community assisting them with anything from how to get started playing to providing assistance with setting up their own server or even helping them write their own new extensions to the game.&lt;br /&gt;
&lt;br /&gt;
From IRC, we administer network operations for more than 19000 registered players and for the tens of thousands of unregistered players that engage in more than 10000 daily player sessions across more than 250 public servers.  As we are a globally distributed network-oriented game, we also maintain the public server listings, provide player tracking, network statistics, global authentication, user and group management, abuse and ban controls, player conflict resolution, competitive league management, and user community support.&lt;br /&gt;
&lt;br /&gt;
= Why is your group applying to participate? What do you hope to gain by participating =&lt;br /&gt;
&lt;br /&gt;
Our primary intention for participating in GSoC 2009 is to attract new developers.  We already have visibility, popularity, familiarity, and a very active community.  The strongest factor in our long-term development initiatives, however, is the number of active developers that we have at any given time.&lt;br /&gt;
&lt;br /&gt;
GSoC has shown to provide an exceptional opportunity for us to entice new developers to our community and keep them working with us over the long term.  It&#039;s been a great program for attracting new talent, inspiring new development initiatives, and even for getting our existing developers more organized and collaborating more effectively.&lt;br /&gt;
&lt;br /&gt;
We&#039;ve enjoyed collaborating on experimental efforts that have had strong academic and research goals, while helping promote and improve BZFlag in the process.  BZFlag is used by several universities (e.g., Brigham-Young University) as an artificial intelligence framework and has also been the subject of several academic research projects related to network communications (ACM-published research papers).  Indiana University researchers worked with our staff in 2007 to use BZFlag as a platform for conducting a social network analysis.  We&#039;d particularly like to improve these facilities to help encourage even wider use of BZFlag for academic and research purposes.&lt;br /&gt;
&lt;br /&gt;
Task-wise, we hope to work with these new developers to implement several enhancements to BZFlag that we know will have a big impact on those that play the game.  Past participation in GSoC has stimulated our project development activities and forced us to become more organized, collaborative, and deliberate in our focus.  Our community members have great ideas for improving the game and we would like to encourage these developments.  GSoC provides a mutually beneficial means to that end, particularly for students that we can attract to our project as new developers that stay with the project.&lt;br /&gt;
&lt;br /&gt;
= What criteria do you use to select the members of your group? Please be as specific as possible. =&lt;br /&gt;
&lt;br /&gt;
All of the mentors listed are actively engaged in the BZFlag community as core developers, apprentice developers, web service developers, and network operators.  Mentors were selected from among our core community of project contributors that are actively engaged on a day-to-day basis .  All mentors needed to have gained enough rapport and trust with those already actively involved to the extent that they&#039;ve been entrusted with source code access, decision-making authority, and that have sustained activity for months or years on end.  The mentors also needed to show competency in the BZFlag source code, our project directions, our operating philosophies, and a basic familiarity with our social dynamic.&lt;br /&gt;
&lt;br /&gt;
Several of our apprentice developers were specifically chosen due to the unique perspective that they bring to the development processes.  Those individuals help bridge the player-developer gap as those new developers tend to come straight out of the player community and/or are heavily involved and familiar with the needs of our users.  They form a critical part of our technical support infrastructure.&lt;br /&gt;
&lt;br /&gt;
Cumulatively, the #bzflag IRC channel provides even more insight, interaction, and mentoring support as our community spans several domains of software development expertise including game development, computer-aided design, computer-aided machining, software testing, web development, computer graphics development, systems and kernel development, and general application development.  As our channel is constantly (24/7) engaged in user and developer support to a global community, the channel will be our predominant means of interaction for all mentors and students.  Each individual listed can also dedicate a minimum of 10 hours a week on average with an understanding that there are additional demands on their time at the start, midterm, and final evaluation periods of the program.&lt;br /&gt;
&lt;br /&gt;
= Has your group participated previously? If so, please summarize your involvement and any past successes and failures. =&lt;br /&gt;
&lt;br /&gt;
Yes, we participated for the first time in 2007 and again in 2008.  We quickly found that being involved in GSoC requires considerable time and resources necessitating massive amounts of coordination, communication, and progress tracking.  Our developers spent many hours mentoring students, reviewing their code, and discussing implementation details.&lt;br /&gt;
&lt;br /&gt;
We found that being involved in GSoC encouraged our community to become more organized and accountable than usual.  It also instigated other developer activity and interest throughout our community, particularly amongst players that were eagerly interested in trying out the new facilities being developed by the students.&lt;br /&gt;
&lt;br /&gt;
The experience taught our mentors a great deal in terms of managing different personalities, expectations we had of their abilities to work with minimal process overhead, and how to respond quickly and effectively to inadequate levels of effort.  In our view, we did very well in managing our students but will need to dedicate even more time and attention to the students if we are allowed to participate again.  We intend to focus more on integrating the students quickly, engaging them more in the design and testing process throughout development, and making sure they follow our development criteria from start to finish so that we can help establish them as long-term developers in our community.&lt;br /&gt;
&lt;br /&gt;
= What is your plan for dealing with disappearing contributors? = &lt;br /&gt;
&lt;br /&gt;
If a student&#039;s interest or availability to participate in the summer project seems to be diverging or otherwise waning, efforts will be made to motivate the student through discussions and hands-on interactive development intended to stimulate their progress.  Being a 3D graphics-oriented game, we have the benefit of most tasks actually resulting in something &amp;quot;fun&amp;quot; that rather easily captures and maintains interest.  However, should the student&#039;s focus still remain diminished or should the student unexpectedly disappear, the administrator will relay this status to Google after repeated attempts to contact the student fail.&lt;br /&gt;
&lt;br /&gt;
Students are expected to commit changes very frequently.  Our philosophy is that if they&#039;re not committing, then they are not working (at least not effectively).  Having them commit frequently gives us a very good estimate of their activity level as well as where they are in the development process.  We strongly adhere to &amp;quot;commit early, commit often.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If the student is not around or is not working as much as needed, we will have discussions with them, see what&#039;s going on, and do so proactively.  We learned from one student who was in serious danger of failing that a simple change in accountability can have a massive impact on motivation.  We will strive to recognize our students&#039; personalities quickly, so that we can impose as much or as little process overhead as it required for them to be effective developers.  Additional process requirements (such as daily or weekly reports and commit quotas) may then be imposed for students that consistently fall behind schedule.&lt;br /&gt;
&lt;br /&gt;
Similarly, by interacting with the students on a daily basis and preferably by having them be joined to our IRC channel while they are working on BZFlag, it allows mentors to keep a careful eye on all student progress and readily discuss issues with them.  As is done for any developer, having them be readily available for interactive discussion on IRC frequently helps avoid misunderstandings, disagreements, and frustrations and at worst makes any issues apparent as soon as possible.  The IRC channel is the hub of our primary development activity providing source commit announcements, developer access, user insight, interactive discussions, and prompt responses to questions and comments.&lt;br /&gt;
&lt;br /&gt;
Other than that, the formula for dealing with disappearing students really just boils down to communication.  It is a very organic process and we don&#039;t believe that there is one answer for all students.&lt;br /&gt;
&lt;br /&gt;
The measures described above help us focus on having the most effective communication that works with our development team but will necessarily be tailored to each student individually.  Issues that we cannot resolve will be brought forward to Google for guidance.&lt;br /&gt;
&lt;br /&gt;
= What is your plan for dealing with disappearing members? = &lt;br /&gt;
&lt;br /&gt;
BZFlag contains an active community that is constantly engaged in providing assistance for any level of questions whether they are introductory user support questions or technical source code development questions.  The predominance of BZFlag&#039;s active software development interactions are discussed *entirely* on the #bzflag Freenode IRC channel.  We require that developers participate and interact on the IRC channel with other developers to their fullest capacity, and preferably without them relying on any single individual so that they may receive assistance and perspective from a variety of developers (it&#039;s not like all our developers always agree and, ultimately, our meritocracy prevails over decisions and directions).&lt;br /&gt;
&lt;br /&gt;
One of the main reasons for requiring developers to be on the IRC channel is to help mitigate issues whereby a student might encounter difficulties interacting with any particular individual.  It also exposes them to all developers so that they can become more quickly in-tune with which developers are presently active and the politics of our development practices.&lt;br /&gt;
&lt;br /&gt;
The students will be encouraged to interact on the IRC channel at all times to provide a continued on-going dialog with the other BZFlag developers as well so that everyone is informed of progress and development directions.  If a given mentor is not responding to the student, whether intentional or incapable, or if a mentor is unreachable for more than a couple days, one of several backup mentors are available to step in.&lt;br /&gt;
&lt;br /&gt;
Should some situation arise that prevents a mentor from being able to participate, several backup mentors are available that can be assigned to the student on the spot and immediately pick up where other mentors leave off.  Several of our mentors and administrators also know each other in person and have physical access to one another, so we can go smack them if they&#039;re not participating effectively or should they try to disappear online.  That said, all mentors are selected based on their activity this year to help minimize any issues.&lt;br /&gt;
&lt;br /&gt;
This year, we have also set up a mentor&#039;s blog to help our mentors make announcements more effectively and to provide suggestions for other GSoC projects.  This blog has already shown to be rather effective in making GSoC-specific announcements and for coordinating information amongst the mentors.  Once the students get started with their projects, we also plan to use the blog as a centralized information resource for developers to see the latest commits from the students and the status of their project progress.&lt;br /&gt;
&lt;br /&gt;
= What steps will you take to encourage contributors to interact with your community before, during, and after the program? =&lt;br /&gt;
&lt;br /&gt;
Being a game, i.e. an entertainment application, we have a somewhat unique benefit of actually being enjoyable before, during, and after the student&#039;s participation in the program and are even often &amp;quot;addictive&amp;quot;.  Most people enjoy playing BZFlag and often after they play the game for a little while, they can &amp;quot;get hooked&amp;quot; on the game.  &amp;quot;Quick to learn, difficult to master&amp;quot; is our motto and this holds true both in the game and for development.  Once new developers see the impact they&#039;re having on such a large user community, they quickly become addicted to the development aspects and making things more enjoyable for our players.  We encourage our developers to play so that they understand the needs of the game and the needs of the existing player community in addition to becoming familiar with how various portions of the source code relate to behaviors in the game.&lt;br /&gt;
&lt;br /&gt;
For student applicants we have a specific checklist of tasks to help them prepare to engage in routine development.  These steps include introducing themselves to our IRC channel, having a SourceForge account, becoming familiar with Subversion if they are not already, checking out the BZFlag sources, compiling their own version of BZFlag, playing the game with that version, registering with our global account services, becoming familiar with our websites and on-line services, and publishing their list of goals milestones for the community to see. &lt;br /&gt;
&lt;br /&gt;
As our IRC infrastructure and developer operations are already well established, we can (and frequently do) readily point new developer interests to our documentation and engage them in discussion.  We have lots of existing documentation, web infrastructure, and network resources available to quickly get new developers familiar and interested in development directions.  Thanks to our previous involvement with GSoC, we have an established mindset of successful interaction criteria that gets students quickly involved in our user community so that they feel like part of the family.&lt;br /&gt;
&lt;br /&gt;
One of the interactions that worked very well in 2007 was having the students directly interact with the users, letting them represent their efforts, and having their efforts be strongly supported and promoted by the other developers.  We intend to take additional steps this year to continuously integrate the students&#039; code throughout the program and work on introducing our player community to the features being developed even more early on.  The goal will be to instill a sense of belonging and a sense of appreciation for the hard work they put into their code.&lt;br /&gt;
&lt;br /&gt;
= What will you do to ensure that your accepted contributors stick with the project after the program concludes? =&lt;br /&gt;
&lt;br /&gt;
It is our responsibility to not neglect or abandon the students.  We have to give them the time and attention that they deserve, and we need to share with the students the respect and appreciation we have of their efforts so that they remain interested and involved.  BZFlag is fortunate to have not had any significant issues with attrition; many of our developers tend to remain involved with the project for a long time.  There is natural turn-over as interests shift and general fluctuations from year to year, but we sustain a relatively stable development rate and that is in no small part due to our interactive and friendly development environment.&lt;br /&gt;
&lt;br /&gt;
New developers are often enticed to stick around and contribute simply because we actively promote their changes to the user community when releases are made, and the user community responds vocally to just about every single modification that gets made to the game no matter how small.  For the topics that we are soliciting ideas, the efforts of the student have the ability to make a major impact on the game that will be exceedingly visible, and will encourage continued development not only by the student but other developers as well.  We will necessarily encourage students to remain involved with the project by welcoming them to our development team, integrating them as quickly as possible, giving them development responsibilities, and showing them the rewards and impact of their efforts.&lt;br /&gt;
&lt;br /&gt;
It&#039;s our job to encourage their passion for BZFlag development long after GSoC concludes.&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code_Acceptance&amp;diff=10090</id>
		<title>Google Summer of Code Acceptance</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code_Acceptance&amp;diff=10090"/>
		<updated>2025-12-07T01:10:55Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Google Summer of Code Acceptance to Google Summer of Code: Acceptance: let&amp;#039;s standardize the pages a bit with &amp;#039;&amp;#039;&amp;#039;Google Summer of Code:&amp;#039;&amp;#039;&amp;#039; as prefix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Google Summer of Code: Acceptance]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_Acceptance&amp;diff=10089</id>
		<title>Google Summer of Code: Acceptance</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_Acceptance&amp;diff=10089"/>
		<updated>2025-12-07T01:10:55Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Google Summer of Code Acceptance to Google Summer of Code: Acceptance: let&amp;#039;s standardize the pages a bit with &amp;#039;&amp;#039;&amp;#039;Google Summer of Code:&amp;#039;&amp;#039;&amp;#039; as prefix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is intended to lay out the basic &amp;quot;&#039;&#039;&#039;rules and requirements&#039;&#039;&#039;&amp;quot; that the BZFlag project is going to require of all [[Google Summer of Code]] students whose project proposals are accepted.  Unless otherwise arranged with the BZFlag GSoC administrator (contact brlcad via IRC on irc.freenode.net), it will be expected that all students comply with the requirements outlined below.&lt;br /&gt;
&lt;br /&gt;
== Application requirements ==&lt;br /&gt;
&lt;br /&gt;
=== Make a patch ===&lt;br /&gt;
We want to make sure that you have rudimentary skills in compiling code, reading other people&#039;s code, and can even simply get BZFlag to compile.  Prepare and submit a patch to our [http://sourceforge.net/tracker/?group_id=3248&amp;amp;atid=303248 Sourceforge patches tracker].&lt;br /&gt;
&lt;br /&gt;
Don&#039;t fret.  The patch can be almost anything just so long as it is can be applied to the BZFlag sources with very minimal hassle.  It should be something actually useful.  The patch should &#039;&#039;not&#039;&#039; just be whitespace, indent, or style changes as we automate those periodically.  It &#039;&#039;should&#039;&#039; be a functional patch such as fixing a known bug (see our BUGS file or sf bug tracker) or implementing some very minor uncontroversial feature (see our TODO file).  Bug fixes are generally the preferred scope but even something as trivial as fixing typos can make an acceptable patch.  This is one of several opportunities to impress us, so feel free to be creative.&lt;br /&gt;
&lt;br /&gt;
You are welcome to submit more than one patch if you like.  We will review any you submit, but we only require and expect one; remember that quality is far more important than quantity in our reviews.&lt;br /&gt;
&lt;br /&gt;
Be sure to include either a link to the Sourceforge patch tracker item or your Sourceforge username in your application.&lt;br /&gt;
&lt;br /&gt;
=== Play BZFlag with the mentors ===&lt;br /&gt;
We will schedule several open gaming gatherings during the application process and ask that serious applicants come play a round of BZFlag with us.  You should compile your own client using the latest BZFlag trunk sources (which is incompatible with the latest public release) when you come to the gaming session.  We will work out available times to play with you after you&#039;ve submitted an application.&lt;br /&gt;
&lt;br /&gt;
You should &#039;&#039;play the game&#039;&#039; from a binary you&#039;ve built yourself before beginning any work.  You should do this &#039;&#039;at least once&#039;&#039; before the gathering if not more if you are so inclined.  Being able to compile the sources on your own equipment is a very &#039;&#039;basic task&#039;&#039; that is beyond the scope of GSoC and will be an expected unassisted capacity of all students once the summer coding begins.  Additionally, understanding the existing player community, what they like and dislike, and seeing how they interact is all &#039;&#039;&#039;very important&#039;&#039;&#039; for most developers to have at least a basic familiarity with.  In the end, your changes will (hopefully) be pushed out to the community and you be cognizant of what that will &#039;&#039;mean&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
We&#039;ll be glad to help you the first time if you run into trouble.  Talk to the developers.&lt;br /&gt;
&lt;br /&gt;
=== Come talk to us ===&lt;br /&gt;
You &#039;&#039;&#039;&#039;&#039;really&#039;&#039;&#039;&#039;&#039; should be talking to the BZFlag developers long before submitting your application.  Discuss your ideas with us on the IRC channel.  Communication is a huge part of our evaluation criteria.&lt;br /&gt;
&lt;br /&gt;
== Participation requirements ==&lt;br /&gt;
&lt;br /&gt;
=== Assign copyright and license under the LGPL ===&lt;br /&gt;
Per the GSoC [http://code.google.com/support/bin/answer.py?answer=60328&amp;amp;topic=10728 FAQ], BZFlag requires that any work performed and provided while participating in BZFlag development will be in accordance with BZFlag&#039;s existing [http://bzflag.cvs.sourceforge.net/*checkout*/bzflag/bzflag/COPYING license] (&#039;&#039;&#039;LGPL&#039;&#039;&#039;) and that full nonexclusive copyright will be assigned to Tim Riker, the project copyright holder.&lt;br /&gt;
&lt;br /&gt;
=== Provide weekly progress reports ===&lt;br /&gt;
In addition to any communications you hold with a given mentor, the administrator, or any of the developers, it will be expected of all students that they will &#039;&#039;submit a brief progress report&#039;&#039; on a &#039;&#039;&#039;weekly&#039;&#039;&#039; basis.  These reports won&#039;t need to be more than a few sentences (or at most a couple of paragraphs, whatever is appropriate) but the reports should give an indication of your overall progress, things you discover, tasks completed, difficulties encountered, milestones reached, and other similar details on your activities.  You will be expected to complete a report every week, at least once a week.  More information on the exact method for providing these reports will be provided after the projects commence.&lt;br /&gt;
&lt;br /&gt;
=== List your milestones ===&lt;br /&gt;
All projects will be required to submit a &#039;&#039;&#039;minimum&#039;&#039;&#039; of three and a maximum of ten &#039;&#039;milestones&#039;&#039; for your project.  These are not deliverables but, rather, are overall tasks that should be completed throughout the duration of your work.  These should be necessary implementation steps and not include any research or familiarity phases.  In the end, there is code that must be produced and your milestones should be a (very) rough breakdown for estimating your actual implementation progress.  These milestones should be &#039;&#039;&#039;published in your first progress report,&#039;&#039;&#039; that is, at the beginning of code development (before, on or very soon after May 28).&lt;br /&gt;
&lt;br /&gt;
=== Be available via IRC ===&lt;br /&gt;
All students will be expected to &#039;&#039;&#039;join the #bzflag IRC channel&#039;&#039;&#039; on irc.freenode.net while they are working.  Students are expected to &#039;&#039;&#039;be on&#039;&#039;&#039; the channel so they can be responsive and available to the questions, inquiries, and suggestions of other BZFlag developers.  BZFlag development occurs &#039;&#039;entirely&#039;&#039; over IRC as it is the central gathering forum for core development activities, developer discussions, and more.  See [http://irchelp.org here] if you are new to IRC and need assistance finding a client (or just do a search).  Interaction via IRC is &#039;&#039;&#039;required&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Create a Sourceforge account ===&lt;br /&gt;
BZFlag sources live in a Subversion repository on Sourceforge.  You will need a Sourceforge account and will be expected to abide by the same coding requirements of the other existing developers.  You will similarly be expected to know the basics of how to work with SVN and check in changes, resolve conflicts, and apply patches as needed.  SVN has a nearly identical interface to CVS -- if you&#039;re familiar with CVS, then you should be fine.  If you don&#039;t have a Sourceforge account, be sure to get one and familiarize yourself with BZFlag&#039;s sourceforge [http://sf.net/projects/bzflag/ account].  Whether students work on a branch or on the mainline will vary depending on the student and the project.&lt;br /&gt;
&lt;br /&gt;
=== Evaluate your performance ===&lt;br /&gt;
Particularly for projects that interact with the client or server run-loop or affect networking (but also for others), &#039;&#039;&#039;quantitatively evaluate your performance&#039;&#039;&#039; and the impact your modifications will make.  Don&#039;t prematurely optimize and don&#039;t over-architect, but also don&#039;t make guesses or assumptions either.  Use a performance profiler, test your code, add temporary debug timers, have a peer review your approach, etc.  Modifications to the game client and network code that detrimentally impact performance in non-optional ways will likely be rejected outright.&lt;br /&gt;
 &lt;br /&gt;
=== Write maintainable code ===&lt;br /&gt;
This requirement cannot be stressed enough.  One of the primary evaluation criteria for all students is how maintainable is the end result.  This is not only maintainability from the stand-point of source code longevity as it stands written, but also involves other higher-level maintainability and integration aspects.  Does your implementation use interfaces, languages, tools, or techniques that introduce some new requirement to widespread BZFlag development?  If so, that choice needs to be discussed and &#039;&#039;&#039;justified&#039;&#039;&#039; or otherwise mitigated as a concern.  Any usage of external dependencies needs to be consensus approved by the core developers.  Is your code comprehensive and comprehensible?  Well-documented?  Organized?  You are required to follow BZFlag&#039;s [http://bzflag.cvs.sourceforge.net/*checkout*/bzflag/bzflag/DEVINFO existing] developer guidelines, existing code style, and established conventions.&lt;br /&gt;
&lt;br /&gt;
=== Write portable code ===&lt;br /&gt;
BZFlag has an extensive heritage of being as portable as reasonably possible with effort continually being taken to make sure the entire codebase works on a vareity of compilation and run-time environments.  While each developer&#039;s perception of what is &#039;&#039;reasonable&#039;&#039; certainly fluctuates over the years and from developer to developer, the general intention is that code written for BZFlag should function the &#039;&#039;&#039;same&#039;&#039;&#039; on most moderately popular operating system environments as much as possible including Linux, Mac OS X, and Windows as well as other platforms.   It is each developer&#039;s responsibility to either make sure their code isn&#039;t platform-specific or that equivalent functionality is provided on other maintained platforms.  You are expected to interact with other developers when portability issues are raised to resolve any problems.  Portability of any dependencies being used must similarly be taken into account and relates to the aforementioned maintainability requirement.&lt;br /&gt;
&lt;br /&gt;
=== Write complete code ===&lt;br /&gt;
Perhaps treat each week like it is your last.  You should be able to hand over functional code over just about any time during development (within a day or so) to another developer.  Focus on completing tasks, completing code features, and working on keeping your code functional at &#039;&#039;&#039;all&#039;&#039;&#039; stages of development.  That way, no matter how far you get on your milestones or deliverable(s), other developers will be able to review, test, and readily integrate your code.  Plan your development approach accordingly.  You should generally not &amp;quot;stub&amp;quot; code functionality (though comments are good), but instead focus on coding &amp;quot;deep&amp;quot; instead of &amp;quot;wide&amp;quot;.  It&#039;s generally preferred to have 2 features that work fully, than 5 features that half-work or even 20 features that are all 90% complete.&lt;br /&gt;
&lt;br /&gt;
== Pre-Flight Participation Checklist ==&lt;br /&gt;
&lt;br /&gt;
* Read and agree to the above requirements&lt;br /&gt;
* Join the #bzflag IRC channel and introduce yourself&lt;br /&gt;
* Create a Sourceforge account&lt;br /&gt;
* Be familiar with the basics of Subversion (aka SVN).&lt;br /&gt;
* Compile and run BZFlag from source&lt;br /&gt;
* Prepare a patch&lt;br /&gt;
** [http://my.bzflag.org/w/BZFlag_SVN Checkout sources] from SVN&lt;br /&gt;
** Familiarize yourself with the basic [http://my.bzflag.org/w/BZFlag_Source source layout]&lt;br /&gt;
** Compile&lt;br /&gt;
** Play&lt;br /&gt;
* Familiarize yourself with BZFlag&#039;s on-line websites and services&lt;br /&gt;
** http://bzflag.org&lt;br /&gt;
** http://my.bzflag.org&lt;br /&gt;
** http://my.bzflag.org/bb/&lt;br /&gt;
** http://my.bzflag.org/w/&lt;br /&gt;
** http://sf.net/projects/bzflag&lt;br /&gt;
* Create a list of 3 to 10 milestones&lt;br /&gt;
* Document your milestones&lt;br /&gt;
* Submit your application&lt;br /&gt;
** Include a link to your patch&lt;br /&gt;
** Include your IRC handle&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code/Application_Guidelines&amp;diff=10088</id>
		<title>Google Summer of Code/Application Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code/Application_Guidelines&amp;diff=10088"/>
		<updated>2025-12-07T01:09:10Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Google Summer of Code/Application Guidelines to Google Summer of Code: Application Guidelines: let&amp;#039;s standardize the pages a bit with &amp;#039;&amp;#039;&amp;#039;Google Summer of Code:&amp;#039;&amp;#039;&amp;#039; as prefix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Google Summer of Code: Application Guidelines]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_Application_Guidelines&amp;diff=10087</id>
		<title>Google Summer of Code: Application Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_Application_Guidelines&amp;diff=10087"/>
		<updated>2025-12-07T01:09:10Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Google Summer of Code/Application Guidelines to Google Summer of Code: Application Guidelines: let&amp;#039;s standardize the pages a bit with &amp;#039;&amp;#039;&amp;#039;Google Summer of Code:&amp;#039;&amp;#039;&amp;#039; as prefix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There is intentionally no specific format that students need to use to apply to BZFlag.  There are, however, several things that you should and should not do when applying.&lt;br /&gt;
&lt;br /&gt;
= Do&#039;s =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be Detailed and Articulate.&#039;&#039;&#039;  Go into detail about what you intend to do and how you intend to do it.  Don&#039;t have typos and be clear in your writing.  Cite academic references if they&#039;re relevant to your work.  Create diagrams, show prototypes, create mock-up visuals, and provide more information via external links.  You don&#039;t have to solve everything, but we need to see that you&#039;ve thought things through.  Impress us.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Get Involved Early.&#039;&#039;&#039;  You need to join our IRC channel, play the game, and get involved in our community.  Talk to the other developers, find a mentor that likes your proposal idea.  Don&#039;t forget to mention your IRC nick in your application.  We interact with a lot of people so give us a personality that we can recognize when it comes to reviewing the applications.  Communicate early, communicate often.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be Bold.&#039;&#039;&#039;  We love new innovative ideas.  You should make sure your idea fits into the scope of our project and is something we&#039;re interested in mentoring, but new projects are welcome.  If your proposal is for one of our ideas, be innovative and ambitious in your solution. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be Realistic.&#039;&#039;&#039;  Make sure the scope of your work is feasible and that you will have the necessary skills to implement your project on time.  Don&#039;t be so bold that you are unrealistic, keep your abilities and time constraints in mind.  If you&#039;ve got another part-time or full-time job, you probably won&#039;t be able to put in the effort or time necessary.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be Passionate.&#039;&#039;&#039;  Show enthusiasm for your idea.  Be excited to work with us.  Excitement and passion are never a substitute for competence, but they vastly help your chances all other factors being equal.  Express your passion and any background information about yourself that reinforces your interests.&lt;br /&gt;
&lt;br /&gt;
= Don&#039;ts =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Don&#039;t copy/paste our ideas.&#039;&#039;&#039;  If all you have to say about the idea is what we&#039;ve said, it will be rejected.  They are just meant to be starting points.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Don&#039;t be brief.&#039;&#039;&#039;  Anticipate questions, include details.  If your application isn&#039;t any more than a few hundred words or less, then you&#039;re probably not including useful/necessary detail about the project, your plans, or yourself.  Brief proposals very quickly get cut, especially when compared to proposals in similar areas that do include detail.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Don&#039;t forget to tell us about yourself.&#039;&#039;&#039;  Most of what we know about you and your abilities is going to come from your application.  Include details about your background, experience, and anything else relevant to your work.  If you have obligations that will impact your proposal, be upfront.  You should be interacting with our community on IRC long before you submit your proposal so we have an idea how you interact.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Don&#039;t be intimidated.&#039;&#039;&#039;  Your ideas will be questioned and critiqued.  We don&#039;t all agree, even amongst ourselves often.  You will need to be able to openly and publicly talk about your ideas without being defensive.  Be open to the ideas and suggestions of others and be willing to amicably engage in discussions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Don&#039;t be discouraged.&#039;&#039;&#039;  During the application process, we receive a lot of applications.  Be patient.  If we don&#039;t respond to your application for more information, it usually means that it&#039;s either really bad or really good.  Understand that we have a lot to sort through and discuss.  It&#039;s a very competitive process given we can only accept a limited number of students.  If you have specific questions, engage the mentors over IRC.&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code/2009&amp;diff=10086</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=10086"/>
		<updated>2025-12-07T01:07:52Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Google Summer of Code/2009 to Google Summer of Code: 2009: let&amp;#039;s standardize the pages a bit with &amp;#039;&amp;#039;&amp;#039;Google Summer of Code:&amp;#039;&amp;#039;&amp;#039; as prefix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Google Summer of Code: 2009]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_2009&amp;diff=10085</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=10085"/>
		<updated>2025-12-07T01:07:52Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Google Summer of Code/2009 to Google Summer of Code: 2009: let&amp;#039;s standardize the pages a bit with &amp;#039;&amp;#039;&amp;#039;Google Summer of Code:&amp;#039;&amp;#039;&amp;#039; as prefix&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 accepted 4 student project proposals for 2009.&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 plug-in.  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 3-D 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;
=== 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>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Talk:Google_Summer_of_Code/2008&amp;diff=10084</id>
		<title>Talk:Google Summer of Code/2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Talk:Google_Summer_of_Code/2008&amp;diff=10084"/>
		<updated>2025-12-07T01:07:12Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Talk:Google Summer of Code/2008 to Talk:Google Summer of Code: 2008: let&amp;#039;s standardize the pages a bit with &amp;#039;&amp;#039;&amp;#039;Google Summer of Code:&amp;#039;&amp;#039;&amp;#039; as prefix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Talk:Google Summer of Code: 2008]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Talk:Google_Summer_of_Code:_2008&amp;diff=10083</id>
		<title>Talk:Google Summer of Code: 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Talk:Google_Summer_of_Code:_2008&amp;diff=10083"/>
		<updated>2025-12-07T01:07:12Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Talk:Google Summer of Code/2008 to Talk:Google Summer of Code: 2008: let&amp;#039;s standardize the pages a bit with &amp;#039;&amp;#039;&amp;#039;Google Summer of Code:&amp;#039;&amp;#039;&amp;#039; as prefix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is informational only.  There are no wrong answers.  This is more just to get a visual on what we&#039;re all thinking.  Rank what you feel the top five projects ideas from most important to least with a 1, 2, 3, 4, and 5 respectively.  Your ranking criteria for determining importance are:&lt;br /&gt;
&lt;br /&gt;
 1) projects that are &#039;&#039;needed&#039;&#039; for BZFlag&#039;s long-term development&lt;br /&gt;
 2) projects that are &#039;&#039;wanted&#039;&#039; due to features or capabilities they provide&lt;br /&gt;
 3) projects that will make the most &#039;&#039;impact&#039;&#039; on our users&lt;br /&gt;
 4) those that are likely to be &#039;&#039;successfully&#039;&#039; worked on over three months by a student remembering that the scope can be defined/reduced as needed&lt;br /&gt;
 5) ideas that are of specific interest to you as a dev that warrant involving others in your evil aspirations&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Only mark your top five&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Also, anyone not listed that would like to share their importance ordering is QUITE WELCOME to add their name and numbers to the table.&lt;br /&gt;
&lt;br /&gt;
{|- border=&amp;quot;1&amp;quot;&lt;br /&gt;
! PROJECT&lt;br /&gt;
! dtremenak&lt;br /&gt;
! jeffm&lt;br /&gt;
! jbdigriz&lt;br /&gt;
! spldart&lt;br /&gt;
! blast&lt;br /&gt;
! sean&lt;br /&gt;
! Mr_Burns&lt;br /&gt;
! [...]&lt;br /&gt;
|-&lt;br /&gt;
! Enhanced Statistics system&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! Dead Reckoning &amp;amp; Networking&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! Modularization of Game Logic&lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! Global Authentication Daemon&lt;br /&gt;
| 2&lt;br /&gt;
| 2&lt;br /&gt;
| 3&lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| 3&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! BZWorkBench World Editor&lt;br /&gt;
| 3&lt;br /&gt;
| 4&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 3&lt;br /&gt;
| 4&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! Enhanced Server Listing&lt;br /&gt;
| &lt;br /&gt;
| 3&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! Multiple Display Support&lt;br /&gt;
| 4&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! In-game Profile Management&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! BZFS Web Interface&lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 4&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! Network Testing Framework&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! Cross Server Communications System&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! Cheat Preventions&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code/2008&amp;diff=10082</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=10082"/>
		<updated>2025-12-07T01:07:12Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Google Summer of Code/2008 to Google Summer of Code: 2008: let&amp;#039;s standardize the pages a bit with &amp;#039;&amp;#039;&amp;#039;Google Summer of Code:&amp;#039;&amp;#039;&amp;#039; as prefix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Google Summer of Code: 2008]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_2008&amp;diff=10081</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=10081"/>
		<updated>2025-12-07T01:07:12Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Google Summer of Code/2008 to Google Summer of Code: 2008: let&amp;#039;s standardize the pages a bit with &amp;#039;&amp;#039;&amp;#039;Google Summer of Code:&amp;#039;&amp;#039;&amp;#039; as prefix&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;
== 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;
= 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;br /&gt;
[[Category: Summer Of Code 2008]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=GSoC:_Evaluation&amp;diff=10080</id>
		<title>GSoC: Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=GSoC:_Evaluation&amp;diff=10080"/>
		<updated>2025-12-07T01:06:00Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page GSoC: Evaluation to Google Summer of Code: Evaluation: shorthand GSoC doesn&amp;#039;t look too good for page titles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Google Summer of Code: Evaluation]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_Evaluation&amp;diff=10079</id>
		<title>Google Summer of Code: Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_Evaluation&amp;diff=10079"/>
		<updated>2025-12-07T01:06:00Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page GSoC: Evaluation to Google Summer of Code: Evaluation: shorthand GSoC doesn&amp;#039;t look too good for page titles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In order to help consistently, effectively, and efficiently evaluate GSoC student applications, specific evaluation criteria should be used by project mentors.  GSoC applications are to be scored on a scale of &#039;&#039;&#039;0 to 6&#039;&#039;&#039; where 0 is a &#039;&#039;poor candidate&#039;&#039; that meets no evaluation criteria and 6 would indicate a &#039;&#039;perfect candidate&#039;&#039; that fulfills all criteria.&lt;br /&gt;
&lt;br /&gt;
In order to score applications, each mentor needs to indicate the project(s) they would be willing to mentor by selecting the &amp;quot;I am willing to Mentor&amp;quot; button on the mentor dashboard.  For scoring an application, apply the below 6 evaluation criteria and evaluate a judgement scoring between 0.0 and 1.0 for each.  Round the cumulative score to the closest integer when ranking.   &#039;&#039;&#039;&#039;&#039;Only rank applications you are willing to mentor.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Evaluation Criteria =&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Significance:&#039;&#039;&#039; Application Impact and Relevance&lt;br /&gt;
** How many people would the proposal prospectively benefit?&lt;br /&gt;
** Does it have benefits outside of our community?&lt;br /&gt;
* &#039;&#039;&#039;Approach:&#039;&#039;&#039; Application Quality and Feasibility&lt;br /&gt;
** How well is their application written?&lt;br /&gt;
** Does what they propose seem reasonable?&lt;br /&gt;
* &#039;&#039;&#039;Visibility:&#039;&#039;&#039; Responsive and Engaging&lt;br /&gt;
** Have they been active in the channel?&lt;br /&gt;
** Do they respond to questions and engage in discussions?&lt;br /&gt;
* &#039;&#039;&#039;Charisma:&#039;&#039;&#039; Personality and Ease-of-Interaction&lt;br /&gt;
** Are they easy to talk to?&lt;br /&gt;
** How well do they interact with others?&lt;br /&gt;
* &#039;&#039;&#039;Potential:&#039;&#039;&#039; Long Term Developer Karma&lt;br /&gt;
** Are they excited about working on BZFlag?&lt;br /&gt;
** Perceived chance that they will stick around and keep coding?&lt;br /&gt;
* &#039;&#039;&#039;Ability:&#039;&#039;&#039; Technical Coding Aptitude&lt;br /&gt;
** How impressive is their patch?&lt;br /&gt;
** Can they actually write code?&lt;br /&gt;
&lt;br /&gt;
= Notes =&lt;br /&gt;
&lt;br /&gt;
The Google mentor evaluation form allows for three positive and two negative evaluation levels (in addition to unevaluated/zero):  &#039;&#039;&#039;+4 +2 +1 -1 -2&#039;&#039;&#039;.  The sum of all your rank selections should equal more than 0 and less than 7.  Additionally:&lt;br /&gt;
&lt;br /&gt;
* Do not use negative scores except to correct or adjust your own evaluation.&lt;br /&gt;
* Do not adjust or compensate for other mentor scores (up or down) even to correct an obvious mistake.&lt;br /&gt;
* Do not evaluate them if you don&#039;t care for their proposal and/or don&#039;t really intend to mentor that student.&lt;br /&gt;
* Do not base your evaluation on the evaluations and comments of others. &lt;br /&gt;
&lt;br /&gt;
Scores for each application will be &#039;&#039;&#039;averaged&#039;&#039;&#039; and &#039;&#039;weighted by mentor assignments&#039;&#039; after evaluations are complete and plugged into a spreadsheet for group review before the final ordering.&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=GSoC:_2007&amp;diff=10078</id>
		<title>GSoC: 2007</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=GSoC:_2007&amp;diff=10078"/>
		<updated>2025-12-07T01:05:19Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page GSoC: 2007 to Google Summer of Code: 2007: shorthand GSoC doesn&amp;#039;t look good.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Google Summer of Code: 2007]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_2007&amp;diff=10077</id>
		<title>Google Summer of Code: 2007</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_2007&amp;diff=10077"/>
		<updated>2025-12-07T01:05:19Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page GSoC: 2007 to Google Summer of Code: 2007: shorthand GSoC doesn&amp;#039;t look good.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BZFlag participated in the 2007 [[Google Summer of Code]].  In 2007, Google funded approximately 800 students across approximately 135 participating mentoring organizations, including BZFlag.  A detailed after-the-fact discussion and analysis of BZFlag&#039;s first-year participation in the 2007 Google Summer of Code is included in the article &#039;&#039;&#039;&#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;&#039;&#039;&#039; by Sean Morrison.  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;
{|align=&amp;quot;right&amp;quot;&lt;br /&gt;
 |[[Image:Gsoc_postmortem_preview.png|thumb|left|512px|http://my.bzflag.org/gsoc/bzflag_gsoc2007_post_mortem.pdf]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
= Preparing an Application =&lt;br /&gt;
&lt;br /&gt;
There was no specific format to applications, but they were told that they should be detailed in their approach and background information about themselves.  They were supposed to state specifically what they intend to deliver and any implementation details they felt relevant such as what language they intend to use.  C/C++ proposals were preferred though others were considered.  Students that just submitted the summaries contained below did not do very well.  If you talked with us on IRC about your SoC proposal, you were supposed to include your IRC nickname somewhere in your proposal.&lt;br /&gt;
&lt;br /&gt;
Early proposal submission was encouraged as it gave us more time to review your proposal in detail, comment on them, and potentially ask for additional input.  Submitting closer to the deadline wasn&#039;t a negative consideration as all submissions were be predominantly judged on their merit, but submitting and discussing early was an advantage for submissions that were similar to other submissions.  &lt;br /&gt;
&lt;br /&gt;
Students were 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;
We received a total of 45 proposals for the 2007 program that were then reviewed, evaluated, and critiqued.  Of those applications, only &#039;&#039;&#039;four&#039;&#039;&#039; could be selected to work on BZFlag.  There were about 20 really good proposals overall, making the selection process very competitive and difficult.  &#039;&#039;This cannot be stressed enough..&#039;&#039;  It was really hard to narrow down the submissions but in the end we did have only so many slots to work with and the line eventually had to be drawn.  Every application was read multiple times and reviewed in detail.  We thank &#039;&#039;&#039;everyone&#039;&#039;&#039; that submitted 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 were 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 was made of students that were 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 were 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;
The projects that were accepted are as follows:&lt;br /&gt;
&lt;br /&gt;
== Graphical BZFlag Map Editor ==&lt;br /&gt;
=== Jude Nelson (jude-) ===&lt;br /&gt;
&lt;br /&gt;
BZFlag does not yet have a sufficient graphical world map editor.  That is to say that while there have been many over the years, they all fall into obsolescence or are less than ideal due to other constraints upon their use).  While some existing editors come very close, it is usually the case that they do not fully support advanced map features, require the users to have a programmer&#039;s understanding of the file format, are not well documented, are very platform-specific, or are outright obsolete.  This is problematic to the BZFlag community in that it hinders less technically-inclined users from developing worlds.  To support this need, the proposed work aims to implement such an editor that should allow users to quickly create worlds in a visual manner, provide a GUI to easily manipulate all features of BZW, provide intuitive and interactive visualizations of all map data, and allow for easy extendibility to ensure future BZW compatibility. Additionally, to encompass a larger user base, it will be developed using cross-platform toolkits, allowing it to be easily ported between operating systems and ideally support the same target operating systems as BZFlag itself.&lt;br /&gt;
&lt;br /&gt;
== Random Procedural World Generator ==&lt;br /&gt;
=== Kornel Kisielewicz (Epyon) ===&lt;br /&gt;
&lt;br /&gt;
Although BZFlag implements a poor man&#039;s random map generator as default, most players prefer to play on user made maps. The reason is simple -- the primitive scattering algorithm implemented in BZF&#039;s random map generation is, well, simple and limited.  Creating a nice looking and fun-to-play map by hand, however, is a non-trivial task too. In order to really enjoy playing BZFlag, you need to search for good levels in the community, and even those can get boring after a while because you learn their layout or their popularity diminishes.  Moreover, players who know the map well have an unfair advantage when playing against people who see the map for the first time.  Moreover still, if you want to set up your own server, the task of creating your own map by hand can be rather complicated and involved.&lt;br /&gt;
&lt;br /&gt;
== Community Messaging System ==&lt;br /&gt;
=== Chris Wible (L4m3r) ===&lt;br /&gt;
&lt;br /&gt;
BZFlag has efficient in-game chat among players on a server. However, it&#039;s currently difficult to reach a player from outside the game, or to communicate without actually joining a server.  By implementing a more sophisticated community messaging system, players will be able to contact one another across servers and outside of gameplay, all from within the game client.  This will allow players to get together in a common place to schedule matches as well as provide a general &#039;&#039;global chat&#039;&#039; mechanism for the game.&lt;br /&gt;
&lt;br /&gt;
== Programmable Computer Player Client ==&lt;br /&gt;
=== Jørgen Pedersen Tjernø (daxxar) ===&lt;br /&gt;
&lt;br /&gt;
BZFlag has a hard-coded computer player that players can join with or enable in the game client, but the behavior and capabilities of that bot player are rather limited, unchanging, and easily predicted.  This efforts creates an interface for making better BZFlag computer players by building upon the existing &#039;&#039;&#039;exceptional&#039;&#039;&#039; efforts of the [http://bzrc.cs.byu.edu/ BZRC] project (developed and contributed by Andrew McNabb and others at BYU).  This effort aims to provide a fully programmable/scriptable standard interface for controlling a tank through a framework that can be readily distributed and shared.  This interface supports basic artificial intelligence (AI) research and AI education as well.&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 were the specific areas that we were predominantly interested in seeing worked on as part of the GSoC.  Please note that students were also welcome to apply with their own original ideas.  They should have 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 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;
== Headless Artificial Intelligence Agent * ==&lt;br /&gt;
This task involves creating a clean stand-alone version of the game client that is headless (i.e. requires no GUI to run), programmable, and scriptable.  Ideally, a programming interface that is compatible with an existing framework such as the [http://robocode.sourceforge.net/ Robocode] [http://www-128.ibm.com/developerworks/java/library/j-robocode/ API] should be made available for controlling AI tank players so that collaboration with other AI efforts can be leveraged.  A scripting interface (perhaps using [http://www.swig.org/ SWIG]) should be provided on top of that API to allow dynamic control of the AI agents from a scripting language like Python, Ruby, Lua, Tcl, or Perl.&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;
== World file layout and editing application * ==&lt;br /&gt;
This task should produce an application for the creation/modification/arrangement of [[BZW]] map files and objects in a visual manner. The application should be designed in a cross platform compatible manner (ether some existing cross platform framework, or a built in platform system). The application should be able to manage all the existing structures in a [[BZW]] world file.  Ideally, the application should also be able to import 3d meshes from other design applications.  It would not be required to be able to dynamically edit meshes in the application.&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;
{|align=&amp;quot;right&amp;quot;&lt;br /&gt;
 |[[Image:BZGSoC2007 small.gif|thumb|left|512px]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The below flyer was used to help spread the word about our involvement with the Google Summer of Code.  Flyers were translated to other languages that we had mentors for and the students that were selected did end up spanning the globe.  While many developers can converse fluently in other languages, English is still expected for developer discussions but the flyers did help get the word out and inform our own (international) player community as to what was happening.&lt;br /&gt;
&lt;br /&gt;
* English ([http://my.bzflag.org/gsoc/BZGSoC2007.pdf PDF]) ([http://my.bzflag.org/gsoc/BZGSoC2007.png PNG])&lt;br /&gt;
* Deutsch | German  ([http://my.bzflag.org/gsoc/BZGSoC2007_de.pdf PDF]) ([http://my.bzflag.org/gsoc/BZGSoC2007_de.png PNG])&lt;br /&gt;
* Español | Spanish ([http://my.bzflag.org/gsoc/BZGSoC2007_es.pdf PDF]) ([http://my.bzflag.org/gsoc/BZGSoC2007_es.png PNG])&lt;br /&gt;
&lt;br /&gt;
Thanks to Sean Morrison (aka learner) for designing our 2007 GSoC flyer.&lt;br /&gt;
&lt;br /&gt;
= Mentors and Credits =&lt;br /&gt;
&lt;br /&gt;
Thanks to the following BZFlag developers for their participation as mentors:&lt;br /&gt;
&lt;br /&gt;
* Julio Jiménez Borreguero (aka jujibo aka Manu)&lt;br /&gt;
* Sean Morrison (aka learner aka brlcad)&lt;br /&gt;
**  interested in AI and authentication list server services&lt;br /&gt;
* Jeffrey Myers (aka JeffM2501)&lt;br /&gt;
** interested in game editor&lt;br /&gt;
* Daniel Remenak (aka DTRemenak aka Erroneous)&lt;br /&gt;
* Mark Thomas (aka menotume)&lt;br /&gt;
* David Trowbridge (aka purple_cow)&lt;br /&gt;
* Alfredo Tupone (aka c3po)&lt;br /&gt;
** interested in Crystal Space integration&lt;br /&gt;
* David Wollner&lt;br /&gt;
* Andrew McNabb&lt;br /&gt;
* Tim Riker&lt;br /&gt;
* Donna Crawford&lt;br /&gt;
&lt;br /&gt;
Additionally, special thanks to others in #bzflag that have provided support and feedback including:&lt;br /&gt;
&lt;br /&gt;
* a_meteorite and DTRemenak&lt;br /&gt;
** for proofreading and copy editing the GSoC submission&lt;br /&gt;
* JeffM2501 and DTRemenak&lt;br /&gt;
** for proof editing the promotional flyer&lt;br /&gt;
* Saturos&lt;br /&gt;
** for translating the promotional flyer to German&lt;br /&gt;
* quantumdot and Manu&lt;br /&gt;
** for translating the promotional flyer to Spanish&lt;br /&gt;
* others...&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code/2007&amp;diff=10076</id>
		<title>Google Summer of Code/2007</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code/2007&amp;diff=10076"/>
		<updated>2025-12-07T01:03:13Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Google Summer of Code/2007 to GSoC: 2007: let&amp;#039;s make Google Summer of Code the main page, with subcategories and pages prefixed with &amp;#039;&amp;#039;&amp;#039;GSoC:&amp;#039;&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[GSoC: 2007]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_2007&amp;diff=10075</id>
		<title>Google Summer of Code: 2007</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_2007&amp;diff=10075"/>
		<updated>2025-12-07T01:03:13Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Google Summer of Code/2007 to GSoC: 2007: let&amp;#039;s make Google Summer of Code the main page, with subcategories and pages prefixed with &amp;#039;&amp;#039;&amp;#039;GSoC:&amp;#039;&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BZFlag participated in the 2007 [[Google Summer of Code]].  In 2007, Google funded approximately 800 students across approximately 135 participating mentoring organizations, including BZFlag.  A detailed after-the-fact discussion and analysis of BZFlag&#039;s first-year participation in the 2007 Google Summer of Code is included in the article &#039;&#039;&#039;&#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;&#039;&#039;&#039; by Sean Morrison.  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;
{|align=&amp;quot;right&amp;quot;&lt;br /&gt;
 |[[Image:Gsoc_postmortem_preview.png|thumb|left|512px|http://my.bzflag.org/gsoc/bzflag_gsoc2007_post_mortem.pdf]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
= Preparing an Application =&lt;br /&gt;
&lt;br /&gt;
There was no specific format to applications, but they were told that they should be detailed in their approach and background information about themselves.  They were supposed to state specifically what they intend to deliver and any implementation details they felt relevant such as what language they intend to use.  C/C++ proposals were preferred though others were considered.  Students that just submitted the summaries contained below did not do very well.  If you talked with us on IRC about your SoC proposal, you were supposed to include your IRC nickname somewhere in your proposal.&lt;br /&gt;
&lt;br /&gt;
Early proposal submission was encouraged as it gave us more time to review your proposal in detail, comment on them, and potentially ask for additional input.  Submitting closer to the deadline wasn&#039;t a negative consideration as all submissions were be predominantly judged on their merit, but submitting and discussing early was an advantage for submissions that were similar to other submissions.  &lt;br /&gt;
&lt;br /&gt;
Students were 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;
We received a total of 45 proposals for the 2007 program that were then reviewed, evaluated, and critiqued.  Of those applications, only &#039;&#039;&#039;four&#039;&#039;&#039; could be selected to work on BZFlag.  There were about 20 really good proposals overall, making the selection process very competitive and difficult.  &#039;&#039;This cannot be stressed enough..&#039;&#039;  It was really hard to narrow down the submissions but in the end we did have only so many slots to work with and the line eventually had to be drawn.  Every application was read multiple times and reviewed in detail.  We thank &#039;&#039;&#039;everyone&#039;&#039;&#039; that submitted 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 were 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 was made of students that were 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 were 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;
The projects that were accepted are as follows:&lt;br /&gt;
&lt;br /&gt;
== Graphical BZFlag Map Editor ==&lt;br /&gt;
=== Jude Nelson (jude-) ===&lt;br /&gt;
&lt;br /&gt;
BZFlag does not yet have a sufficient graphical world map editor.  That is to say that while there have been many over the years, they all fall into obsolescence or are less than ideal due to other constraints upon their use).  While some existing editors come very close, it is usually the case that they do not fully support advanced map features, require the users to have a programmer&#039;s understanding of the file format, are not well documented, are very platform-specific, or are outright obsolete.  This is problematic to the BZFlag community in that it hinders less technically-inclined users from developing worlds.  To support this need, the proposed work aims to implement such an editor that should allow users to quickly create worlds in a visual manner, provide a GUI to easily manipulate all features of BZW, provide intuitive and interactive visualizations of all map data, and allow for easy extendibility to ensure future BZW compatibility. Additionally, to encompass a larger user base, it will be developed using cross-platform toolkits, allowing it to be easily ported between operating systems and ideally support the same target operating systems as BZFlag itself.&lt;br /&gt;
&lt;br /&gt;
== Random Procedural World Generator ==&lt;br /&gt;
=== Kornel Kisielewicz (Epyon) ===&lt;br /&gt;
&lt;br /&gt;
Although BZFlag implements a poor man&#039;s random map generator as default, most players prefer to play on user made maps. The reason is simple -- the primitive scattering algorithm implemented in BZF&#039;s random map generation is, well, simple and limited.  Creating a nice looking and fun-to-play map by hand, however, is a non-trivial task too. In order to really enjoy playing BZFlag, you need to search for good levels in the community, and even those can get boring after a while because you learn their layout or their popularity diminishes.  Moreover, players who know the map well have an unfair advantage when playing against people who see the map for the first time.  Moreover still, if you want to set up your own server, the task of creating your own map by hand can be rather complicated and involved.&lt;br /&gt;
&lt;br /&gt;
== Community Messaging System ==&lt;br /&gt;
=== Chris Wible (L4m3r) ===&lt;br /&gt;
&lt;br /&gt;
BZFlag has efficient in-game chat among players on a server. However, it&#039;s currently difficult to reach a player from outside the game, or to communicate without actually joining a server.  By implementing a more sophisticated community messaging system, players will be able to contact one another across servers and outside of gameplay, all from within the game client.  This will allow players to get together in a common place to schedule matches as well as provide a general &#039;&#039;global chat&#039;&#039; mechanism for the game.&lt;br /&gt;
&lt;br /&gt;
== Programmable Computer Player Client ==&lt;br /&gt;
=== Jørgen Pedersen Tjernø (daxxar) ===&lt;br /&gt;
&lt;br /&gt;
BZFlag has a hard-coded computer player that players can join with or enable in the game client, but the behavior and capabilities of that bot player are rather limited, unchanging, and easily predicted.  This efforts creates an interface for making better BZFlag computer players by building upon the existing &#039;&#039;&#039;exceptional&#039;&#039;&#039; efforts of the [http://bzrc.cs.byu.edu/ BZRC] project (developed and contributed by Andrew McNabb and others at BYU).  This effort aims to provide a fully programmable/scriptable standard interface for controlling a tank through a framework that can be readily distributed and shared.  This interface supports basic artificial intelligence (AI) research and AI education as well.&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 were the specific areas that we were predominantly interested in seeing worked on as part of the GSoC.  Please note that students were also welcome to apply with their own original ideas.  They should have 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 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;
== Headless Artificial Intelligence Agent * ==&lt;br /&gt;
This task involves creating a clean stand-alone version of the game client that is headless (i.e. requires no GUI to run), programmable, and scriptable.  Ideally, a programming interface that is compatible with an existing framework such as the [http://robocode.sourceforge.net/ Robocode] [http://www-128.ibm.com/developerworks/java/library/j-robocode/ API] should be made available for controlling AI tank players so that collaboration with other AI efforts can be leveraged.  A scripting interface (perhaps using [http://www.swig.org/ SWIG]) should be provided on top of that API to allow dynamic control of the AI agents from a scripting language like Python, Ruby, Lua, Tcl, or Perl.&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;
== World file layout and editing application * ==&lt;br /&gt;
This task should produce an application for the creation/modification/arrangement of [[BZW]] map files and objects in a visual manner. The application should be designed in a cross platform compatible manner (ether some existing cross platform framework, or a built in platform system). The application should be able to manage all the existing structures in a [[BZW]] world file.  Ideally, the application should also be able to import 3d meshes from other design applications.  It would not be required to be able to dynamically edit meshes in the application.&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;
{|align=&amp;quot;right&amp;quot;&lt;br /&gt;
 |[[Image:BZGSoC2007 small.gif|thumb|left|512px]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The below flyer was used to help spread the word about our involvement with the Google Summer of Code.  Flyers were translated to other languages that we had mentors for and the students that were selected did end up spanning the globe.  While many developers can converse fluently in other languages, English is still expected for developer discussions but the flyers did help get the word out and inform our own (international) player community as to what was happening.&lt;br /&gt;
&lt;br /&gt;
* English ([http://my.bzflag.org/gsoc/BZGSoC2007.pdf PDF]) ([http://my.bzflag.org/gsoc/BZGSoC2007.png PNG])&lt;br /&gt;
* Deutsch | German  ([http://my.bzflag.org/gsoc/BZGSoC2007_de.pdf PDF]) ([http://my.bzflag.org/gsoc/BZGSoC2007_de.png PNG])&lt;br /&gt;
* Español | Spanish ([http://my.bzflag.org/gsoc/BZGSoC2007_es.pdf PDF]) ([http://my.bzflag.org/gsoc/BZGSoC2007_es.png PNG])&lt;br /&gt;
&lt;br /&gt;
Thanks to Sean Morrison (aka learner) for designing our 2007 GSoC flyer.&lt;br /&gt;
&lt;br /&gt;
= Mentors and Credits =&lt;br /&gt;
&lt;br /&gt;
Thanks to the following BZFlag developers for their participation as mentors:&lt;br /&gt;
&lt;br /&gt;
* Julio Jiménez Borreguero (aka jujibo aka Manu)&lt;br /&gt;
* Sean Morrison (aka learner aka brlcad)&lt;br /&gt;
**  interested in AI and authentication list server services&lt;br /&gt;
* Jeffrey Myers (aka JeffM2501)&lt;br /&gt;
** interested in game editor&lt;br /&gt;
* Daniel Remenak (aka DTRemenak aka Erroneous)&lt;br /&gt;
* Mark Thomas (aka menotume)&lt;br /&gt;
* David Trowbridge (aka purple_cow)&lt;br /&gt;
* Alfredo Tupone (aka c3po)&lt;br /&gt;
** interested in Crystal Space integration&lt;br /&gt;
* David Wollner&lt;br /&gt;
* Andrew McNabb&lt;br /&gt;
* Tim Riker&lt;br /&gt;
* Donna Crawford&lt;br /&gt;
&lt;br /&gt;
Additionally, special thanks to others in #bzflag that have provided support and feedback including:&lt;br /&gt;
&lt;br /&gt;
* a_meteorite and DTRemenak&lt;br /&gt;
** for proofreading and copy editing the GSoC submission&lt;br /&gt;
* JeffM2501 and DTRemenak&lt;br /&gt;
** for proof editing the promotional flyer&lt;br /&gt;
* Saturos&lt;br /&gt;
** for translating the promotional flyer to German&lt;br /&gt;
* quantumdot and Manu&lt;br /&gt;
** for translating the promotional flyer to Spanish&lt;br /&gt;
* others...&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code_Evaluation&amp;diff=10074</id>
		<title>Google Summer of Code Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code_Evaluation&amp;diff=10074"/>
		<updated>2025-12-07T01:01:55Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Google Summer of Code Evaluation to GSoC: Evaluation: let&amp;#039;s make Google Summer of Code the main page, with subcategories and pages prefixed with &amp;#039;&amp;#039;&amp;#039;GSoC:&amp;#039;&amp;#039;&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[GSoC: Evaluation]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_Evaluation&amp;diff=10073</id>
		<title>Google Summer of Code: Evaluation</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code:_Evaluation&amp;diff=10073"/>
		<updated>2025-12-07T01:01:55Z</updated>

		<summary type="html">&lt;p&gt;Zehra: Zehra moved page Google Summer of Code Evaluation to GSoC: Evaluation: let&amp;#039;s make Google Summer of Code the main page, with subcategories and pages prefixed with &amp;#039;&amp;#039;&amp;#039;GSoC:&amp;#039;&amp;#039;&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In order to help consistently, effectively, and efficiently evaluate GSoC student applications, specific evaluation criteria should be used by project mentors.  GSoC applications are to be scored on a scale of &#039;&#039;&#039;0 to 6&#039;&#039;&#039; where 0 is a &#039;&#039;poor candidate&#039;&#039; that meets no evaluation criteria and 6 would indicate a &#039;&#039;perfect candidate&#039;&#039; that fulfills all criteria.&lt;br /&gt;
&lt;br /&gt;
In order to score applications, each mentor needs to indicate the project(s) they would be willing to mentor by selecting the &amp;quot;I am willing to Mentor&amp;quot; button on the mentor dashboard.  For scoring an application, apply the below 6 evaluation criteria and evaluate a judgement scoring between 0.0 and 1.0 for each.  Round the cumulative score to the closest integer when ranking.   &#039;&#039;&#039;&#039;&#039;Only rank applications you are willing to mentor.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Evaluation Criteria =&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Significance:&#039;&#039;&#039; Application Impact and Relevance&lt;br /&gt;
** How many people would the proposal prospectively benefit?&lt;br /&gt;
** Does it have benefits outside of our community?&lt;br /&gt;
* &#039;&#039;&#039;Approach:&#039;&#039;&#039; Application Quality and Feasibility&lt;br /&gt;
** How well is their application written?&lt;br /&gt;
** Does what they propose seem reasonable?&lt;br /&gt;
* &#039;&#039;&#039;Visibility:&#039;&#039;&#039; Responsive and Engaging&lt;br /&gt;
** Have they been active in the channel?&lt;br /&gt;
** Do they respond to questions and engage in discussions?&lt;br /&gt;
* &#039;&#039;&#039;Charisma:&#039;&#039;&#039; Personality and Ease-of-Interaction&lt;br /&gt;
** Are they easy to talk to?&lt;br /&gt;
** How well do they interact with others?&lt;br /&gt;
* &#039;&#039;&#039;Potential:&#039;&#039;&#039; Long Term Developer Karma&lt;br /&gt;
** Are they excited about working on BZFlag?&lt;br /&gt;
** Perceived chance that they will stick around and keep coding?&lt;br /&gt;
* &#039;&#039;&#039;Ability:&#039;&#039;&#039; Technical Coding Aptitude&lt;br /&gt;
** How impressive is their patch?&lt;br /&gt;
** Can they actually write code?&lt;br /&gt;
&lt;br /&gt;
= Notes =&lt;br /&gt;
&lt;br /&gt;
The Google mentor evaluation form allows for three positive and two negative evaluation levels (in addition to unevaluated/zero):  &#039;&#039;&#039;+4 +2 +1 -1 -2&#039;&#039;&#039;.  The sum of all your rank selections should equal more than 0 and less than 7.  Additionally:&lt;br /&gt;
&lt;br /&gt;
* Do not use negative scores except to correct or adjust your own evaluation.&lt;br /&gt;
* Do not adjust or compensate for other mentor scores (up or down) even to correct an obvious mistake.&lt;br /&gt;
* Do not evaluate them if you don&#039;t care for their proposal and/or don&#039;t really intend to mentor that student.&lt;br /&gt;
* Do not base your evaluation on the evaluations and comments of others. &lt;br /&gt;
&lt;br /&gt;
Scores for each application will be &#039;&#039;&#039;averaged&#039;&#039;&#039; and &#039;&#039;weighted by mentor assignments&#039;&#039; after evaluations are complete and plugged into a spreadsheet for group review before the final ordering.&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Google_Summer_of_Code&amp;diff=10072</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=10072"/>
		<updated>2025-12-07T00:52:13Z</updated>

		<summary type="html">&lt;p&gt;Zehra: let&amp;#039;s do a quick note that info is kept for archive purposes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
{{SimpleBox|Note|This information is kept for archive purposes. Links, channels and more may be broken.}}&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
Starting in 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;
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 an excellent opportunity for attracting new long-term BZFlag developers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Attracting and mentoring new long-term developers is our primary goal.&#039;&#039;&#039;&#039;&#039;  If this interests you, please let us know and submit a GSoC application.&lt;br /&gt;
&lt;br /&gt;
=2010=&lt;br /&gt;
BZFlag will not be applying to SOC 2010 in order to concentrate on the release of V3.&lt;br /&gt;
==Past years==&lt;br /&gt;
See&lt;br /&gt;
[[Google_Summer_of_Code/2009|2009 GSoC page]]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code/2008|2008 GSoC page]]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code/2007|2007 GSoC page]]&lt;br /&gt;
&lt;br /&gt;
for past projects.&lt;br /&gt;
&lt;br /&gt;
= Getting started =&lt;br /&gt;
&lt;br /&gt;
* Read this page&lt;br /&gt;
* Read our [[Google Summer of Code/2009|proposal ideas]] page&lt;br /&gt;
* Read our [[Google_Summer_of_Code/Application_Guidelines|application guidelines]]&lt;br /&gt;
* Read our [[Google Summer of Code Acceptance|requirements]]&lt;br /&gt;
* Read our [http://bzflag.svn.sourceforge.net/viewvc/*checkout*/bzflag/trunk/bzflag/DEVINFO DEVINFO] file&lt;br /&gt;
* Join our [[BZFlag on IRC|#bzflag on Freenode]] IRC channel&lt;br /&gt;
* Formulate a proposal idea, communicate with devs&lt;br /&gt;
* [http://sourceforge.net/tracker/?group_id=3248&amp;amp;atid=303248 Submit a patch]&lt;br /&gt;
* Apply!&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 you intend to deliver, a reasonable development timeline, and any implementation details that are relevant such as what language(s) you intend to use.  C/C++ proposals are generally preferred since that is our predominant codebase and developer expertise though others are considered.  See our &#039;&#039;&#039;[[Google_Summer_of_Code/Application_Guidelines|Application Guidelines]]&#039;&#039;&#039; for more details.&lt;br /&gt;
&lt;br /&gt;
Early proposal submissions are encouraged as it gives the mentors more time to review the proposal in detail, comment on it, potentially ask for additional input, and iterate with the student on your 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 do tend to be an advantage if there are others applications that have similar goals.&lt;br /&gt;
&lt;br /&gt;
Students should propose what they actually want to work on, how you intend to work on it, what you intend to DO, what you know about that task, some details about yourself, etc.  Be detailed and articulate.  Brief proposals do not generally do very well.  Your ability to perform the task is outright presumed by the nature of submitting a detailed application.  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;
You may submit more than one application (one application for each project you would enjoy working on) if you so desire.  This can help us when we receive more than one strong proposal for a single project, as generally speaking we will accept only one application for each project.  However, please do not submit proposals for work you will not enjoy doing, and please do not sacrifice quality for quantity.  One good application makes a much better impression than two half-baked applications.&lt;br /&gt;
&lt;br /&gt;
If you talk with us on IRC about your SoC proposal, be sure to include your IRC nickname somewhere in your proposal.&lt;br /&gt;
&lt;br /&gt;
You should also [http://sourceforge.net/tracker/?group_id=3248&amp;amp;atid=303248 submit a patch] before you submit your application, and be sure to include a link to the tracker item in your proposal submission.  See the [[Google Summer of Code Acceptance|development requirements]] for details.&lt;br /&gt;
&lt;br /&gt;
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, and agree to the [[Google Summer of Code Acceptance|development requirements]] before submitting an application.&lt;br /&gt;
&lt;br /&gt;
Thanks for your interest and we look forward to seeing you apply!&lt;br /&gt;
&lt;br /&gt;
= The application review process =&lt;br /&gt;
&lt;br /&gt;
Just about every participating GSoC organization receives considerably more project proposals than can be accepted.  All the applications are reviewed, evaluated, and critiqued individually.  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 (so make sure your application is excellent).  &#039;&#039;This cannot be stressed enough.&#039;&#039;  It is rather hard for most projects to narrow down the submissions but in the end there are only 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 and hope to see many of you become involved in BZFlag software development regardless of acceptance.&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, how well the student communicates with other developers, the perception that the individual is interested in being a long-term BZFlag developer, and our overall interest in having the proposed modifications made to BZFlag.  Particular notice is made of students that are responsive to questions and readily interactive in the IRC channel.  Communication is one of the most important criteria.&lt;br /&gt;
&lt;br /&gt;
= BZFlag participation in GSoc =&lt;br /&gt;
&lt;br /&gt;
== [[Google Summer of Code/2009|2009 (more details here)]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;We&#039;ve been accepted.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We intend to only accept at most three student slots this year.  Our focus this year is on quality and cleanup so we can make a major release.  Cleaning up and refactoring existing code is much more important to us this year than writing new code.&lt;br /&gt;
&lt;br /&gt;
== [[Google Summer of Code/2008|2008 (more details here)]] ==&lt;br /&gt;
{|align=&amp;quot;right&amp;quot;&lt;br /&gt;
 |[[Image:BZGSoC2008_small.gif |thumb|left|128px]]&lt;br /&gt;
 |}&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 continues to participate in the program.  We accepted six students, five of whom were integrated into our development community.&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:BZGSoC2007_small.gif|thumb|left|128px]]&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;
We accepted four students, three of whom were successful in their projects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [[Google Summer of Code/2007#Promotion Flyers|Promotion Flyers]] ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Project_History&amp;diff=10071</id>
		<title>Project History</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Project_History&amp;diff=10071"/>
		<updated>2025-12-07T00:38:31Z</updated>

		<summary type="html">&lt;p&gt;Zehra: redirect to BZFlag Project for now, as we can merge most content there&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[BZFlag Project]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Chris_Schoeneman&amp;diff=10070</id>
		<title>Chris Schoeneman</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Chris_Schoeneman&amp;diff=10070"/>
		<updated>2025-12-07T00:36:05Z</updated>

		<summary type="html">&lt;p&gt;Zehra: let&amp;#039;s bring back project history during Chris&amp;#039;s era&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chris Schoeneman is the original author of BZFlag. He is also known as crs or crs32&lt;br /&gt;
&lt;br /&gt;
==History of BZFlag (as told by Chris Schoeneman)==&lt;br /&gt;
&lt;br /&gt;
BZFlag began back in 1992 while I was a Masters student at the Cornell Program of Computer Graphics. I was an intern at SGI for the summers of &#039;90 and &#039;91, working on a prototype Indigo during the second summer which was a blast. So by 1992, IRIS GL was an old friend.&lt;br /&gt;
&lt;br /&gt;
At the Cornell PCG, essentially the only computers available were HP 700 series workstations. While CRX-24Z graphics wasn&#039;t too bad (around XS24-Z performance), HP&#039;s graphics library, Starbase, wasn&#039;t quite as easy to use as IRIS GL. In the words of fellow student Rick Pasetto, &amp;quot;Starbase sucks rocks.&amp;quot; As a result, very few students wrote interactive graphics tools to assist their research. If you wanted to make an image you usually had to at least ray trace it.&lt;br /&gt;
&lt;br /&gt;
So Rick and I wrote an IRIS GL-like layer on top of Starbase which we called WM (it was originally for window management). To encourage the other students to use it I wrote a number of small demo programs, small being the key word here. The fact that you could open a window and render to it with only a dozen lines of code ensured WM&#039;s success. I think it was finally retired by 1999, replaced by OpenGL.&lt;br /&gt;
&lt;br /&gt;
I began to write BZFlag as a simple demo but soon abandoned it after producing a program that was supposed to let you drive around a virtual world but instead had a bizarre warping effect because I goofed up the order of my transformations. I had by then also realized how much more work was involved and had other stuff to do.&lt;br /&gt;
&lt;br /&gt;
So there it sat, unused, for a few months until another student browsing the WM demo directory found it and said it looked cool and that I should finish it. So in a week long marathon of programming BZFlag took shape. The earliest complete version had two notable bugs. The first was that each player had his very own random world; it was soon discovered that hiding behind a pyramid didn&#039;t work because the pyramid wasn&#039;t even there in the other player&#039;s world. Once that was fixed, the second bug became clear: it was impossible to play. I had tried to base the BZFlag world on the real world, so the playing field was 10km on a side and shots moved at around Mach 1. It took forever to get from one end of the board to the other and you couldn&#039;t even see a shot before it hit you. So we scrapped some realism in favor of playability. After a few more tweaks, we had a pretty fun game.&lt;br /&gt;
&lt;br /&gt;
At this point the game resembled bz by Chris Fouts. This is no surprise because both games are based on the old Atari arcade game ?BattleZone. In fact, BZFlag was called bz back then because no one in the PCG knew of the existence of Chris Fouts&#039; bz. Yes, that&#039;s right, BZFlag was written with no knowledge of bz. The two games share no code and were designed and written independently. They owe their similarities to their ?BattleZone heritage.&lt;br /&gt;
&lt;br /&gt;
It didn&#039;t take too long to get bored with the basic shoot-&#039;em-up game. We quickly came up with the capture-the-flag mode and designed the new world it&#039;s played in. This kept our interest for quite a while (it&#039;s still my favorite mode). Strategy now played a role. You still needed good tactics to keep yourself alive, but you had to have a team strategy to excel.&lt;br /&gt;
&lt;br /&gt;
After one of the students hacked the code to make his tank super-powerful (blatantly so; he wasn&#039;t trying to fool us) we invented superflags. The first four super flags were: high speed, quick turn, rapid fire, and oscillation overthruster. Originally, there was one of each flag and each had an identifying mark so you knew what it was before you grabbed it. When more superflag ideas came up (including the concept of bad flags) we dropped the marks and made the flags appear randomly. This was around May 1993 and the game has remained substantially the same ever since. I rewrote the game in C++ (from C) for SGI&#039;s third ?IndiZone contest. BZFlag won in the Reality Engine category, earning me a nice little home computer (a Indigo2 200MHz R4400, with a 20&amp;quot; monitor, 64MB, a CD-ROM, DAT, 2GB disk, and High Impact graphics with 4 TRAMs).&lt;br /&gt;
&lt;br /&gt;
==Old links==&lt;br /&gt;
* http://web.archive.org/web/*/http://reality.sgi.com/crs/bzflag.html&lt;br /&gt;
* http://web.archive.org/web/*/http://bzflag.linuxgames.com/&lt;br /&gt;
* http://web.archive.org/web/*/http://bzflag.sourceforge.net/&lt;br /&gt;
* http://web.archive.org/web/*/http://BZFlag.org/&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Zehra</name></author>
	</entry>
</feed>