<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to PodballModules</title><link>https://sourceforge.net/p/podball/wiki/PodballModules/</link><description>Recent changes to PodballModules</description><atom:link href="https://sourceforge.net/p/podball/wiki/PodballModules/feed" rel="self"/><language>en</language><lastBuildDate>Mon, 09 Jun 2014 09:57:18 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/podball/wiki/PodballModules/feed" rel="self" type="application/rss+xml"/><item><title>PodballModules modified by Lars Ruoff</title><link>https://sourceforge.net/p/podball/wiki/PodballModules/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -15,6 +15,8 @@

 For details, see the WORLDSTRUCT struct defined in [podball.h](https://sourceforge.net/p/podball/code/ci/default/tree/src/podball2/podball.h)
 and the GAMEINFO struct defined in [podtypes.h](https://sourceforge.net/p/podball/code/ci/default/tree/src/podball2/podtypes.h)
+
+Side note: Don't be scared about the amount of values present in GAMEINFO. Most of the physical constants won't change over time. You may well decide to code a module for the given set of default constants and ignore the values in GAMEINFO entirely. That is, your module doesn't necessarily be able to adapt to different physical constants. Get it running adequately for the default set of constants and it will be fine.

 In return, the module has to provide the actions for each pod of the team. 

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lars Ruoff</dc:creator><pubDate>Mon, 09 Jun 2014 09:57:18 -0000</pubDate><guid>https://sourceforge.netccea1f7b80fd7f55574f39d709e479d6daea8425</guid></item><item><title>PodballModules modified by Lars Ruoff</title><link>https://sourceforge.net/p/podball/wiki/PodballModules/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -13,7 +13,8 @@

 Control modules get all imaginable information about the game state as an input. Especially, control modules get the GAMESETTINGS information, which contains all dimension- and physical constants used by the game engine. Then, for every time step they get the WORLDSTRUCT information which contains all dynamic information like positions, velocities (of all pods and the ball) and information about the state of the game. 

-For details, see the structs defined in [source:trunk/src/podball2/podtypes.h](/podball/trac/browser/trunk/src/podball2/podtypes.h)[​](/podball/trac/export/HEAD/trunk/src/podball2/podtypes.h)
+For details, see the WORLDSTRUCT struct defined in [podball.h](https://sourceforge.net/p/podball/code/ci/default/tree/src/podball2/podball.h)
+and the GAMEINFO struct defined in [podtypes.h](https://sourceforge.net/p/podball/code/ci/default/tree/src/podball2/podtypes.h)

 In return, the module has to provide the actions for each pod of the team. 

@@ -34,14 +35,10 @@
 There are some conventions that are important to know: 

   * The data of the own team is always given in team[0], that of the opposing team in team[1], regardless of the actual side the team is playing. 
-  * Also, all coordinates of all objects in the _WORLDSTRUCT_ are always presented as if the own team is playing from left to right (in the direction towards increasing x-coordinates), regardless of the actual side the team is playing. 
-
-&gt; This feature is called _team-_ and _coordinate-remapping_ of the engine and is to simplify things for module developers. 
+  * Also, all coordinates of all objects in the _WORLDSTRUCT_ are always presented as if the own team is playing from left to right (in the direction towards increasing x-coordinates), regardless of the actual side the team is playing. This feature is called _team-_ and _coordinate-remapping_ of the engine and is to simplify things for module developers. 

 Podball modules can be developed for different environments and languages. (Currently, only Windows DLLs are supported but this is hopefully going to change soon). 

 See the details for the Windows native DLL interface in [PodballModDll]. 

 The technical details of how the interface is presented to the client code in the different environments may vary and are presented on their respective pages. But the overall picture and available data will always be the same. 
-
-[Last modified](PodballModules?action=diff&amp;amp;version=2) [4 years ago](/podball/trac/timeline?from=2010-07-18T19%3A18%3A24%2B02%3A00&amp;amp;precision=second) Last modified on 07/18/10 19:18:24
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lars Ruoff</dc:creator><pubDate>Mon, 09 Jun 2014 09:49:55 -0000</pubDate><guid>https://sourceforge.net89e424a7f16d284651958c12b0fc2e56f2b91799</guid></item><item><title>PodballModules modified by Lars Ruoff</title><link>https://sourceforge.net/p/podball/wiki/PodballModules/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="podball-control-modules-introduction"&gt;Podball Control Modules - Introduction&lt;/h1&gt;
&lt;p&gt;The whole thing about Podball is that it is designed to run user provided code for getting the actions of the different pods on the field. &lt;/p&gt;
&lt;p&gt;As explained in &lt;span&gt;[PodballGame]&lt;/span&gt;, the Podball game engine calls code from so called &lt;em&gt;control modules&lt;/em&gt; every &lt;em&gt;ENGINE_CTRL_STEP&lt;/em&gt; ticks. &lt;/p&gt;
&lt;p&gt;The first thing to note and remember is that a control module provides the intelligence for the whole team. (This is different from the 2001 version of Podball, where there was a control function for each pod plus a coach function for team intelligence). &lt;/p&gt;
&lt;p&gt;Things to remember: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A control module provides the artificial intelligence for a whole team. &lt;/li&gt;
&lt;li&gt;There is exactly one instance of a control module per team. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Control modules get all imaginable information about the game state as an input. Especially, control modules get the GAMESETTINGS information, which contains all dimension- and physical constants used by the game engine. Then, for every time step they get the WORLDSTRUCT information which contains all dynamic information like positions, velocities (of all pods and the ball) and information about the state of the game. &lt;/p&gt;
&lt;p&gt;For details, see the structs defined in &lt;a class="" href="/podball/trac/browser/trunk/src/podball2/podtypes.h"&gt;source:trunk/src/podball2/podtypes.h&lt;/a&gt;&lt;a class="" href="/podball/trac/export/HEAD/trunk/src/podball2/podtypes.h"&gt;​&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In return, the module has to provide the actions for each pod of the team. &lt;/p&gt;
&lt;p&gt;There are only two possible actions: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Move&lt;/strong&gt; or &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shoot&lt;/strong&gt; (the ball) &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both actions require a vector argument to indicate the direction and amount of acceleration or shooting, respectively. &lt;/p&gt;
&lt;p&gt;The convention used is to return a vector with a length between zero and one, to indicate the amount. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In case of acceleration, a length of one corresponds to the maximum amount of acceleration force, i.e. &lt;em&gt;ACCEL_FORCE&lt;/em&gt; as defined in game.info. &lt;/li&gt;
&lt;li&gt;In case of shooting, a length of one corresponds to the maximum amount of shooting force, i.e. &lt;em&gt;SHOOT_FORCE&lt;/em&gt; as defined in game.info. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Of course, whenever a module returns a vector with length greater than one, its length is normalized to one. &lt;/p&gt;
&lt;p&gt;There are some conventions that are important to know: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The data of the own team is always given in team&lt;span&gt;[0]&lt;/span&gt;, that of the opposing team in team&lt;span&gt;[1]&lt;/span&gt;, regardless of the actual side the team is playing. &lt;/li&gt;
&lt;li&gt;Also, all coordinates of all objects in the &lt;em&gt;WORLDSTRUCT&lt;/em&gt; are always presented as if the own team is playing from left to right (in the direction towards increasing x-coordinates), regardless of the actual side the team is playing. &lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;This feature is called &lt;em&gt;team-&lt;/em&gt; and &lt;em&gt;coordinate-remapping&lt;/em&gt; of the engine and is to simplify things for module developers. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Podball modules can be developed for different environments and languages. (Currently, only Windows DLLs are supported but this is hopefully going to change soon). &lt;/p&gt;
&lt;p&gt;See the details for the Windows native DLL interface in &lt;span&gt;[PodballModDll]&lt;/span&gt;. &lt;/p&gt;
&lt;p&gt;The technical details of how the interface is presented to the client code in the different environments may vary and are presented on their respective pages. But the overall picture and available data will always be the same. &lt;/p&gt;
&lt;p&gt;&lt;a class="" href="../PodballModules?action=diff&amp;amp;version=2"&gt;Last modified&lt;/a&gt; &lt;a class="" href="/podball/trac/timeline?from=2010-07-18T19%3A18%3A24%2B02%3A00&amp;amp;precision=second"&gt;4 years ago&lt;/a&gt; Last modified on 07/18/10 19:18:24&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lars Ruoff</dc:creator><pubDate>Wed, 21 May 2014 14:05:42 -0000</pubDate><guid>https://sourceforge.net56796886261ed8c46f956a7e921cebce264a7dcc</guid></item></channel></rss>