<?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=Epyon</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=Epyon"/>
	<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/Special:Contributions/Epyon"/>
	<updated>2026-05-04T23:00:22Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=GSoC:_BZWGen_revisited&amp;diff=4753</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=4753"/>
		<updated>2008-07-04T14:37:02Z</updated>

		<summary type="html">&lt;p&gt;Epyon: /* = July 14 - July 20 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DesignDocument}}&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>Epyon</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=GSoC:_BZWGen_revisited&amp;diff=4752</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=4752"/>
		<updated>2008-07-04T14:33:06Z</updated>

		<summary type="html">&lt;p&gt;Epyon: /* Project schedule */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DesignDocument}}&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>Epyon</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=GSoC:_BZWGen_revisited&amp;diff=4711</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=4711"/>
		<updated>2008-06-11T00:09:03Z</updated>

		<summary type="html">&lt;p&gt;Epyon: Timeline expanded with more details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DesignDocument}}&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 22 ====&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 22 - June 29 ====&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 -- June 30 - August 11 ===&lt;br /&gt;
&lt;br /&gt;
==== June 30 - July 6 ====&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 6 - July 14 ====&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 14 - July 20 ====&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 21 - July 27 ====&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 28 - August 3 ====&lt;br /&gt;
* bringing it all together, and merging with BZFlag core as much as the devs allow &lt;br /&gt;
&lt;br /&gt;
==== July 4 - August 11 ====&lt;br /&gt;
* buffer safety time -- cleanup, possible RFE implementations&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>Epyon</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=GSoC:_BZWGen_revisited&amp;diff=4644</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=4644"/>
		<updated>2008-05-25T15:19:08Z</updated>

		<summary type="html">&lt;p&gt;Epyon: Initial creation and wikification&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DesignDocument}}&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;
=== Pre-phase ===&lt;br /&gt;
&lt;br /&gt;
All research needs to be done in this time period, including the design of the plugin interfaces. I&#039;ll also try to get some community feedback on what they&#039;d like to see in a generator, however it may be hard without having BZWG easily accessible.&lt;br /&gt;
&lt;br /&gt;
The planned documentation extension for the existing ruleset system will also be done in this timeframe, as it is not a coding related task. I&#039;d also like to provide BZWGen with a completely new alternative rule and texture set.&lt;br /&gt;
&lt;br /&gt;
After all research is done, a much more detailed timeline will be presented before May 26.&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 -- May 26 - July 1 ===&lt;br /&gt;
&lt;br /&gt;
BZWG will be rewritten following the designed interface, and will be modified to work smoothly with and bzfs. The standard generator will be rewritten into the form of a plugin. Once that is done (probably before June 15), BZWG will be extended with the generation zones, and the new template layer.&lt;br /&gt;
&lt;br /&gt;
=== Phase 2 -- July 1 - August 11 ===&lt;br /&gt;
&lt;br /&gt;
BZWGen will be extended with the additional generation tools -- scatter generators, template based building, block-connected building and as time allows other less-important features. About the end of this time period I count on having a BZWGen server running, and getting some community feedback.&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>Epyon</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=World_units&amp;diff=2673</id>
		<title>World units</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=World_units&amp;diff=2673"/>
		<updated>2007-07-07T14:48:08Z</updated>

		<summary type="html">&lt;p&gt;Epyon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A world unit is the basic unit of measure when dealing with BZFlag. World units have no real-world counterpart, as they are a purely virtual concept, they can be though of to be equivalent to about 1 meter in length if you assume a roughly real world sized [[tank]].&lt;br /&gt;
&lt;br /&gt;
== Some useful measures ==&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;60%&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
|width=&amp;quot;70%&amp;quot;|Doable jump height&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|17.0&lt;br /&gt;
|- &lt;br /&gt;
|Jump height limit (next to impossible)&lt;br /&gt;
|19.0&lt;br /&gt;
|-&lt;br /&gt;
|Tank length&lt;br /&gt;
|8.04&lt;br /&gt;
|-&lt;br /&gt;
|Tank width&lt;br /&gt;
|2.8&lt;br /&gt;
|-&lt;br /&gt;
|Tank height&lt;br /&gt;
|2.08&lt;br /&gt;
|-&lt;br /&gt;
|Barrel height&lt;br /&gt;
|1.6&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
[[Category:Concepts]]&lt;/div&gt;</summary>
		<author><name>Epyon</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Meshbox&amp;diff=2664</id>
		<title>Meshbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Meshbox&amp;diff=2664"/>
		<updated>2007-07-06T21:05:28Z</updated>

		<summary type="html">&lt;p&gt;Epyon: /* Appearance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The meshbox is the 2.0 update to the original [[box]] object in BZFlag 1.0. The main difference between the [[box]] and the Meshbox is that the meshbox supports new features in BZFlag 2.0, such as physics drivers and textures.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
A very basic meshbox will include:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 meshbox&lt;br /&gt;
  position 0 0 0  # x-pos, y-pos, height&lt;br /&gt;
  rotation 0  # rotation in degrees&lt;br /&gt;
  size 10 10 10  # x-len, y-len, height&lt;br /&gt;
 end&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As with the [[box]] object, position defines where the meshbox should be located. Rotation defines the angle it should be rotated to (about the Z-axis), and size defines how big or small the object should be. Now, if you&#039;re looking for something a little fancier, you can try code similar to this:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 meshbox&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  rotation 0&lt;br /&gt;
  size 10 10 10&lt;br /&gt;
  outside matref my_cool_wall&lt;br /&gt;
  top matref my_cool_roof&lt;br /&gt;
  phydrv example_physics&lt;br /&gt;
  obstacle&lt;br /&gt;
 end&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
So what&#039;s the difference here? Well, this object will be treated as an obstacle. The outside walls (as opposed to inside, top, or bottom) will appear with the &amp;quot;my_cool_wall&amp;quot; [[material]], and the roof (top) will have &amp;quot;my_cool_roof.&amp;quot; Of course, if you want a [[material]] on all sides of the object, you can simply omit the &amp;quot;top&amp;quot; specification at the start of the line, and simply have: &amp;quot;matref my_cool_material.&amp;quot; Also, you can specify a [[Physics | physics driver]] to the object, to influence tank behavior a bit.&lt;br /&gt;
&lt;br /&gt;
==Appearance==&lt;br /&gt;
By default, a meshbox will have red brick walls, and a grey stone roof. However, if a [[material]] is specified by the map creator, the appearance depends on the designer&#039;s choosing. Contrary to a [[Box]], a height 0 meshbox at ground level &#039;&#039;is not&#039;&#039; visible.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
The meshbox was added in [[BZFlag 2.0.0]].&lt;br /&gt;
&lt;br /&gt;
==Editor Support==&lt;br /&gt;
The meshbox IS supported by [[iBZEdit]], [[pyBZEdit]], [[Blender]] with the [[BZWTools]] plugin, and the [[BZW Exporter for Wings3D]]. The meshbox is NOT supported by [[BZEdit]] or [[BZFed]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
[[Category:Map_Objects]]&lt;/div&gt;</summary>
		<author><name>Epyon</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Box&amp;diff=2663</id>
		<title>Box</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Box&amp;diff=2663"/>
		<updated>2007-07-06T21:03:56Z</updated>

		<summary type="html">&lt;p&gt;Epyon: /* Appearance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Box is a [[BZW]] map structure that defines a rectilinear parellepiped in the world.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
[[Image:BoxeAppearance.png|frame|right|Default boxes]]&lt;br /&gt;
The code for a box object is as follows&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 box&lt;br /&gt;
  position 10 20 30&lt;br /&gt;
  rotation 45&lt;br /&gt;
  size 1 2 3&lt;br /&gt;
 end&lt;br /&gt;
|}&lt;br /&gt;
Valid parameters for a box are&lt;br /&gt;
&amp;lt;properties&amp;gt;&lt;br /&gt;
position=defines the center of the box in X and Y and the bottom of the box in Z.&lt;br /&gt;
rotation=defines a rotation around the Z axis for the box, in degrees.&lt;br /&gt;
size=defines the distance from the center to the side of the box in X and Y, and the total height of the box in Z.&lt;br /&gt;
&amp;lt;/properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Boxes do not support [[Material]], [[Texture Matrix]], or [[Physics Drivers]]. The [[Meshbox]] object replaces the box object and supports these features.&lt;br /&gt;
&lt;br /&gt;
==Appearance==&lt;br /&gt;
Box objects by default have a red brick texture on the vertical sides, and a white plaster texture on the top and bottom. A box of height 0 on ground level &#039;&#039;is&#039;&#039; visible.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
The box is one of the original objects supported by BZFlag and has been a mainstay of maps since the very beginning. Boxes are heavily used by the software when generating random maps. In [[BZFlag 2.0.0|v2.0.0]] the box was replaced with the [[meshbox]] object to support [[Material|Materials]] and [[Physics Drivers]]. The original box definition was left unchanged, in order to maintain functional compatibility for older maps.&lt;br /&gt;
&lt;br /&gt;
==Editor Support==&lt;br /&gt;
The box object is supported by all known editors.&lt;br /&gt;
&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
[[Category:Map Objects]]&lt;/div&gt;</summary>
		<author><name>Epyon</name></author>
	</entry>
</feed>