<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://springrts-wiki.p2004a.com/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Argh</id>
	<title>Spring - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://springrts-wiki.p2004a.com/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Argh"/>
	<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/wiki/Special:Contributions/Argh"/>
	<updated>2026-11-08T20:42:47Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Lua_UnsyncedRead&amp;diff=12366</id>
		<title>Lua UnsyncedRead</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Lua_UnsyncedRead&amp;diff=12366"/>
		<updated>2011-03-04T01:27:18Z</updated>

		<summary type="html">&lt;p&gt;Argh: Fixed TraceScreenRay to show includeSky&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Lua_Scripting|Lua Scripting]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
=Unsynced Read=&lt;br /&gt;
&lt;br /&gt;
== Replay/Spectating ==&lt;br /&gt;
&#039;&#039;&#039;Spring.IsReplay&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.GetSpectatingState&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; boolean spectating, boolean fullView, boolean fullSelect&lt;br /&gt;
&lt;br /&gt;
== ModUI ==&lt;br /&gt;
&#039;&#039;&#039;Spring.GetModUICtrl&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; boolean&lt;br /&gt;
&lt;br /&gt;
== MyInfo ==&lt;br /&gt;
&#039;&#039;&#039;Spring.GetMyAllyTeamID&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number&lt;br /&gt;
&#039;&#039;&#039;Spring.GetMyTeamID&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number&lt;br /&gt;
&#039;&#039;&#039;Spring.GetMyPlayerID&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number&lt;br /&gt;
&lt;br /&gt;
== Local Player,Team,Ally ==&lt;br /&gt;
&amp;lt;span class=&amp;quot;note&amp;quot;&amp;gt;Redundant same as the GetMyXYZ functions!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetLocalPlayerID&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number playerID&lt;br /&gt;
&#039;&#039;&#039;Spring.GetLocalTeamID&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number teamID&lt;br /&gt;
&#039;&#039;&#039;Spring.GetLocalAllyTeamID&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number allyID&lt;br /&gt;
&lt;br /&gt;
== Team/Player Info ==&lt;br /&gt;
&#039;&#039;&#039;Spring.GetPlayerRoster&#039;&#039;&#039;&lt;br /&gt;
  ( [number sortType] ) -&amp;gt;&lt;br /&gt;
    nil | playerTable = {&lt;br /&gt;
            [1] = {&lt;br /&gt;
              string  name,&lt;br /&gt;
              number  playerID,&lt;br /&gt;
              number  teamID,&lt;br /&gt;
              number  allyTeamID,&lt;br /&gt;
              boolean spectator,&lt;br /&gt;
              number  cpuUsage,&lt;br /&gt;
              number  pingTime&lt;br /&gt;
            },&lt;br /&gt;
            etc...&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;font color=&amp;quot;#55ee99&amp;quot;&amp;gt;  Sort codes:&lt;br /&gt;
     1 = Sort by allies  (the default)&lt;br /&gt;
     2 = Sort by teamID&lt;br /&gt;
     3 = Sort by playerName&lt;br /&gt;
     4 = Sort by CPU usage&lt;br /&gt;
     5 = Sort by ping time&amp;lt;/font&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Spring.GetTeamColor&#039;&#039;&#039;&lt;br /&gt;
  ( number teamID ) -&amp;gt; nil | number r, number g, number b,  number a&lt;br /&gt;
&#039;&#039;&#039;Spring.GetTeamOrigColor&#039;&#039;&#039;&lt;br /&gt;
  ( number teamID ) -&amp;gt; nil | number r, number g, number b,  number a&lt;br /&gt;
&#039;&#039;&#039;Spring.GetPlayerTraffic&#039;&#039;&#039;&lt;br /&gt;
  ( number playerID [, number packetID] ) -&amp;gt; number&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&#039;&#039;&#039;Spring.GetSoundStreamTime&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number playedTime, number totalTime&lt;br /&gt;
&lt;br /&gt;
== Camera ==&lt;br /&gt;
&#039;&#039;&#039;Spring.GetCameraNames&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; { [camName] = number camNum, ... }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetCameraState&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; { &amp;quot;name&amp;quot; = string, &amp;quot;mode&amp;quot; = number camIdx, state1 = number, state2 = number, ... }&lt;br /&gt;
&lt;br /&gt;
See [[Lua_camState]] for details about Spring.GetCameraState output.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetCameraPosition&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number x, number y, number z&lt;br /&gt;
&#039;&#039;&#039;Spring.GetCameraDirection&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number forward_x, number forward_y, number forward_z&lt;br /&gt;
&#039;&#039;&#039;Spring.GetCameraFOV&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number fov&lt;br /&gt;
&#039;&#039;&#039;Spring.GetCameraVectors&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; vectorTable = {&lt;br /&gt;
    forward   = { [1] = number x, [2] = number y, [3] = number z },&lt;br /&gt;
    up        = { [1] = number x, [2] = number y, [3] = number z },&lt;br /&gt;
    right     = { [1] = number x, [2] = number y, [3] = number z },&lt;br /&gt;
    top       = { [1] = number x, [2] = number y, [3] = number z },&lt;br /&gt;
    bottom    = { [1] = number x, [2] = number y, [3] = number z },&lt;br /&gt;
    leftside  = { [1] = number x, [2] = number y, [3] = number z },&lt;br /&gt;
    rightside = { [1] = number x, [2] = number y, [3] = number z }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Inview ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetVisibleUnits&#039;&#039;&#039;&lt;br /&gt;
  ( [number teamID = -1 [, number radius = 30 [, boolean Icons = true ]]] )&lt;br /&gt;
    -&amp;gt; nil | unitTable = { [1] = number unitID, ... }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetVisibleFeatures&#039;&#039;&#039;&lt;br /&gt;
  ( [number allyTeamID = -1 [, number radius = 30 [, boolean Icons = true [, boolean geos = true ]]]] )&lt;br /&gt;
    -&amp;gt; nil | featureTable = { [1] = number featureID, ... }&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.IsAABBInView&#039;&#039;&#039;&lt;br /&gt;
  ( number minX, number minY, number minZ,&lt;br /&gt;
    number maxX, number maxY, number maxZ ) -&amp;gt; nil | boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.IsSphereInView&#039;&#039;&#039;&lt;br /&gt;
  ( number x, number y, number z [, number radius ] ) -&amp;gt; nil | boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.IsUnitIcon&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.IsUnitInView&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.IsUnitVisible&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID [, number radius [, boolean checkIcons] ] ) -&amp;gt; nil | boolean&lt;br /&gt;
&lt;br /&gt;
=== Screen Trace ===&lt;br /&gt;
&#039;&#039;&#039;Spring.WorldToScreenCoords&#039;&#039;&#039;&lt;br /&gt;
  ( number x, number y, number z ) -&amp;gt; number x, number y, number z&lt;br /&gt;
&#039;&#039;&#039;Spring.TraceScreenRay&#039;&#039;&#039;&lt;br /&gt;
  ( number mouseX, number mouseY [, boolean onlyCoords &lt;br /&gt;
  [, boolean useMinimap, [boolean includeSky]] ] )&lt;br /&gt;
    -&amp;gt; nil |&lt;br /&gt;
    string &amp;quot;unit&amp;quot;,    number unitID    |&lt;br /&gt;
    string &amp;quot;feature&amp;quot;, number featureID |&lt;br /&gt;
    string &amp;quot;ground&amp;quot;,  { [1] = number x, [2] = number y, [3] = number z }&lt;br /&gt;
&lt;br /&gt;
=== Screen &amp;amp; Window Geometry ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetViewGeometry&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number viewSizeX, number viewSizeY, number viewPosX, number viewPosY&lt;br /&gt;
&#039;&#039;&#039;Spring.GetWindowGeometry&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number winSizeX, number winSizeY, number winPosX, number winPosY&lt;br /&gt;
&#039;&#039;&#039;Spring.GetScreenGeometry&#039;&#039;&#039; (is missing multiscreen support!)&lt;br /&gt;
  ( ) -&amp;gt; number screenSizeX, number screenSizeY, number ZERO, number ZERO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Unit ==&lt;br /&gt;
&#039;&#039;&#039;Spring.IsUnitAllied&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitViewPosition&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID [, boolean extrapolated ] ) -&amp;gt; nil | boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitTransformMatrix&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID [, boolean invert = false] ) -&amp;gt; nil | number a11, number a12 ..., number a44    &amp;lt;span class=note&amp;gt;(4x4 matrix)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Selected Units ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetSelectedUnits&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; { [1] = unitID, ... }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetSelectedUnitsSorted&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; { [number unitDefID] = { [1] = [number unitID], etc...}, ... }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetSelectedUnitsCounts&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; { [number unitDefID] = number count, etc... }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetSelectedUnitsCount&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number count&lt;br /&gt;
&#039;&#039;&#039;Spring.IsUnitSelected&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | boolean&lt;br /&gt;
&lt;br /&gt;
=== Unit Groups ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitGroup&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | number&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetGroupList&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | {&lt;br /&gt;
    [number] = number unitCount,&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetSelectedGroup&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number&lt;br /&gt;
&#039;&#039;&#039;Spring.GetGroupAIName&#039;&#039;&#039;&lt;br /&gt;
  ( number groupID ) -&amp;gt; string aiName&lt;br /&gt;
&#039;&#039;&#039;Spring.GetGroupAIList&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; {&lt;br /&gt;
    [1] = string aiName, ...&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spring.GetGroupUnits&#039;&#039;&#039;&lt;br /&gt;
  ( number groupID ) -&amp;gt; nil | {&lt;br /&gt;
    [1] = number unitID, ...&lt;br /&gt;
  }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetGroupUnitsSorted&#039;&#039;&#039;&lt;br /&gt;
  ( number groupID ) -&amp;gt; nil | {&lt;br /&gt;
    [number unitDefID] = {number unitID, ...}, ...&lt;br /&gt;
  }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetGroupUnitsCounts&#039;&#039;&#039;&lt;br /&gt;
  ( number groupID ) -&amp;gt; nil | {&lt;br /&gt;
    [number unitDefID] = number count, ...&lt;br /&gt;
  }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetGroupUnitsCount&#039;&#039;&#039;&lt;br /&gt;
  ( number groupID ) -&amp;gt; nil | number count&lt;br /&gt;
&lt;br /&gt;
== UI ==&lt;br /&gt;
&lt;br /&gt;
=== GUI Settings ===&lt;br /&gt;
&#039;&#039;&#039;Spring.IsGUIHidden&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.HaveShadows&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.HaveAdvShading&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.GetWaterMode&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | number mode, string &amp;quot;mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;font color=&amp;quot;#55ee99&amp;quot;&amp;gt;  mode numbers:&lt;br /&gt;
      0 - basic&lt;br /&gt;
      1 - reflective&lt;br /&gt;
      2 - dynamic&lt;br /&gt;
      3 - refractive&lt;br /&gt;
      4 - bumpwater&lt;br /&gt;
      default - unknown&amp;lt;/font&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Spring.GetMapDrawMode&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | &amp;quot;normal&amp;quot; | &amp;quot;height&amp;quot; | &amp;quot;metal&amp;quot; | &amp;quot;path&amp;quot; | &amp;quot;los&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;Spring.GetDrawSelectionInfo&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#55ee99&amp;quot;&amp;gt;Returns whether &amp;amp;quot;Selected units&amp;amp;quot; text is displayed.&amp;lt;/font&amp;gt;&lt;br /&gt;
  ( ) -&amp;gt; boolean&lt;br /&gt;
&lt;br /&gt;
=== Unit GUI States ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitLuaDraw&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitNoDraw&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitNoMinimap&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.GetUnitNoSelect&#039;&#039;&#039;&lt;br /&gt;
  ( number unitID ) -&amp;gt; nil | boolean&lt;br /&gt;
&lt;br /&gt;
=== Minimap ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetMiniMapGeometry&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number posX, number posY, number sizeX, number sizeY,&lt;br /&gt;
    boolean minimized, boolean maximized&lt;br /&gt;
&#039;&#039;&#039;Spring.GetMiniMapDualScreen&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; boolean false | string &amp;quot;left&amp;quot; | string &amp;quot;right&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;Spring.IsAboveMiniMap&#039;&#039;&#039;&lt;br /&gt;
  ( number x, number y ) -&amp;gt; nil | boolean&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== (Build-)Menu ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetActiveCommand&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | number index (, number cmd_id, number cmd_type, string cmd_name)&lt;br /&gt;
&#039;&#039;&#039;Spring.GetDefaultCommand&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | number index (, number cmd_id, number cmd_type, string cmd_name)&lt;br /&gt;
&#039;&#039;&#039;Spring.GetActiveCmdDescs&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | {&lt;br /&gt;
    [1] = {&lt;br /&gt;
      id=number,&lt;br /&gt;
      type=number,&lt;br /&gt;
      name=string,&lt;br /&gt;
      action=string,&lt;br /&gt;
      tooltip=string,&lt;br /&gt;
      texture=string,&lt;br /&gt;
      cursor=string,&lt;br /&gt;
      hidden=boolean,&lt;br /&gt;
      disabled=boolean,&lt;br /&gt;
      showUnique=boolean,&lt;br /&gt;
      onlyTexture=boolean,&lt;br /&gt;
      params = { [1] = string, .. }&lt;br /&gt;
    }, ...&lt;br /&gt;
  }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetActiveCmdDesc&#039;&#039;&#039;&lt;br /&gt;
  ( number index ) -&amp;gt; nil | {&lt;br /&gt;
      id=number,&lt;br /&gt;
      type=number,&lt;br /&gt;
      name=string,&lt;br /&gt;
      action=string,&lt;br /&gt;
      tooltip=string,&lt;br /&gt;
      texture=string,&lt;br /&gt;
      cursor=string,&lt;br /&gt;
      hidden=boolean,&lt;br /&gt;
      disabled=boolean,&lt;br /&gt;
      showUnique=boolean,&lt;br /&gt;
      onlyTexture=boolean,&lt;br /&gt;
      params = { [1] = string, .. }&lt;br /&gt;
  }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetCmdDescIndex&#039;&#039;&#039;&lt;br /&gt;
  ( number cmdID ) -&amp;gt; nil | number index&lt;br /&gt;
&#039;&#039;&#039;Spring.GetActivePage&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | number pageNum, number maxPages&lt;br /&gt;
&lt;br /&gt;
=== Build Facing ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetBuildFacing&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | number&lt;br /&gt;
&#039;&#039;&#039;Spring.GetBuildSpacing&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | number&lt;br /&gt;
&lt;br /&gt;
=== GatherMode &amp;amp; InvertQueueKey ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetGatherMode&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | number&lt;br /&gt;
&#039;&#039;&#039;Spring.GetInvertQueueKey&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | boolean&lt;br /&gt;
&lt;br /&gt;
=== Mouse States ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetMouseState&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number X, number Y,&lt;br /&gt;
    boolean leftPressed, boolean middlePressed, boolean rightPressed&lt;br /&gt;
&#039;&#039;&#039;Spring.GetMouseCursor&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; string name, number scale&lt;br /&gt;
&#039;&#039;&#039;Spring.GetMouseStartPosition&#039;&#039;&#039;&lt;br /&gt;
  ( number mouseButton ) -&amp;gt; nil | number pressedX, number pressedY,&lt;br /&gt;
    number camPosX, number camPosY, number camPosZ,&lt;br /&gt;
    number dirX, number dirY, number dirZ&lt;br /&gt;
&lt;br /&gt;
=== (Hot-)Keys ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetKeyState&#039;&#039;&#039;&lt;br /&gt;
  ( number key ) -&amp;gt; nil | boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.GetModKeyState&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; boolean alt, boolean ctrl, boolean meta, boolean shift&lt;br /&gt;
&#039;&#039;&#039;Spring.GetPressedKeys&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; {&lt;br /&gt;
    [number] = boolean,&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetKeyCode&#039;&#039;&#039;&lt;br /&gt;
  ( string keysym ) -&amp;gt; number&lt;br /&gt;
&#039;&#039;&#039;Spring.GetKeySymbol&#039;&#039;&#039;&lt;br /&gt;
  ( number key ) -&amp;gt; string &amp;quot;keysym1&amp;quot;, string &amp;quot;keysym2&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;Spring.GetKeyBindings&#039;&#039;&#039;&lt;br /&gt;
  ( string keyset ) -&amp;gt; nil | { [1] = {[string actionCmd] = string actionExtra}, ... }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetActionHotKeys&#039;&#039;&#039;&lt;br /&gt;
  ( string action ) -&amp;gt; nil | { [1] = string hotKey, ... }&lt;br /&gt;
&lt;br /&gt;
=== Console ===&lt;br /&gt;
&#039;&#039;&#039;Spring.GetLastMessagePositions&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | {&lt;br /&gt;
    [1] = { number X, number Y, number Z },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetConsoleBuffer&#039;&#039;&#039;&lt;br /&gt;
  ( [number maxLines] ) -&amp;gt; nil | {&lt;br /&gt;
    [1] = {&lt;br /&gt;
      text = string,&lt;br /&gt;
      priority = number&lt;br /&gt;
   }, ...&lt;br /&gt;
  }&lt;br /&gt;
&#039;&#039;&#039;Spring.GetCurrentTooltip&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; string&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FPS &amp;amp; GetDrawFrame ==&lt;br /&gt;
&#039;&#039;&#039;Spring.GetFPS&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number&lt;br /&gt;
&#039;&#039;&#039;Spring.GetDrawFrame&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; number low 16bit, number high 16bit&lt;br /&gt;
&lt;br /&gt;
== Time ==&lt;br /&gt;
&#039;&#039;&#039;Spring.GetFrameTimeOffset&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | number&lt;br /&gt;
&#039;&#039;&#039;Spring.GetLastUpdateSeconds&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; nil | number&lt;br /&gt;
&#039;&#039;&#039;Spring.GetHasLag&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; boolean&lt;br /&gt;
&#039;&#039;&#039;Spring.GetTimer&#039;&#039;&#039;&lt;br /&gt;
  ( ) -&amp;gt; timer&lt;br /&gt;
&#039;&#039;&#039;Spring.DiffTimers&#039;&#039;&#039;&lt;br /&gt;
  ( timer cur, timer ago) -&amp;gt; number seconds&lt;br /&gt;
&lt;br /&gt;
[[category: Lua]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Games&amp;diff=8996</id>
		<title>Games</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Games&amp;diff=8996"/>
		<updated>2011-02-28T01:24:28Z</updated>

		<summary type="html">&lt;p&gt;Argh: Snipped out references to P.U.R.E. here, no point to having a link to a dead project :-)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lang | France | Jeux | FranÃ§ais}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__There are a number of games made for the Spring Engine. Some of the more popular ones are listed below, sorted by their terms of use. &amp;lt;!--(/license schemes?)--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Freeware/Open Source=&lt;br /&gt;
&#039;&#039;These games are all free to download and play and may be open to modifications, however, be sure to read the licenses before doing so.&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[http://zero-k.info/ Zero-K]&amp;lt;/h2&amp;gt;([http://code.google.com/p/zero-k/source/browse/trunk/mods/zk/legal.txt FOSS])&lt;br /&gt;
| width=40 |&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;&#039;&#039;&#039;[http://www.spring1944.org/ Spring: 1944]&#039;&#039;&#039;&amp;lt;/h2&amp;gt;([http://spring1944.svn.sourceforge.net/viewvc/spring1944/trunk/S44Main.sdd/docs/License.txt CC-BY-NC])&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | {{navimgx|xsize=300|ysize=225|image=Zero-k_image.png|link=http://zero-k.info/}}&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |{{navimgx|xsize=300|ysize=225|image=S44_tigers.jpg|link=http://www.spring1944.org}}&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | Zero-K is a fast, competitive game with a focus on a streamlined economy and advanced interface that takes the focus off tedious tasks and back on the action. A huge roster of interesting, unique units and a variety of unit abilities provides tremendous tactical and strategic depth to the game. [[http://zero-k.info Download link]]&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | Spring:1944 is a WWII themed game with four fully functional sides (US, Germany, USSR, Britain), period-accurate units and strengths. Realism comes second only to creating a game that is fun and accessible to play.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[http://www.evolutionrts.info Evolution RTS]&amp;lt;/h2&amp;gt;([http://redmine.evolutionrts.info/repositories/entry/evolutionrts/Evolution%20RTS%20-%20Creative%20Commons%20Deed.pdf?format=raw CC-BY-NC-ND])&lt;br /&gt;
| width=40 |&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[[Kernel Panic]]&amp;lt;/h2&amp;gt;([[Kernel_Panic#License:|both proprietary and FOSS content]])&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | {{navimgx|xsize=300|ysize=188|image=Evoimg.jpg|link=http://www.evolutionrts.info}}&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | {{navimg|xsize=300|ysize=225|image=Kernel_Panic_3.4.jpg|link=Kernel Panic}}&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | A new war is brewing. A violent conflict, between the Six Colonies, each one convinced that it was in the right, each one sure of its own ability to defeat its enemies. But they need Generals. They need soldiers. They need you.&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | A game based around combat &#039;&#039;&#039;inside&#039;&#039;&#039; a computer, with 3 unique sides: the System, the Hacker and the Network waging war in a matrix of DOOM! No resource economy exists in KP, with the only constraints being time and space.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;&#039;&#039;&#039;[http://www.moddb.com/games/conflict-terra Conflict Terra]&#039;&#039;&#039;&amp;lt;/h2&amp;gt;([http://code.google.com/p/conflictterra/issues/detail?id=104&amp;amp;q=license&amp;amp;colspec=ID%20Type%20Status%20Priority%20Owner%20Summary Unknown media license])&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[[Spring Tanks]]&amp;lt;/h2&amp;gt;([http://pastebin.com/pNkBtsb8 undecided, some obscure free license])&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |{{navimgx|xsize=300|ysize=225|image=Conflict_terra.png|link=http://www.moddb.com/games/conflict-terra}}&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | {{navimg|xsize=300|ysize=221|image=Springtanks_wikipreview.png|link=Spring Tanks}}&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | Based around the idea of a fictional faction fighting for the domination of Earth, Conflict Terra hopes to achieve balanced, interesting, intuitive and above all fun gameplay that tries to break some of the norms present in other Spring games.[[http://www.moddb.com/games/conflict-terra/downloads Download link]]&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | Some guys decided to attack each other with tanks and you can be one of them. &lt;br /&gt;
Build-in Single Player!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Proprietary=&lt;br /&gt;
&#039;&#039;These games may or may not be free to play. Modifying their content (i.e. the art assets) is not allowed without the game authors explicit permission, although the code is GPL and some games (P.U.R.E.) include large GPL-friendly content collections.&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| width=40 |&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[http://www.moddb.com/games/gundam-rts/news Gundam RTS]&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |{{navimgx|xsize=300|ysize=225|image=Screen104.jpg|link=http://www.moddb.com/games/gundam-rts/news}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | Set during the One-Year War in the Universal Century timeline of the Gundam Metaseries, Gundam RTS features fast, intense mech combat gameplay in a truly Gundam style.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[http://www.imperialwinter.com Star Wars: Imperial Winter]&amp;lt;/h2&amp;gt;&lt;br /&gt;
| width=40 |&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[http://azaremoth.supremedesign.org The Cursed]&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | {{navimgx|xsize=300|ysize=225|image=Imperial Winter assault.jpg|link=http://www.imperialwinter.com}}&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |{{navimgx|xsize=300|ysize=225|image=cursed_logo.jpg|link=http://azaremoth.supremedesign.org}}&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | A Star Wars themed game set in the troubled post-Return of the Jedi era, SW:IW features over a hundred units for the fractured Galactic Empire and Rebel Alliance fighting for control of the galaxy.&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; |  The unique game is about bones, undead, demons and magic settled in a futuristic environment.[[http://azaremoth.supremedesign.org/data/cursed_latest.zip Download link]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=TA-derived=&lt;br /&gt;
&#039;&#039;At least parts of these games are derived from data of the  Total Annihilation game (copyright Atari). As such, their distribution is potentially in breach of copyright laws and therefore not officially endorsed by the Spring RTS team.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[[Balanced Annihilation]]&amp;lt;/h2&amp;gt;&lt;br /&gt;
| width=40 |&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |  &amp;lt;h2&amp;gt; [http://www.springfiles.com/spring/games/tech-annihilation-2 Tech Annihilation] &amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | {{navimg|xsize=300|ysize=225|image=BAScreenShot.jpg|link=Balanced Annihilation}} &lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |{{navimgx|xsize=300|ysize=200|image=Tech_Annihilation.png|link=http://www.springfiles.com/spring/games/tech-annihilation-2}}&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
Balanced Annihilation (BA) is currently the most popular game played using the Spring engine.  BA is a mature game and new versions feature only minor balance tweaks.&lt;br /&gt;
&lt;br /&gt;
BA gameplay develops in stages of progressively heavier units with a growing economy. Many strategies are viable in BA, including focusing on map control, aggression, defense, air power, sea power, or mobility.&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | This Game is bigger, greater and more epic! Tech your Commander from a tiny Commander to a Galactic Commander! (by &#039;&#039;[BoS]Senna&#039;&#039;, currently no homepage)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[[NOTA]]&amp;lt;/h2&amp;gt;&lt;br /&gt;
| width=40 |&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;h2&amp;gt;[[XTA]]&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |{{navimg|xsize=300|ysize=225|image=Nota2nukes.jpg|link=NOTA}}&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | {{navimg|xsize=300|ysize=225|image=Screen508_s.jpg|link=XTA}}&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | Not Original Total Annihilation is a rethink of the Total Annihilation universe with a focus on strategic, base oriented gameplay. With its revised unit scale, huge battles erupt engaging hundreds of units and scores of unit types. NOTA&#039;s completely rethought air and sea gameplay forces participation in all elements and places the tide of conflict in your hands.&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;justify&amp;quot; valign=&amp;quot;top&amp;quot; | Originally developed as a Total Annihilation game by the Swedish Yankspankers, XTA is the Original Public Game released with first versions of Spring. Development of this game by the SYs has stopped a while ago, but it is still played and actively developed by the community.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Installing Games in Spring=&lt;br /&gt;
Quite a few of the games listed above come with standalone installers - which makes things easy (check their website to find out!). &lt;br /&gt;
&lt;br /&gt;
In some cases however, the game will only distribute a &amp;quot;game-file&amp;quot; - in this case you will need to have [[Download|an installation of the Spring-Engine]], and place the file in the .../Spring/games/ folder. If you are using a Lobby, this will often be able to do this for you automatically.&amp;lt;!--(which would these be?) Game packages requiring a more complex installation will usually come with instructions.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For an overview of information to get started, see the [[FAQ]].&lt;br /&gt;
&lt;br /&gt;
=Game Development=&lt;br /&gt;
For information on creating games for the Spring engine, see the [[Game_and_Unit_development|Game Making]] page.&lt;br /&gt;
&lt;br /&gt;
[[Category: Games]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Lua_ConstCOB&amp;diff=11181</id>
		<title>Lua ConstCOB</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Lua_ConstCOB&amp;diff=11181"/>
		<updated>2011-02-21T16:28:30Z</updated>

		<summary type="html">&lt;p&gt;Argh: Added note about where to find the equivalent list for COB (for the project devs who never read Spring&amp;#039;s source)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; [[Lua_Scripting|Lua Scripting]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
Note:  At this time, this list is roughly equivalent to the supported COB instructions at spring / rts / Sim / Units / Scripts / CobDefines.h, but you don&#039;t need to use the proper constant values (see Git repo).&lt;br /&gt;
&lt;br /&gt;
= Explode =&lt;br /&gt;
&#039;&#039;&#039;SFX.SHATTER&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;SFX.EXPLODE&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;SFX.EXPLODE_ON_HIT&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;SFX.FALL&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;SFX.SMOKE&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;SFX.FIRE&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;SFX.NONE&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;SFX.NO_CEG_TRAIL&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;SFX.NO_HEATCLOUD&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= EmitSfx =&lt;br /&gt;
&#039;&#039;&#039;SFX.VTOL&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;SFX.WAKE&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;SFX.REVERSE_WAKE&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;SFX.WHITE_SMOKE&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;SFX.BLACK_SMOKE&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;SFX.BUBBLE&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;SFX.CEG&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;SFX.FIRE_WEAPON&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;SFX.DETONATE_WEAPON&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Get/Set =&lt;br /&gt;
&#039;&#039;&#039;COB.ACTIVATION&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.STANDINGMOVEORDERS&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.STANDINGFIREORDERS&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.HEALTH&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.INBUILDSTANCE&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.BUSY&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.PIECE_XZ&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.PIECE_Y&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.UNIT_XZ&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.UNIT_Y&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.UNIT_HEIGHT&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.XZ_ATAN&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.XZ_HYPOT&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.ATAN&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.HYPOT&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.GROUND_HEIGHT&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.BUILD_PERCENT_LEFT&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.YARD_OPEN&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.BUGGER_OFF&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.ARMORED&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.IN_WATER&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.CURRENT_SPEED&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.VETERAN_LEVEL&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.ON_ROAD&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.MAX_ID&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.MY_ID&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.UNIT_TEAM&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.UNIT_BUILD_PERCENT_LEFT&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.UNIT_ALLIED&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.MAX_SPEED&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.CLOAKED&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.WANT_CLOAK&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.GROUND_WATER_HEIGHT&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.UPRIGHT&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.POW&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.PRINT&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.HEADING&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.TARGET_ID&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.LAST_ATTACKER_ID&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.LOS_RADIUS&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.AIR_LOS_RADIUS&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.RADAR_RADIUS&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.JAMMER_RADIUS&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.SONAR_RADIUS&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.SONAR_JAM_RADIUS&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.SEISMIC_RADIUS&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.DO_SEISMIC_PING&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.CURRENT_FUEL&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.TRANSPORT_ID&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.SHIELD_POWER&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.STEALTH&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.CRASHING&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.CHANGE_TARGET&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.CEG_DAMAGE&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.COB_ID&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.PLAY_SOUND&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.KILL_UNIT&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.ALPHA_THRESHOLD&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.SET_WEAPON_UNIT_TARGET&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.SET_WEAPON_GROUND_TARGET&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.SONAR_STEALTH&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.REVERSING&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.FLANK_B_MODE&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.FLANK_B_DIR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.FLANK_B_MOBILITY_ADD&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.FLANK_B_MAX_DAMAGE&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.FLANK_B_MIN_DAMAGE&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.WEAPON_RELOADSTATE&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.WEAPON_RELOADTIME&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.WEAPON_ACCURACY&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.WEAPON_SPRAY&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.WEAPON_RANGE&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.WEAPON_PROJECTILE_SPEED&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.MIN&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.MAX&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.ABS&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;COB.GAME_FRAME&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[category: Lua]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9647</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9647"/>
		<updated>2010-03-12T04:53:13Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Proposal:  Sensor handling redesign / simplification */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proposal:  Limited Play Area ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  Spring uses a finite-world model, where the scene has distinct bounds that all actors must obey.  Currently, this system uses a rectangular definition of the bounds, which is not sufficiently flexible for some types of simulation or game designs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  The new system should allow the map&#039;s developer to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of Units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++ / Lua.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  Sensor System Redesign ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine is currently capable of significant real-world applications in the area of simulation of certain types of events or situations; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic.  Some can be &amp;quot;jammed&amp;quot;, some cannot. Some use a LineOfSight algorithm to determine coverage, and some are circular in area.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current systems into a streamlined codebase, to reduce amount of code per function, and it should add additional features which would be then available for all types, while improving efficiency where possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039; Understanding of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Abstraction of Resource System ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring engine has its roots in an older Real-Time Strategy title, where only two major resources (&amp;quot;metal&amp;quot; and &amp;quot;energy&amp;quot;) were incorporated into the game design.&lt;br /&gt;
&lt;br /&gt;
This model has proven to be too inflexible to support certain types of gameplay, and is an obvious disadvantage to the Spring Engine when it is compared to other available software for constructing certain types of simulations.  Furthermore, the use of Lua to support alternative models has not always proven satisfactory to game developers, who may lack the programming experience to build a resource-distribution system from scratch.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Therefore, we propose to write a new, more-flexible system that will support more than two resources, and possibly implement new behavioral models. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Ingame Lobby ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  All existing Spring online player match-making systems (&#039;lobbies&#039;) are either difficult to customize for game developers or have a different look and feel from the games which are expected to operate with them.  While they are Open Source, and are being actively maintained, they do not provide the same end-user experience one finds in commercial titles.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  An in-game Lobby, leveraging the Spring Engine&#039;s strong Lua scripting support, should be implemented with customization and control in mind.  This may possibly be integrated with Spring&#039;s codebase, or it may be designed as a separate process overlaying to the game&#039;s UI.  &lt;br /&gt;
&lt;br /&gt;
This could also serve as a practical &amp;quot;front end&amp;quot; for the Spring Engine, giving all games developed on the engine a standardized, yet flexible, system to support their players.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Smarter Pathfinder ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, this project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Spring&#039;s current pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++; moderate understanding of pathfinding / following concepts and coding strategies&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
We propose to add more bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++; understanding of the languages to be binded to&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Improved Rendering System ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++ and some experience with modern rendering concepts.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  Resumption of Desynchronised Client States ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted, or &amp;quot;desync&amp;quot;.  This causes an end-user to lose the true state of the simulation, and is a significant problem for players.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Our proposal is that a new system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player&#039;s state, after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++; some expertise of networking concepts is required&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9646</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9646"/>
		<updated>2010-03-12T04:52:44Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Proposal: Smarter pathfinder */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proposal:  Limited Play Area ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  Spring uses a finite-world model, where the scene has distinct bounds that all actors must obey.  Currently, this system uses a rectangular definition of the bounds, which is not sufficiently flexible for some types of simulation or game designs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  The new system should allow the map&#039;s developer to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of Units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++ / Lua.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine is currently capable of significant real-world applications in the area of simulation of certain types of events or situations; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic.  Some can be &amp;quot;jammed&amp;quot;, some cannot. Some use a LineOfSight algorithm to determine coverage, and some are circular in area.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current systems into a streamlined codebase, to reduce amount of code per function, and it should add additional features which would be then available for all types, while improving efficiency where possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039; Understanding of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Abstraction of Resource System ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring engine has its roots in an older Real-Time Strategy title, where only two major resources (&amp;quot;metal&amp;quot; and &amp;quot;energy&amp;quot;) were incorporated into the game design.&lt;br /&gt;
&lt;br /&gt;
This model has proven to be too inflexible to support certain types of gameplay, and is an obvious disadvantage to the Spring Engine when it is compared to other available software for constructing certain types of simulations.  Furthermore, the use of Lua to support alternative models has not always proven satisfactory to game developers, who may lack the programming experience to build a resource-distribution system from scratch.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Therefore, we propose to write a new, more-flexible system that will support more than two resources, and possibly implement new behavioral models. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Ingame Lobby ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  All existing Spring online player match-making systems (&#039;lobbies&#039;) are either difficult to customize for game developers or have a different look and feel from the games which are expected to operate with them.  While they are Open Source, and are being actively maintained, they do not provide the same end-user experience one finds in commercial titles.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  An in-game Lobby, leveraging the Spring Engine&#039;s strong Lua scripting support, should be implemented with customization and control in mind.  This may possibly be integrated with Spring&#039;s codebase, or it may be designed as a separate process overlaying to the game&#039;s UI.  &lt;br /&gt;
&lt;br /&gt;
This could also serve as a practical &amp;quot;front end&amp;quot; for the Spring Engine, giving all games developed on the engine a standardized, yet flexible, system to support their players.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Smarter Pathfinder ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, this project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Spring&#039;s current pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++; moderate understanding of pathfinding / following concepts and coding strategies&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
We propose to add more bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++; understanding of the languages to be binded to&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Improved Rendering System ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++ and some experience with modern rendering concepts.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  Resumption of Desynchronised Client States ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted, or &amp;quot;desync&amp;quot;.  This causes an end-user to lose the true state of the simulation, and is a significant problem for players.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Our proposal is that a new system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player&#039;s state, after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++; some expertise of networking concepts is required&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9645</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9645"/>
		<updated>2010-03-12T04:49:17Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Limited Play Area */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proposal:  Limited Play Area ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  Spring uses a finite-world model, where the scene has distinct bounds that all actors must obey.  Currently, this system uses a rectangular definition of the bounds, which is not sufficiently flexible for some types of simulation or game designs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  The new system should allow the map&#039;s developer to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of Units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++ / Lua.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine is currently capable of significant real-world applications in the area of simulation of certain types of events or situations; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic.  Some can be &amp;quot;jammed&amp;quot;, some cannot. Some use a LineOfSight algorithm to determine coverage, and some are circular in area.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current systems into a streamlined codebase, to reduce amount of code per function, and it should add additional features which would be then available for all types, while improving efficiency where possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039; Understanding of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Abstraction of Resource System ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring engine has its roots in an older Real-Time Strategy title, where only two major resources (&amp;quot;metal&amp;quot; and &amp;quot;energy&amp;quot;) were incorporated into the game design.&lt;br /&gt;
&lt;br /&gt;
This model has proven to be too inflexible to support certain types of gameplay, and is an obvious disadvantage to the Spring Engine when it is compared to other available software for constructing certain types of simulations.  Furthermore, the use of Lua to support alternative models has not always proven satisfactory to game developers, who may lack the programming experience to build a resource-distribution system from scratch.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Therefore, we propose to write a new, more-flexible system that will support more than two resources, and possibly implement new behavioral models. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Ingame Lobby ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  All existing Spring online player match-making systems (&#039;lobbies&#039;) are either difficult to customize for game developers or have a different look and feel from the games which are expected to operate with them.  While they are Open Source, and are being actively maintained, they do not provide the same end-user experience one finds in commercial titles.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  An in-game Lobby, leveraging the Spring Engine&#039;s strong Lua scripting support, should be implemented with customization and control in mind.  This may possibly be integrated with Spring&#039;s codebase, or it may be designed as a separate process overlaying to the game&#039;s UI.  &lt;br /&gt;
&lt;br /&gt;
This could also serve as a practical &amp;quot;front end&amp;quot; for the Spring Engine, giving all games developed on the engine a standardized, yet flexible, system to support their players.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, this project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Spring&#039;s current pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++; moderate understanding of pathfinding / following concepts and coding strategies&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
We propose to add more bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++; understanding of the languages to be binded to&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Improved Rendering System ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++ and some experience with modern rendering concepts.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  Resumption of Desynchronised Client States ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted, or &amp;quot;desync&amp;quot;.  This causes an end-user to lose the true state of the simulation, and is a significant problem for players.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Our proposal is that a new system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player&#039;s state, after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++; some expertise of networking concepts is required&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9644</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9644"/>
		<updated>2010-03-12T04:41:21Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Reconnect / Host change during a match */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited Play Area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring uses a finite-world model, where the scene has distinct bounds that all actors must obey.  Currently, this system uses a rectangular definition of the bounds, which is not sufficiently flexible for some types of simulation or game designs.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map&#039;s developer to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of Units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine is currently capable of significant real-world applications in the area of simulation of certain types of events or situations; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic.  Some can be &amp;quot;jammed&amp;quot;, some cannot. Some use a LineOfSight algorithm to determine coverage, and some are circular in area.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current systems into a streamlined codebase, to reduce amount of code per function, and it should add additional features which would be then available for all types, while improving efficiency where possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039; Understanding of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Abstraction of Resource System ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring engine has its roots in an older Real-Time Strategy title, where only two major resources (&amp;quot;metal&amp;quot; and &amp;quot;energy&amp;quot;) were incorporated into the game design.&lt;br /&gt;
&lt;br /&gt;
This model has proven to be too inflexible to support certain types of gameplay, and is an obvious disadvantage to the Spring Engine when it is compared to other available software for constructing certain types of simulations.  Furthermore, the use of Lua to support alternative models has not always proven satisfactory to game developers, who may lack the programming experience to build a resource-distribution system from scratch.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Therefore, we propose to write a new, more-flexible system that will support more than two resources, and possibly implement new behavioral models. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Ingame Lobby ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  All existing Spring online player match-making systems (&#039;lobbies&#039;) are either difficult to customize for game developers or have a different look and feel from the games which are expected to operate with them.  While they are Open Source, and are being actively maintained, they do not provide the same end-user experience one finds in commercial titles.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  An in-game Lobby, leveraging the Spring Engine&#039;s strong Lua scripting support, should be implemented with customization and control in mind.  This may possibly be integrated with Spring&#039;s codebase, or it may be designed as a separate process overlaying to the game&#039;s UI.  &lt;br /&gt;
&lt;br /&gt;
This could also serve as a practical &amp;quot;front end&amp;quot; for the Spring Engine, giving all games developed on the engine a standardized, yet flexible, system to support their players.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, this project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Spring&#039;s current pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++; moderate understanding of pathfinding / following concepts and coding strategies&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
We propose to add more bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++; understanding of the languages to be binded to&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Improved Rendering System ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++ and some experience with modern rendering concepts.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  Resumption of Desynchronised Client States ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted, or &amp;quot;desync&amp;quot;.  This causes an end-user to lose the true state of the simulation, and is a significant problem for players.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Our proposal is that a new system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player&#039;s state, after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++; some expertise of networking concepts is required&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9643</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9643"/>
		<updated>2010-03-12T04:39:29Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* New Rendering System */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited Play Area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring uses a finite-world model, where the scene has distinct bounds that all actors must obey.  Currently, this system uses a rectangular definition of the bounds, which is not sufficiently flexible for some types of simulation or game designs.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map&#039;s developer to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of Units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine is currently capable of significant real-world applications in the area of simulation of certain types of events or situations; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic.  Some can be &amp;quot;jammed&amp;quot;, some cannot. Some use a LineOfSight algorithm to determine coverage, and some are circular in area.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current systems into a streamlined codebase, to reduce amount of code per function, and it should add additional features which would be then available for all types, while improving efficiency where possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039; Understanding of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Abstraction of Resource System ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring engine has its roots in an older Real-Time Strategy title, where only two major resources (&amp;quot;metal&amp;quot; and &amp;quot;energy&amp;quot;) were incorporated into the game design.&lt;br /&gt;
&lt;br /&gt;
This model has proven to be too inflexible to support certain types of gameplay, and is an obvious disadvantage to the Spring Engine when it is compared to other available software for constructing certain types of simulations.  Furthermore, the use of Lua to support alternative models has not always proven satisfactory to game developers, who may lack the programming experience to build a resource-distribution system from scratch.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Therefore, we propose to write a new, more-flexible system that will support more than two resources, and possibly implement new behavioral models. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Ingame Lobby ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  All existing Spring online player match-making systems (&#039;lobbies&#039;) are either difficult to customize for game developers or have a different look and feel from the games which are expected to operate with them.  While they are Open Source, and are being actively maintained, they do not provide the same end-user experience one finds in commercial titles.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  An in-game Lobby, leveraging the Spring Engine&#039;s strong Lua scripting support, should be implemented with customization and control in mind.  This may possibly be integrated with Spring&#039;s codebase, or it may be designed as a separate process overlaying to the game&#039;s UI.  &lt;br /&gt;
&lt;br /&gt;
This could also serve as a practical &amp;quot;front end&amp;quot; for the Spring Engine, giving all games developed on the engine a standardized, yet flexible, system to support their players.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, this project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Spring&#039;s current pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++; moderate understanding of pathfinding / following concepts and coding strategies&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
We propose to add more bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++; understanding of the languages to be binded to&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Improved Rendering System ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++ and some experience with modern rendering concepts.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted, or &amp;quot;desync&amp;quot;.  This causes an end-user to lose the true state of the simulation, and is a significant problem for players.&lt;br /&gt;
&lt;br /&gt;
Our proposal is that a new system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player&#039;s state, after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9642</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9642"/>
		<updated>2010-03-12T04:38:26Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Smarter pathfinder */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited Play Area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring uses a finite-world model, where the scene has distinct bounds that all actors must obey.  Currently, this system uses a rectangular definition of the bounds, which is not sufficiently flexible for some types of simulation or game designs.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map&#039;s developer to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of Units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine is currently capable of significant real-world applications in the area of simulation of certain types of events or situations; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic.  Some can be &amp;quot;jammed&amp;quot;, some cannot. Some use a LineOfSight algorithm to determine coverage, and some are circular in area.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current systems into a streamlined codebase, to reduce amount of code per function, and it should add additional features which would be then available for all types, while improving efficiency where possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039; Understanding of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Abstraction of Resource System ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring engine has its roots in an older Real-Time Strategy title, where only two major resources (&amp;quot;metal&amp;quot; and &amp;quot;energy&amp;quot;) were incorporated into the game design.&lt;br /&gt;
&lt;br /&gt;
This model has proven to be too inflexible to support certain types of gameplay, and is an obvious disadvantage to the Spring Engine when it is compared to other available software for constructing certain types of simulations.  Furthermore, the use of Lua to support alternative models has not always proven satisfactory to game developers, who may lack the programming experience to build a resource-distribution system from scratch.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Therefore, we propose to write a new, more-flexible system that will support more than two resources, and possibly implement new behavioral models. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Ingame Lobby ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  All existing Spring online player match-making systems (&#039;lobbies&#039;) are either difficult to customize for game developers or have a different look and feel from the games which are expected to operate with them.  While they are Open Source, and are being actively maintained, they do not provide the same end-user experience one finds in commercial titles.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  An in-game Lobby, leveraging the Spring Engine&#039;s strong Lua scripting support, should be implemented with customization and control in mind.  This may possibly be integrated with Spring&#039;s codebase, or it may be designed as a separate process overlaying to the game&#039;s UI.  &lt;br /&gt;
&lt;br /&gt;
This could also serve as a practical &amp;quot;front end&amp;quot; for the Spring Engine, giving all games developed on the engine a standardized, yet flexible, system to support their players.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, this project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Spring&#039;s current pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++; moderate understanding of pathfinding / following concepts and coding strategies&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
We propose to add more bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++; understanding of the languages to be binded to&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted, or &amp;quot;desync&amp;quot;.  This causes an end-user to lose the true state of the simulation, and is a significant problem for players.&lt;br /&gt;
&lt;br /&gt;
Our proposal is that a new system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player&#039;s state, after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9641</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9641"/>
		<updated>2010-03-12T04:38:07Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* More AI interfaces */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited Play Area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring uses a finite-world model, where the scene has distinct bounds that all actors must obey.  Currently, this system uses a rectangular definition of the bounds, which is not sufficiently flexible for some types of simulation or game designs.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map&#039;s developer to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of Units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine is currently capable of significant real-world applications in the area of simulation of certain types of events or situations; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic.  Some can be &amp;quot;jammed&amp;quot;, some cannot. Some use a LineOfSight algorithm to determine coverage, and some are circular in area.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current systems into a streamlined codebase, to reduce amount of code per function, and it should add additional features which would be then available for all types, while improving efficiency where possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039; Understanding of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Abstraction of Resource System ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring engine has its roots in an older Real-Time Strategy title, where only two major resources (&amp;quot;metal&amp;quot; and &amp;quot;energy&amp;quot;) were incorporated into the game design.&lt;br /&gt;
&lt;br /&gt;
This model has proven to be too inflexible to support certain types of gameplay, and is an obvious disadvantage to the Spring Engine when it is compared to other available software for constructing certain types of simulations.  Furthermore, the use of Lua to support alternative models has not always proven satisfactory to game developers, who may lack the programming experience to build a resource-distribution system from scratch.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Therefore, we propose to write a new, more-flexible system that will support more than two resources, and possibly implement new behavioral models. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Ingame Lobby ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  All existing Spring online player match-making systems (&#039;lobbies&#039;) are either difficult to customize for game developers or have a different look and feel from the games which are expected to operate with them.  While they are Open Source, and are being actively maintained, they do not provide the same end-user experience one finds in commercial titles.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  An in-game Lobby, leveraging the Spring Engine&#039;s strong Lua scripting support, should be implemented with customization and control in mind.  This may possibly be integrated with Spring&#039;s codebase, or it may be designed as a separate process overlaying to the game&#039;s UI.  &lt;br /&gt;
&lt;br /&gt;
This could also serve as a practical &amp;quot;front end&amp;quot; for the Spring Engine, giving all games developed on the engine a standardized, yet flexible, system to support their players.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, this project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Spring&#039;s current pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++; moderate understanding of pathfinding / following concepts and coding strategies&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
We propose to add more bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++; understanding of the languages to be binded to&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted, or &amp;quot;desync&amp;quot;.  This causes an end-user to lose the true state of the simulation, and is a significant problem for players.&lt;br /&gt;
&lt;br /&gt;
Our proposal is that a new system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player&#039;s state, after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9640</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9640"/>
		<updated>2010-03-12T04:36:15Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Smarter pathfinder */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited Play Area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring uses a finite-world model, where the scene has distinct bounds that all actors must obey.  Currently, this system uses a rectangular definition of the bounds, which is not sufficiently flexible for some types of simulation or game designs.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map&#039;s developer to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of Units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine is currently capable of significant real-world applications in the area of simulation of certain types of events or situations; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic.  Some can be &amp;quot;jammed&amp;quot;, some cannot. Some use a LineOfSight algorithm to determine coverage, and some are circular in area.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current systems into a streamlined codebase, to reduce amount of code per function, and it should add additional features which would be then available for all types, while improving efficiency where possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039; Understanding of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Abstraction of Resource System ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring engine has its roots in an older Real-Time Strategy title, where only two major resources (&amp;quot;metal&amp;quot; and &amp;quot;energy&amp;quot;) were incorporated into the game design.&lt;br /&gt;
&lt;br /&gt;
This model has proven to be too inflexible to support certain types of gameplay, and is an obvious disadvantage to the Spring Engine when it is compared to other available software for constructing certain types of simulations.  Furthermore, the use of Lua to support alternative models has not always proven satisfactory to game developers, who may lack the programming experience to build a resource-distribution system from scratch.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Therefore, we propose to write a new, more-flexible system that will support more than two resources, and possibly implement new behavioral models. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Ingame Lobby ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  All existing Spring online player match-making systems (&#039;lobbies&#039;) are either difficult to customize for game developers or have a different look and feel from the games which are expected to operate with them.  While they are Open Source, and are being actively maintained, they do not provide the same end-user experience one finds in commercial titles.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  An in-game Lobby, leveraging the Spring Engine&#039;s strong Lua scripting support, should be implemented with customization and control in mind.  This may possibly be integrated with Spring&#039;s codebase, or it may be designed as a separate process overlaying to the game&#039;s UI.  &lt;br /&gt;
&lt;br /&gt;
This could also serve as a practical &amp;quot;front end&amp;quot; for the Spring Engine, giving all games developed on the engine a standardized, yet flexible, system to support their players.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, this project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Spring&#039;s current pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++; moderate understanding of pathfinding / following concepts and coding strategies&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
Bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted, or &amp;quot;desync&amp;quot;.  This causes an end-user to lose the true state of the simulation, and is a significant problem for players.&lt;br /&gt;
&lt;br /&gt;
Our proposal is that a new system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player&#039;s state, after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9639</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9639"/>
		<updated>2010-03-12T04:34:52Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Proposal: Abstraction of Resource System */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited Play Area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring uses a finite-world model, where the scene has distinct bounds that all actors must obey.  Currently, this system uses a rectangular definition of the bounds, which is not sufficiently flexible for some types of simulation or game designs.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map&#039;s developer to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of Units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine is currently capable of significant real-world applications in the area of simulation of certain types of events or situations; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic.  Some can be &amp;quot;jammed&amp;quot;, some cannot. Some use a LineOfSight algorithm to determine coverage, and some are circular in area.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current systems into a streamlined codebase, to reduce amount of code per function, and it should add additional features which would be then available for all types, while improving efficiency where possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039; Understanding of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Abstraction of Resource System ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring engine has its roots in an older Real-Time Strategy title, where only two major resources (&amp;quot;metal&amp;quot; and &amp;quot;energy&amp;quot;) were incorporated into the game design.&lt;br /&gt;
&lt;br /&gt;
This model has proven to be too inflexible to support certain types of gameplay, and is an obvious disadvantage to the Spring Engine when it is compared to other available software for constructing certain types of simulations.  Furthermore, the use of Lua to support alternative models has not always proven satisfactory to game developers, who may lack the programming experience to build a resource-distribution system from scratch.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Therefore, we propose to write a new, more-flexible system that will support more than two resources, and possibly implement new behavioral models. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Ingame Lobby ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  All existing Spring online player match-making systems (&#039;lobbies&#039;) are either difficult to customize for game developers or have a different look and feel from the games which are expected to operate with them.  While they are Open Source, and are being actively maintained, they do not provide the same end-user experience one finds in commercial titles.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  An in-game Lobby, leveraging the Spring Engine&#039;s strong Lua scripting support, should be implemented with customization and control in mind.  This may possibly be integrated with Spring&#039;s codebase, or it may be designed as a separate process overlaying to the game&#039;s UI.  &lt;br /&gt;
&lt;br /&gt;
This could also serve as a practical &amp;quot;front end&amp;quot; for the Spring Engine, giving all games developed on the engine a standardized, yet flexible, system to support their players.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, this project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
Bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted, or &amp;quot;desync&amp;quot;.  This causes an end-user to lose the true state of the simulation, and is a significant problem for players.&lt;br /&gt;
&lt;br /&gt;
Our proposal is that a new system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player&#039;s state, after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9638</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9638"/>
		<updated>2010-03-12T04:34:35Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Basic ingame lobby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited Play Area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring uses a finite-world model, where the scene has distinct bounds that all actors must obey.  Currently, this system uses a rectangular definition of the bounds, which is not sufficiently flexible for some types of simulation or game designs.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map&#039;s developer to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of Units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine is currently capable of significant real-world applications in the area of simulation of certain types of events or situations; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic.  Some can be &amp;quot;jammed&amp;quot;, some cannot. Some use a LineOfSight algorithm to determine coverage, and some are circular in area.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current systems into a streamlined codebase, to reduce amount of code per function, and it should add additional features which would be then available for all types, while improving efficiency where possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039; Understanding of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Abstraction of Resource System ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring engine has its roots in an older Real-Time Strategy title, where only two major resources (&amp;quot;metal&amp;quot; and &amp;quot;energy&amp;quot;) were incorporated into the game design.&lt;br /&gt;
&lt;br /&gt;
This model has proven to be too inflexible to support certain types of gameplay, and is an obvious disadvantage to the Spring Engine when it is compared to other available software for constructing certain types of simulations.  Furthermore, the use of Lua to support alternative models has not always proven satisfactory to game developers, who may lack the programming experience to build a resource-distribution system from scratch.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Therefore, we propose to write a new, more-flexible system that will support more than two resources, and possibly implement new behavioral models. &lt;br /&gt;
&lt;br /&gt;
Requirements:  Understanding of C++&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Ingame Lobby ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  All existing Spring online player match-making systems (&#039;lobbies&#039;) are either difficult to customize for game developers or have a different look and feel from the games which are expected to operate with them.  While they are Open Source, and are being actively maintained, they do not provide the same end-user experience one finds in commercial titles.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  An in-game Lobby, leveraging the Spring Engine&#039;s strong Lua scripting support, should be implemented with customization and control in mind.  This may possibly be integrated with Spring&#039;s codebase, or it may be designed as a separate process overlaying to the game&#039;s UI.  &lt;br /&gt;
&lt;br /&gt;
This could also serve as a practical &amp;quot;front end&amp;quot; for the Spring Engine, giving all games developed on the engine a standardized, yet flexible, system to support their players.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;  Understanding of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, this project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
Bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted, or &amp;quot;desync&amp;quot;.  This causes an end-user to lose the true state of the simulation, and is a significant problem for players.&lt;br /&gt;
&lt;br /&gt;
Our proposal is that a new system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player&#039;s state, after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9637</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9637"/>
		<updated>2010-03-12T04:33:22Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Proposal:  Sensor handling redesign / simplification */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited Play Area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring uses a finite-world model, where the scene has distinct bounds that all actors must obey.  Currently, this system uses a rectangular definition of the bounds, which is not sufficiently flexible for some types of simulation or game designs.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map&#039;s developer to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of Units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine is currently capable of significant real-world applications in the area of simulation of certain types of events or situations; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic.  Some can be &amp;quot;jammed&amp;quot;, some cannot. Some use a LineOfSight algorithm to determine coverage, and some are circular in area.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current systems into a streamlined codebase, to reduce amount of code per function, and it should add additional features which would be then available for all types, while improving efficiency where possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039; Understanding of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Abstraction of Resource System ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring engine has its roots in an older Real-Time Strategy title, where only two major resources (&amp;quot;metal&amp;quot; and &amp;quot;energy&amp;quot;) were incorporated into the game design.&lt;br /&gt;
&lt;br /&gt;
This model has proven to be too inflexible to support certain types of gameplay, and is an obvious disadvantage to the Spring Engine when it is compared to other available software for constructing certain types of simulations.  Furthermore, the use of Lua to support alternative models has not always proven satisfactory to game developers, who may lack the programming experience to build a resource-distribution system from scratch.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Therefore, we propose to write a new, more-flexible system that will support more than two resources, and possibly implement new behavioral models. &lt;br /&gt;
&lt;br /&gt;
Requirements:  Understanding of C++&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
All existing Spring online player match-making systems (&#039;lobbies&#039;) are either difficult to customize for game developers or have a different look and feel from the games which are expected to operate with them.  While they are Open Source, and are being actively maintained, they do not provide the same end-user experience one finds in commercial titles.&lt;br /&gt;
&lt;br /&gt;
An in-game Lobby, leveraging the Spring Engine&#039;s strong Lua scripting support, should be implemented with customization and control in mind.  This may possibly be integrated with Spring&#039;s codebase, or it may be designed as a separate process overlaying to the game&#039;s UI.  &lt;br /&gt;
&lt;br /&gt;
This could also serve as a practical &amp;quot;front end&amp;quot; for the Spring Engine, giving all games developed on the engine a standardized, yet flexible, system to support their players.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, this project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
Bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted, or &amp;quot;desync&amp;quot;.  This causes an end-user to lose the true state of the simulation, and is a significant problem for players.&lt;br /&gt;
&lt;br /&gt;
Our proposal is that a new system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player&#039;s state, after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9636</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9636"/>
		<updated>2010-03-12T04:32:53Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Abstraction of Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited Play Area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring uses a finite-world model, where the scene has distinct bounds that all actors must obey.  Currently, this system uses a rectangular definition of the bounds, which is not sufficiently flexible for some types of simulation or game designs.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map&#039;s developer to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of Units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine is currently capable of significant real-world applications in the area of simulation of certain types of events or situations; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic.  Some can be &amp;quot;jammed&amp;quot;, some cannot. Some use a LineOfSight algorithm to determine coverage, and some are circular in area.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current systems into a streamlined codebase, to reduce amount of code per function, and it should add additional features which would be then available for all types, while improving efficiency where possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039; Knowledge of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Proposal: Abstraction of Resource System ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring engine has its roots in an older Real-Time Strategy title, where only two major resources (&amp;quot;metal&amp;quot; and &amp;quot;energy&amp;quot;) were incorporated into the game design.&lt;br /&gt;
&lt;br /&gt;
This model has proven to be too inflexible to support certain types of gameplay, and is an obvious disadvantage to the Spring Engine when it is compared to other available software for constructing certain types of simulations.  Furthermore, the use of Lua to support alternative models has not always proven satisfactory to game developers, who may lack the programming experience to build a resource-distribution system from scratch.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Therefore, we propose to write a new, more-flexible system that will support more than two resources, and possibly implement new behavioral models. &lt;br /&gt;
&lt;br /&gt;
Requirements:  Understanding of C++&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
All existing Spring online player match-making systems (&#039;lobbies&#039;) are either difficult to customize for game developers or have a different look and feel from the games which are expected to operate with them.  While they are Open Source, and are being actively maintained, they do not provide the same end-user experience one finds in commercial titles.&lt;br /&gt;
&lt;br /&gt;
An in-game Lobby, leveraging the Spring Engine&#039;s strong Lua scripting support, should be implemented with customization and control in mind.  This may possibly be integrated with Spring&#039;s codebase, or it may be designed as a separate process overlaying to the game&#039;s UI.  &lt;br /&gt;
&lt;br /&gt;
This could also serve as a practical &amp;quot;front end&amp;quot; for the Spring Engine, giving all games developed on the engine a standardized, yet flexible, system to support their players.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, this project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
Bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted, or &amp;quot;desync&amp;quot;.  This causes an end-user to lose the true state of the simulation, and is a significant problem for players.&lt;br /&gt;
&lt;br /&gt;
Our proposal is that a new system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player&#039;s state, after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9635</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9635"/>
		<updated>2010-03-12T04:31:42Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Sensor handling redesign / simplification */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited Play Area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring uses a finite-world model, where the scene has distinct bounds that all actors must obey.  Currently, this system uses a rectangular definition of the bounds, which is not sufficiently flexible for some types of simulation or game designs.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map&#039;s developer to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of Units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
== Proposal:  Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why:&#039;&#039;&#039;  The Spring Engine is currently capable of significant real-world applications in the area of simulation of certain types of events or situations; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What:&#039;&#039;&#039;  Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic.  Some can be &amp;quot;jammed&amp;quot;, some cannot. Some use a LineOfSight algorithm to determine coverage, and some are circular in area.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current systems into a streamlined codebase, to reduce amount of code per function, and it should add additional features which would be then available for all types, while improving efficiency where possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039; Knowledge of C++ / Lua&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Abstraction of Resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in an older Real-Time Strategy title, where only two major resources (&amp;quot;metal&amp;quot; and &amp;quot;energy&amp;quot;) were incorporated into the game design.&lt;br /&gt;
&lt;br /&gt;
This model has proven to be too inflexible to support certain types of gameplay, and is an obvious disadvantage to the Spring Engine when it is compared to other available software for constructing certain types of simulations.  Furthermore, the use of Lua to support alternative models has not always proven satisfactory to game developers, who may lack the programming experience to build a resource-distribution system from scratch.&lt;br /&gt;
&lt;br /&gt;
Therefore, we propose to write a new, more-flexible system that will support more than two resources, and possibly implement new behavioral models. &lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
All existing Spring online player match-making systems (&#039;lobbies&#039;) are either difficult to customize for game developers or have a different look and feel from the games which are expected to operate with them.  While they are Open Source, and are being actively maintained, they do not provide the same end-user experience one finds in commercial titles.&lt;br /&gt;
&lt;br /&gt;
An in-game Lobby, leveraging the Spring Engine&#039;s strong Lua scripting support, should be implemented with customization and control in mind.  This may possibly be integrated with Spring&#039;s codebase, or it may be designed as a separate process overlaying to the game&#039;s UI.  &lt;br /&gt;
&lt;br /&gt;
This could also serve as a practical &amp;quot;front end&amp;quot; for the Spring Engine, giving all games developed on the engine a standardized, yet flexible, system to support their players.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, this project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
Bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted, or &amp;quot;desync&amp;quot;.  This causes an end-user to lose the true state of the simulation, and is a significant problem for players.&lt;br /&gt;
&lt;br /&gt;
Our proposal is that a new system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player&#039;s state, after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9634</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9634"/>
		<updated>2010-03-12T04:13:13Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Limited play area */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited Play Area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring uses a finite-world model, where the scene has distinct bounds that all actors must obey.  Currently, this system uses a rectangular definition of the bounds, which is not sufficiently flexible for some types of simulation or game designs.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map&#039;s developer to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of Units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is currently capable of significant real-world applications in the area of simulation of certain types of events or situations; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic.  Some can be &amp;quot;jammed&amp;quot;, some cannot. Some use a LineOfSight algorithm to determine coverage, and some are circular in area.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current systems into a streamlined codebase, to reduce amount of code per function, and it should add additional features which would be then available for all types, while improving efficiency where possible.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Abstraction of Resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in an older Real-Time Strategy title, where only two major resources (&amp;quot;metal&amp;quot; and &amp;quot;energy&amp;quot;) were incorporated into the game design.&lt;br /&gt;
&lt;br /&gt;
This model has proven to be too inflexible to support certain types of gameplay, and is an obvious disadvantage to the Spring Engine when it is compared to other available software for constructing certain types of simulations.  Furthermore, the use of Lua to support alternative models has not always proven satisfactory to game developers, who may lack the programming experience to build a resource-distribution system from scratch.&lt;br /&gt;
&lt;br /&gt;
Therefore, we propose to write a new, more-flexible system that will support more than two resources, and possibly implement new behavioral models. &lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
All existing Spring online player match-making systems (&#039;lobbies&#039;) are either difficult to customize for game developers or have a different look and feel from the games which are expected to operate with them.  While they are Open Source, and are being actively maintained, they do not provide the same end-user experience one finds in commercial titles.&lt;br /&gt;
&lt;br /&gt;
An in-game Lobby, leveraging the Spring Engine&#039;s strong Lua scripting support, should be implemented with customization and control in mind.  This may possibly be integrated with Spring&#039;s codebase, or it may be designed as a separate process overlaying to the game&#039;s UI.  &lt;br /&gt;
&lt;br /&gt;
This could also serve as a practical &amp;quot;front end&amp;quot; for the Spring Engine, giving all games developed on the engine a standardized, yet flexible, system to support their players.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, this project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
Bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted, or &amp;quot;desync&amp;quot;.  This causes an end-user to lose the true state of the simulation, and is a significant problem for players.&lt;br /&gt;
&lt;br /&gt;
Our proposal is that a new system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player&#039;s state, after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9633</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9633"/>
		<updated>2010-03-12T04:10:53Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Sensor handling redesign / simplification */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
Current Spring map formats have a hardcoded rectangle geometry; also they provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is currently capable of significant real-world applications in the area of simulation of certain types of events or situations; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic.  Some can be &amp;quot;jammed&amp;quot;, some cannot. Some use a LineOfSight algorithm to determine coverage, and some are circular in area.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current systems into a streamlined codebase, to reduce amount of code per function, and it should add additional features which would be then available for all types, while improving efficiency where possible.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Abstraction of Resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in an older Real-Time Strategy title, where only two major resources (&amp;quot;metal&amp;quot; and &amp;quot;energy&amp;quot;) were incorporated into the game design.&lt;br /&gt;
&lt;br /&gt;
This model has proven to be too inflexible to support certain types of gameplay, and is an obvious disadvantage to the Spring Engine when it is compared to other available software for constructing certain types of simulations.  Furthermore, the use of Lua to support alternative models has not always proven satisfactory to game developers, who may lack the programming experience to build a resource-distribution system from scratch.&lt;br /&gt;
&lt;br /&gt;
Therefore, we propose to write a new, more-flexible system that will support more than two resources, and possibly implement new behavioral models. &lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
All existing Spring online player match-making systems (&#039;lobbies&#039;) are either difficult to customize for game developers or have a different look and feel from the games which are expected to operate with them.  While they are Open Source, and are being actively maintained, they do not provide the same end-user experience one finds in commercial titles.&lt;br /&gt;
&lt;br /&gt;
An in-game Lobby, leveraging the Spring Engine&#039;s strong Lua scripting support, should be implemented with customization and control in mind.  This may possibly be integrated with Spring&#039;s codebase, or it may be designed as a separate process overlaying to the game&#039;s UI.  &lt;br /&gt;
&lt;br /&gt;
This could also serve as a practical &amp;quot;front end&amp;quot; for the Spring Engine, giving all games developed on the engine a standardized, yet flexible, system to support their players.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, this project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
Bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted, or &amp;quot;desync&amp;quot;.  This causes an end-user to lose the true state of the simulation, and is a significant problem for players.&lt;br /&gt;
&lt;br /&gt;
Our proposal is that a new system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player&#039;s state, after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9632</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9632"/>
		<updated>2010-03-12T04:08:28Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Engine level abstraction of resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
Current Spring map formats have a hardcoded rectangle geometry; also they provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is currently capable of significant real-world applications in the areas of simulation; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic, some can be jammed, some cannot. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce amount of code per functionality, and eventually add additional features which would be then available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably this all should also be faster than the current system or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Abstraction of Resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in an older Real-Time Strategy title, where only two major resources (&amp;quot;metal&amp;quot; and &amp;quot;energy&amp;quot;) were incorporated into the game design.&lt;br /&gt;
&lt;br /&gt;
This model has proven to be too inflexible to support certain types of gameplay, and is an obvious disadvantage to the Spring Engine when it is compared to other available software for constructing certain types of simulations.  Furthermore, the use of Lua to support alternative models has not always proven satisfactory to game developers, who may lack the programming experience to build a resource-distribution system from scratch.&lt;br /&gt;
&lt;br /&gt;
Therefore, we propose to write a new, more-flexible system that will support more than two resources, and possibly implement new behavioral models. &lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
All existing Spring online player match-making systems (&#039;lobbies&#039;) are either difficult to customize for game developers or have a different look and feel from the games which are expected to operate with them.  While they are Open Source, and are being actively maintained, they do not provide the same end-user experience one finds in commercial titles.&lt;br /&gt;
&lt;br /&gt;
An in-game Lobby, leveraging the Spring Engine&#039;s strong Lua scripting support, should be implemented with customization and control in mind.  This may possibly be integrated with Spring&#039;s codebase, or it may be designed as a separate process overlaying to the game&#039;s UI.  &lt;br /&gt;
&lt;br /&gt;
This could also serve as a practical &amp;quot;front end&amp;quot; for the Spring Engine, giving all games developed on the engine a standardized, yet flexible, system to support their players.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, this project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
Bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted, or &amp;quot;desync&amp;quot;.  This causes an end-user to lose the true state of the simulation, and is a significant problem for players.&lt;br /&gt;
&lt;br /&gt;
Our proposal is that a new system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player&#039;s state, after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9631</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9631"/>
		<updated>2010-03-12T04:03:02Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Basic ingame lobby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
Current Spring map formats have a hardcoded rectangle geometry; also they provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is currently capable of significant real-world applications in the areas of simulation; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic, some can be jammed, some cannot. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce amount of code per functionality, and eventually add additional features which would be then available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably this all should also be faster than the current system or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in being a Total Annihilation clone; even if such intent has been dropped since quite some time, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
The old system needs to be replaced, the new one should be flexible enough to reproduce everything that the old system did and be able to imitate the behaviour of most common RTS game titles.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
All existing Spring online player match-making systems (&#039;lobbies&#039;) are either difficult to customize for game developers or have a different look and feel from the games which are expected to operate with them.  While they are Open Source, and are being actively maintained, they do not provide the same end-user experience one finds in commercial titles.&lt;br /&gt;
&lt;br /&gt;
An in-game Lobby, leveraging the Spring Engine&#039;s strong Lua scripting support, should be implemented with customization and control in mind.  This may possibly be integrated with Spring&#039;s codebase, or it may be designed as a separate process overlaying to the game&#039;s UI.  &lt;br /&gt;
&lt;br /&gt;
This could also serve as a practical &amp;quot;front end&amp;quot; for the Spring Engine, giving all games developed on the engine a standardized, yet flexible, system to support their players.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, this project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
Bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted, or &amp;quot;desync&amp;quot;.  This causes an end-user to lose the true state of the simulation, and is a significant problem for players.&lt;br /&gt;
&lt;br /&gt;
Our proposal is that a new system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player&#039;s state, after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9630</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9630"/>
		<updated>2010-03-12T04:02:48Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Basic ingame lobby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
Current Spring map formats have a hardcoded rectangle geometry; also they provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is currently capable of significant real-world applications in the areas of simulation; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic, some can be jammed, some cannot. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce amount of code per functionality, and eventually add additional features which would be then available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably this all should also be faster than the current system or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in being a Total Annihilation clone; even if such intent has been dropped since quite some time, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
The old system needs to be replaced, the new one should be flexible enough to reproduce everything that the old system did and be able to imitate the behaviour of most common RTS game titles.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: Hard&lt;br /&gt;
&lt;br /&gt;
All existing Spring online player match-making systems (&#039;lobbies&#039;) are either difficult to customize for game developers or have a different look and feel from the games which are expected to operate with them.  While they are Open Source, and are being actively maintained, they do not provide the same end-user experience one finds in commercial titles.&lt;br /&gt;
&lt;br /&gt;
An in-game Lobby, leveraging the Spring Engine&#039;s strong Lua scripting support, should be implemented with customization and control in mind.  This may possibly be integrated with Spring&#039;s codebase, or it may be designed as a separate process overlaying to the game&#039;s UI.  &lt;br /&gt;
&lt;br /&gt;
This could also serve as a practical &amp;quot;front end&amp;quot; for the Spring Engine, giving all games developed on the engine a standardized, yet flexible, system to support their players.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, this project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
Bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted, or &amp;quot;desync&amp;quot;.  This causes an end-user to lose the true state of the simulation, and is a significant problem for players.&lt;br /&gt;
&lt;br /&gt;
Our proposal is that a new system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player&#039;s state, after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9629</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9629"/>
		<updated>2010-03-12T03:57:39Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Smarter pathfinder */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
Current Spring map formats have a hardcoded rectangle geometry; also they provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is currently capable of significant real-world applications in the areas of simulation; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic, some can be jammed, some cannot. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce amount of code per functionality, and eventually add additional features which would be then available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably this all should also be faster than the current system or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in being a Total Annihilation clone; even if such intent has been dropped since quite some time, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
The old system needs to be replaced, the new one should be flexible enough to reproduce everything that the old system did and be able to imitate the behaviour of most common RTS game titles.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
All existing Spring interfaces (lobbies) are either difficult to customize for game developers or have a different look &#039;n feel from the game itself and require focus switch from the game itself to operate.&lt;br /&gt;
&lt;br /&gt;
A new, Lua scriptable lobby should be implemented with customization and control in mind, possibly integrated with Spring codebase and/or running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, this project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
Bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted, or &amp;quot;desync&amp;quot;.  This causes an end-user to lose the true state of the simulation, and is a significant problem for players.&lt;br /&gt;
&lt;br /&gt;
Our proposal is that a new system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player&#039;s state, after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9628</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9628"/>
		<updated>2010-03-12T03:57:04Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Smarter pathfinder */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
Current Spring map formats have a hardcoded rectangle geometry; also they provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is currently capable of significant real-world applications in the areas of simulation; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic, some can be jammed, some cannot. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce amount of code per functionality, and eventually add additional features which would be then available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably this all should also be faster than the current system or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in being a Total Annihilation clone; even if such intent has been dropped since quite some time, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
The old system needs to be replaced, the new one should be flexible enough to reproduce everything that the old system did and be able to imitate the behaviour of most common RTS game titles.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
All existing Spring interfaces (lobbies) are either difficult to customize for game developers or have a different look &#039;n feel from the game itself and require focus switch from the game itself to operate.&lt;br /&gt;
&lt;br /&gt;
A new, Lua scriptable lobby should be implemented with customization and control in mind, possibly integrated with Spring codebase and/or running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, such a project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
Bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted, or &amp;quot;desync&amp;quot;.  This causes an end-user to lose the true state of the simulation, and is a significant problem for players.&lt;br /&gt;
&lt;br /&gt;
Our proposal is that a new system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player&#039;s state, after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9627</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9627"/>
		<updated>2010-03-12T03:56:51Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Reconnect / Host change during a match */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
Current Spring map formats have a hardcoded rectangle geometry; also they provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is currently capable of significant real-world applications in the areas of simulation; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic, some can be jammed, some cannot. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce amount of code per functionality, and eventually add additional features which would be then available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably this all should also be faster than the current system or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in being a Total Annihilation clone; even if such intent has been dropped since quite some time, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
The old system needs to be replaced, the new one should be flexible enough to reproduce everything that the old system did and be able to imitate the behaviour of most common RTS game titles.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
All existing Spring interfaces (lobbies) are either difficult to customize for game developers or have a different look &#039;n feel from the game itself and require focus switch from the game itself to operate.&lt;br /&gt;
&lt;br /&gt;
A new, Lua scriptable lobby should be implemented with customization and control in mind, possibly integrated with Spring codebase and/or running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, such a project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
Bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted, or &amp;quot;desync&amp;quot;.  This causes an end-user to lose the true state of the simulation, and is a significant problem for players.&lt;br /&gt;
&lt;br /&gt;
Our proposal is that a new system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player&#039;s state, after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9626</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9626"/>
		<updated>2010-03-12T03:54:52Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* New Rendering System */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
Current Spring map formats have a hardcoded rectangle geometry; also they provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is currently capable of significant real-world applications in the areas of simulation; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic, some can be jammed, some cannot. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce amount of code per functionality, and eventually add additional features which would be then available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably this all should also be faster than the current system or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in being a Total Annihilation clone; even if such intent has been dropped since quite some time, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
The old system needs to be replaced, the new one should be flexible enough to reproduce everything that the old system did and be able to imitate the behaviour of most common RTS game titles.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
All existing Spring interfaces (lobbies) are either difficult to customize for game developers or have a different look &#039;n feel from the game itself and require focus switch from the game itself to operate.&lt;br /&gt;
&lt;br /&gt;
A new, Lua scriptable lobby should be implemented with customization and control in mind, possibly integrated with Spring codebase and/or running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, such a project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
Bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine&#039;s rendering system remains near the cutting edge of practical, functional OpenGL in a realtime environment, and is certainly notable amongst free, Open Source projects for its realism and flexibility.  While it is not as advanced as the latest commercial engines, Spring&#039;s developers have made great strides in the last year, adding significant new features to the engine.&lt;br /&gt;
&lt;br /&gt;
However, the core Spring rendering engine still includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
Under this proposal, the rendering pipeline would be given a complete overhaul using modern graphic programming techniques, including shaders, standardised model formats that are easier for new artists to adapt to, and other enhancements, such as bump mapping, normal mapping, and multiple textures per Unit, while utilizing code that adheres to the OpenGL ES 2.0 specification.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can die, so a system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9625</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9625"/>
		<updated>2010-03-12T03:47:21Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* More AI interfaces */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
Current Spring map formats have a hardcoded rectangle geometry; also they provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is currently capable of significant real-world applications in the areas of simulation; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic, some can be jammed, some cannot. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce amount of code per functionality, and eventually add additional features which would be then available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably this all should also be faster than the current system or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in being a Total Annihilation clone; even if such intent has been dropped since quite some time, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
The old system needs to be replaced, the new one should be flexible enough to reproduce everything that the old system did and be able to imitate the behaviour of most common RTS game titles.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
All existing Spring interfaces (lobbies) are either difficult to customize for game developers or have a different look &#039;n feel from the game itself and require focus switch from the game itself to operate.&lt;br /&gt;
&lt;br /&gt;
A new, Lua scriptable lobby should be implemented with customization and control in mind, possibly integrated with Spring codebase and/or running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, such a project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;Medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is already a popular engine for academic projects to study Artificial Intelligence, given the Open Source model of development and strong support within the A.I. community.  This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I.&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s A.I. interface supports bindings for multiple languages. Currently C++, C and java are supported, and AIs may be constructed using Lua.&lt;br /&gt;
&lt;br /&gt;
Bindings for more languages and/or virtual machines would be added, to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
The Spring rendering engine uses a lot of FFP (fixed function pipeline) OpenGL functions. This model is becoming deprecated and is generally slower and less flexible than shader usage.&lt;br /&gt;
&lt;br /&gt;
The rendering code should get a complete overhaul using modern graphic programming techniques such as shaders, implement load support for more standardised model formats (backwards compatibility with current available formats is mandatory either through direct load or automatic conversion to the new types) and eventually introduce some graphic enhancing features (bump mapping, normal mapping, multitexturing, etc.).&lt;br /&gt;
&lt;br /&gt;
OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can die, so a system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9624</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9624"/>
		<updated>2010-03-12T03:43:19Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Smarter pathfinder */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
Current Spring map formats have a hardcoded rectangle geometry; also they provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is currently capable of significant real-world applications in the areas of simulation; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic, some can be jammed, some cannot. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce amount of code per functionality, and eventually add additional features which would be then available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably this all should also be faster than the current system or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in being a Total Annihilation clone; even if such intent has been dropped since quite some time, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
The old system needs to be replaced, the new one should be flexible enough to reproduce everything that the old system did and be able to imitate the behaviour of most common RTS game titles.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
All existing Spring interfaces (lobbies) are either difficult to customize for game developers or have a different look &#039;n feel from the game itself and require focus switch from the game itself to operate.&lt;br /&gt;
&lt;br /&gt;
A new, Lua scriptable lobby should be implemented with customization and control in mind, possibly integrated with Spring codebase and/or running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, such a project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently legacy C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
Bindings for more languages and/or virtual machines should be added to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
The Spring rendering engine uses a lot of FFP (fixed function pipeline) OpenGL functions. This model is becoming deprecated and is generally slower and less flexible than shader usage.&lt;br /&gt;
&lt;br /&gt;
The rendering code should get a complete overhaul using modern graphic programming techniques such as shaders, implement load support for more standardised model formats (backwards compatibility with current available formats is mandatory either through direct load or automatic conversion to the new types) and eventually introduce some graphic enhancing features (bump mapping, normal mapping, multitexturing, etc.).&lt;br /&gt;
&lt;br /&gt;
OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can die, so a system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9623</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9623"/>
		<updated>2010-03-12T03:42:55Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Smarter pathfinder */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
Current Spring map formats have a hardcoded rectangle geometry; also they provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is currently capable of significant real-world applications in the areas of simulation; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic, some can be jammed, some cannot. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce amount of code per functionality, and eventually add additional features which would be then available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably this all should also be faster than the current system or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in being a Total Annihilation clone; even if such intent has been dropped since quite some time, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
The old system needs to be replaced, the new one should be flexible enough to reproduce everything that the old system did and be able to imitate the behaviour of most common RTS game titles.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
All existing Spring interfaces (lobbies) are either difficult to customize for game developers or have a different look &#039;n feel from the game itself and require focus switch from the game itself to operate.&lt;br /&gt;
&lt;br /&gt;
A new, Lua scriptable lobby should be implemented with customization and control in mind, possibly integrated with Spring codebase and/or running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, such a project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently legacy C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
Bindings for more languages and/or virtual machines should be added to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
The Spring rendering engine uses a lot of FFP (fixed function pipeline) OpenGL functions. This model is becoming deprecated and is generally slower and less flexible than shader usage.&lt;br /&gt;
&lt;br /&gt;
The rendering code should get a complete overhaul using modern graphic programming techniques such as shaders, implement load support for more standardised model formats (backwards compatibility with current available formats is mandatory either through direct load or automatic conversion to the new types) and eventually introduce some graphic enhancing features (bump mapping, normal mapping, multitexturing, etc.).&lt;br /&gt;
&lt;br /&gt;
OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can die, so a system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9622</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9622"/>
		<updated>2010-03-12T03:42:32Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Sensor handling redesign / simplification */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
Current Spring map formats have a hardcoded rectangle geometry; also they provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
The Spring Engine is currently capable of significant real-world applications in the areas of simulation; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic, some can be jammed, some cannot. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce amount of code per functionality, and eventually add additional features which would be then available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably this all should also be faster than the current system or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in being a Total Annihilation clone; even if such intent has been dropped since quite some time, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
The old system needs to be replaced, the new one should be flexible enough to reproduce everything that the old system did and be able to imitate the behaviour of most common RTS game titles.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
All existing Spring interfaces (lobbies) are either difficult to customize for game developers or have a different look &#039;n feel from the game itself and require focus switch from the game itself to operate.&lt;br /&gt;
&lt;br /&gt;
A new, Lua scriptable lobby should be implemented with customization and control in mind, possibly integrated with Spring codebase and/or running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, such a project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently legacy C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
Bindings for more languages and/or virtual machines should be added to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
The Spring rendering engine uses a lot of FFP (fixed function pipeline) OpenGL functions. This model is becoming deprecated and is generally slower and less flexible than shader usage.&lt;br /&gt;
&lt;br /&gt;
The rendering code should get a complete overhaul using modern graphic programming techniques such as shaders, implement load support for more standardised model formats (backwards compatibility with current available formats is mandatory either through direct load or automatic conversion to the new types) and eventually introduce some graphic enhancing features (bump mapping, normal mapping, multitexturing, etc.).&lt;br /&gt;
&lt;br /&gt;
OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can die, so a system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9621</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9621"/>
		<updated>2010-03-12T03:40:41Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Smarter pathfinder */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
Current Spring map formats have a hardcoded rectangle geometry; also they provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic, some can be jammed, some cannot. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce amount of code per functionality, and eventually add additional features which would be then available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably this all should also be faster than the current system or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in being a Total Annihilation clone; even if such intent has been dropped since quite some time, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
The old system needs to be replaced, the new one should be flexible enough to reproduce everything that the old system did and be able to imitate the behaviour of most common RTS game titles.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
All existing Spring interfaces (lobbies) are either difficult to customize for game developers or have a different look &#039;n feel from the game itself and require focus switch from the game itself to operate.&lt;br /&gt;
&lt;br /&gt;
A new, Lua scriptable lobby should be implemented with customization and control in mind, possibly integrated with Spring codebase and/or running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).&lt;br /&gt;
&lt;br /&gt;
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
Given the Spring Engine&#039;s need to routinely handle responsive and bug-free pathfinding and path-following for large numbers of actors, such a project could become a useful showcase and useful codebase for projects needing pathfinders, and could expand the world&#039;s understanding of pathfinding and path-following in realtime systems.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently legacy C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
Bindings for more languages and/or virtual machines should be added to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
The Spring rendering engine uses a lot of FFP (fixed function pipeline) OpenGL functions. This model is becoming deprecated and is generally slower and less flexible than shader usage.&lt;br /&gt;
&lt;br /&gt;
The rendering code should get a complete overhaul using modern graphic programming techniques such as shaders, implement load support for more standardised model formats (backwards compatibility with current available formats is mandatory either through direct load or automatic conversion to the new types) and eventually introduce some graphic enhancing features (bump mapping, normal mapping, multitexturing, etc.).&lt;br /&gt;
&lt;br /&gt;
OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can die, so a system should be designed to allow manual and/or automatic switching of the game&#039;s host (possibly using an existing player after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7979</id>
		<title>Game and Unit development</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7979"/>
		<updated>2010-03-08T02:34:03Z</updated>

		<summary type="html">&lt;p&gt;Argh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
=Game development=&lt;br /&gt;
This information is meant to help newcomers learn how to develop their own games for the Spring Engine.&lt;br /&gt;
==General==&lt;br /&gt;
*[[Mod specification|Game specification]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[http://springrts.com/phpbb/viewtopic.php?t=6015 What do I need to create a game?]&lt;br /&gt;
*[[Simple Mod Tutorial|Simple Game Tutorial]]&lt;br /&gt;
*[[Freely available and reusable content|Freely available and reusable content for maps and games]]&lt;br /&gt;
&lt;br /&gt;
==Unit Development==&lt;br /&gt;
===Units - Models===&lt;br /&gt;
*[http://user.supradigital.org/jcnossen/UpspringInstaller-1.54-EulerAngles.exe Click here to download UpSpring, our content support tool.]&lt;br /&gt;
* [[Basic s3o unit making guide]]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?f=9&amp;amp;t=15106 Argh&#039;s UpSpring Easy Workflow Guide]&lt;br /&gt;
* [[Trouble-shooting s3o units]]&lt;br /&gt;
* [http://lassie.student.utwente.nl/vliet/springtut.pdf Maestro&#039;s tutorial of Upspring and textures- very outdated].&lt;br /&gt;
&lt;br /&gt;
====Models - Modeling, UV Mapping====&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?t=10612 Wings UV Mapping Tutorial]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?f=9&amp;amp;t=12354 Saving polygons in Wings3d Tutorial]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?t=10503 Runecrafter&#039;s 3DS Max UV Mapping Tutorial]&lt;br /&gt;
&lt;br /&gt;
====Models - Textures====&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?f=57&amp;amp;t=22392 DDS Textures:  How To]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?t=10947 Greeble Tutorial 1]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?f=9&amp;amp;t=12356 Greeble Tutorial 2]&lt;br /&gt;
&lt;br /&gt;
====Models - 3do Files====&lt;br /&gt;
-NOTE- this is an outdated model format used by OTA models (Balanced Annihilation, NOTA, etc.).&amp;lt;br&amp;gt;&lt;br /&gt;
(Note: UpSpring has some problems with empty objects and groundplates)&lt;br /&gt;
*use [http://springrts.com/phpbb/viewtopic.php?f=12&amp;amp;t=7208&amp;amp;p=126129&amp;amp;hilit=upspring#p126129 UpSpring] and [http://springfiles.com/1755 3doBuilder] to edit those files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[http://springrts.com/wiki/Category:Animation Scripting and Animation - COB/BOS Files]===&lt;br /&gt;
To edit .bos files you need a program/compiler. The most famous one is [http://jobjol.nl/1384 Scriptor]&lt;br /&gt;
*[[Animation-LuaScripting]]&lt;br /&gt;
**[[Animation-LuaCallins]]&lt;br /&gt;
**[[Animation-LuaCallouts]]&lt;br /&gt;
**[[Animation-CobLuaDifferences]]&lt;br /&gt;
*[[Animation-CobOverview]]&lt;br /&gt;
**[[Animation-CobExamples]]&lt;br /&gt;
**[[Animation-CobAnimation]]&lt;br /&gt;
**[[Animation-CobCallins]]&lt;br /&gt;
**[[Animation-CobConstants]]&lt;br /&gt;
**[[Animation-CobThreads]]&lt;br /&gt;
**[[Animation-CobHitByWeaponID]]&lt;br /&gt;
*[http://www.planetannihilation.com/tadc/tut_unit_01_1.asp PlanetAnnihilation] has a nice tutorial&lt;br /&gt;
*[[Units:LuaCOB]] - how to interface COB with LUA&lt;br /&gt;
*[[CEG_For_Units|Game Development:Calling basic CEGs from COB]]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?p=132943#132943 GPL-compliant sourcecode, scripting code examples, and other things.]&lt;br /&gt;
&lt;br /&gt;
===Units - FBI Files===&lt;br /&gt;
*[[Units:FBI]]&lt;br /&gt;
*[[All_FBI-variable_values:_min,_max,_default,_type|Units:FBI (variable datatype list)]]&lt;br /&gt;
*[[Unit_Categories]]&lt;br /&gt;
&lt;br /&gt;
===Units - MoveTypes===&lt;br /&gt;
*[[Units:MoveTypes]]&lt;br /&gt;
&lt;br /&gt;
===Weapons - TDF Files===&lt;br /&gt;
*[[Weapon Variables]] : This is the most up to date&lt;br /&gt;
*[[Units:WeaponMainDir]]&lt;br /&gt;
*[[Units:Weapons]] : Various informations about the weapontypes (uncompleted)&lt;br /&gt;
*[[All_Weapons_variable_values:_min%2C_max%2C_default%2C_type|Weapon datatype list]] : All weapon variables min/max/default values and datatypes listed.&lt;br /&gt;
*[[Weapons:Antinukes]]: All about antinukes.&lt;br /&gt;
&lt;br /&gt;
===Explosions===&lt;br /&gt;
*[[CEG]]&lt;br /&gt;
**[[CEG-Calls]] &lt;br /&gt;
**[[CEG-Format]] &lt;br /&gt;
**[[CEG-Classes]] &lt;br /&gt;
**[[CEG-Operators]] &lt;br /&gt;
**[[CEG-Miscellaneous]] &lt;br /&gt;
**[[CEG-OldInfo]]&lt;br /&gt;
&lt;br /&gt;
===Misc===&lt;br /&gt;
*[[Units:Design]]&lt;br /&gt;
*[[Units:Textures]]&lt;br /&gt;
*[[Units:Buildpics]]&lt;br /&gt;
*[[Units:SideData TDF]]&lt;br /&gt;
*[[Units:Download TDF]] &lt;br /&gt;
*[[Units:FlankingBonus]]&lt;br /&gt;
*[[Mod Development:Armor|Game Development:Armor]]&lt;br /&gt;
*[[Mod Development:Cursors|Game Development:Cursors]]&lt;br /&gt;
*[[Mod Development:Archives|Game Development:Archives]]&lt;br /&gt;
*[[Mod Development:Sidepics|Game Development:Sidepics]]&lt;br /&gt;
*[[CustomUnitIcons|Game Development:Custom unit icons]]&lt;br /&gt;
&lt;br /&gt;
===Legacy Porting Tools===&lt;br /&gt;
====Automated Game Creation====&lt;br /&gt;
* [[TA2Spring]] - Automatically adds and converts Total Annihilation unit packs (.ufo files, etc..) into Spring games (requires a base game for the game rules, XTA is recommended, it is probably not properly supported by current Spring)&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7978</id>
		<title>Game and Unit development</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7978"/>
		<updated>2010-03-08T02:33:16Z</updated>

		<summary type="html">&lt;p&gt;Argh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
=Game development=&lt;br /&gt;
This information is meant to help newcomers learn how to develop their own games for the Spring Engine.&lt;br /&gt;
==General==&lt;br /&gt;
*[[Mod specification|Game specification]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[http://springrts.com/phpbb/viewtopic.php?t=6015 What do I need to create a game?]&lt;br /&gt;
*[[Simple Mod Tutorial|Simple Game Tutorial]]&lt;br /&gt;
*[[Freely available and reusable content|Freely available and reusable content for maps and games]]&lt;br /&gt;
&lt;br /&gt;
==Unit Development==&lt;br /&gt;
===Units - Models===&lt;br /&gt;
*[http://user.supradigital.org/jcnossen/UpspringInstaller-1.54-EulerAngles.exe Click here to download UpSpring, our content support tool.]&lt;br /&gt;
* [[Basic s3o unit making guide]]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?f=9&amp;amp;t=15106 Argh&#039;s UpSpring Easy Workflow Guide]&lt;br /&gt;
* [[Trouble-shooting s3o units]]&lt;br /&gt;
* [http://lassie.student.utwente.nl/vliet/springtut.pdf Maestro&#039;s tutorial of Upspring and textures- very outdated].&lt;br /&gt;
&lt;br /&gt;
====Models - Modeling, UV Mapping====&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?t=10612 Wings UV Mapping Tutorial]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?f=9&amp;amp;t=12354 Saving polygons in Wings3d Tutorial]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?t=10503 Runecrafter&#039;s 3DS Max UV Mapping Tutorial]&lt;br /&gt;
&lt;br /&gt;
====Models - Textures====&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?f=57&amp;amp;t=22392 DDS Textures:  How To]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?t=10947 Greeble Tutorial 1]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?f=9&amp;amp;t=12356 Greeble Tutorial 2]&lt;br /&gt;
&lt;br /&gt;
====Models - 3do Files====&lt;br /&gt;
-NOTE- this is an outdated model format used by OTA models (Balanced Annihilation, NOTA, etc.).&amp;lt;br&amp;gt;&lt;br /&gt;
(Note: UpSpring has some problems with empty objects and groundplates)&lt;br /&gt;
*use [http://springrts.com/phpbb/viewtopic.php?f=12&amp;amp;t=7208&amp;amp;p=126129&amp;amp;hilit=upspring#p126129 UpSpring] and [http://springfiles.com/1755 3doBuilder] to edit those files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[http://springrts.com/wiki/Category:Animation Scripting and Animation - COB/BOS Files]===&lt;br /&gt;
To edit .bos files you need a program/compiler. The most famous one is [http://jobjol.nl/1384 Scriptor]&lt;br /&gt;
*[[Animation-LuaScripting]]&lt;br /&gt;
**[[Animation-LuaCallins]]&lt;br /&gt;
**[[Animation-LuaCallouts]]&lt;br /&gt;
**[[Animation-CobLuaDifferences]]&lt;br /&gt;
*[[Animation-CobOverview]]&lt;br /&gt;
**[[Animation-CobExamples]]&lt;br /&gt;
**[[Animation-CobAnimation]]&lt;br /&gt;
**[[Animation-CobCallins]]&lt;br /&gt;
**[[Animation-CobConstants]]&lt;br /&gt;
**[[Animation-CobThreads]]&lt;br /&gt;
**[[Animation-CobHitByWeaponID]]&lt;br /&gt;
*[http://www.planetannihilation.com/tadc/tut_unit_01_1.asp PlanetAnnihilation] has a nice tutorial&lt;br /&gt;
*[[Units:LuaCOB]] - how to interface COB with LUA&lt;br /&gt;
*[[CEG_For_Units|Game Development:Calling basic CEGs from COB]]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?p=132943#132943 GPL-compliant sourcecode, scripting code examples, and other things.]&lt;br /&gt;
&lt;br /&gt;
===Legacy Porting Tools===&lt;br /&gt;
====Automated Game Creation====&lt;br /&gt;
* [[TA2Spring]] - Automatically adds and converts Total Annihilation unit packs (.ufo files, etc..) into Spring games (requires a base game for the game rules, XTA is recommended, it is probably not properly supported by current Spring)&lt;br /&gt;
&lt;br /&gt;
===Units - FBI Files===&lt;br /&gt;
*[[Units:FBI]]&lt;br /&gt;
*[[All_FBI-variable_values:_min,_max,_default,_type|Units:FBI (variable datatype list)]]&lt;br /&gt;
*[[Unit_Categories]]&lt;br /&gt;
&lt;br /&gt;
===Units - MoveTypes===&lt;br /&gt;
*[[Units:MoveTypes]]&lt;br /&gt;
&lt;br /&gt;
===Weapons - TDF Files===&lt;br /&gt;
*[[Weapon Variables]] : This is the most up to date&lt;br /&gt;
*[[Units:WeaponMainDir]]&lt;br /&gt;
*[[Units:Weapons]] : Various informations about the weapontypes (uncompleted)&lt;br /&gt;
*[[All_Weapons_variable_values:_min%2C_max%2C_default%2C_type|Weapon datatype list]] : All weapon variables min/max/default values and datatypes listed.&lt;br /&gt;
*[[Weapons:Antinukes]]: All about antinukes.&lt;br /&gt;
&lt;br /&gt;
===Explosions===&lt;br /&gt;
*[[CEG]]&lt;br /&gt;
**[[CEG-Calls]] &lt;br /&gt;
**[[CEG-Format]] &lt;br /&gt;
**[[CEG-Classes]] &lt;br /&gt;
**[[CEG-Operators]] &lt;br /&gt;
**[[CEG-Miscellaneous]] &lt;br /&gt;
**[[CEG-OldInfo]]&lt;br /&gt;
&lt;br /&gt;
===Misc===&lt;br /&gt;
*[[Units:Design]]&lt;br /&gt;
*[[Units:Textures]]&lt;br /&gt;
*[[Units:Buildpics]]&lt;br /&gt;
*[[Units:SideData TDF]]&lt;br /&gt;
*[[Units:Download TDF]] &lt;br /&gt;
*[[Units:FlankingBonus]]&lt;br /&gt;
*[[Mod Development:Armor|Game Development:Armor]]&lt;br /&gt;
*[[Mod Development:Cursors|Game Development:Cursors]]&lt;br /&gt;
*[[Mod Development:Archives|Game Development:Archives]]&lt;br /&gt;
*[[Mod Development:Sidepics|Game Development:Sidepics]]&lt;br /&gt;
*[[CustomUnitIcons|Game Development:Custom unit icons]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7977</id>
		<title>Game and Unit development</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7977"/>
		<updated>2010-03-08T02:31:48Z</updated>

		<summary type="html">&lt;p&gt;Argh: Minor re-write and restructuring for better flow; included link about texture article I wrote&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
=Game development=&lt;br /&gt;
This information is meant to help newcomers learn how to develop their own games for the Spring Engine.&lt;br /&gt;
==General==&lt;br /&gt;
*[[Mod specification|Game specification]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[http://springrts.com/phpbb/viewtopic.php?t=6015 What do I need to create a game?]&lt;br /&gt;
*[[Simple Mod Tutorial|Simple Game Tutorial]]&lt;br /&gt;
*[[Freely available and reusable content|Freely available and reusable content for maps and games]]&lt;br /&gt;
&lt;br /&gt;
==Unit Development==&lt;br /&gt;
====Units - Models====&lt;br /&gt;
*[http://user.supradigital.org/jcnossen/UpspringInstaller-1.54-EulerAngles.exe Click here to download UpSpring, our content support tool.]&lt;br /&gt;
* [[Basic s3o unit making guide]]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?f=9&amp;amp;t=15106 Argh&#039;s UpSpring Easy Workflow Guide]&lt;br /&gt;
* [[Trouble-shooting s3o units]]&lt;br /&gt;
* [http://lassie.student.utwente.nl/vliet/springtut.pdf Maestro&#039;s tutorial of Upspring and textures- very outdated].&lt;br /&gt;
&lt;br /&gt;
====Models - Modeling, UV Mapping====&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?t=10612 Wings UV Mapping Tutorial]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?f=9&amp;amp;t=12354 Saving polygons in Wings3d Tutorial]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?t=10503 Runecrafter&#039;s 3DS Max UV Mapping Tutorial]&lt;br /&gt;
&lt;br /&gt;
====Models - Textures====&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?f=57&amp;amp;t=22392 DDS Textures:  How To]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?t=10947 Greeble Tutorial 1]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?f=9&amp;amp;t=12356 Greeble Tutorial 2]&lt;br /&gt;
&lt;br /&gt;
====Models - 3do Files====&lt;br /&gt;
-NOTE- this is an outdated model format used by OTA models (Balanced Annihilation, NOTA, etc.).&amp;lt;br&amp;gt;&lt;br /&gt;
(Note: UpSpring has some problems with empty objects and groundplates)&lt;br /&gt;
*use [http://springrts.com/phpbb/viewtopic.php?f=12&amp;amp;t=7208&amp;amp;p=126129&amp;amp;hilit=upspring#p126129 UpSpring] and [http://springfiles.com/1755 3doBuilder] to edit those files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[http://springrts.com/wiki/Category:Animation Scripting and Animation - COB/BOS Files]====&lt;br /&gt;
To edit .bos files you need a program/compiler. The most famous one is [http://jobjol.nl/1384 Scriptor]&lt;br /&gt;
*[[Animation-LuaScripting]]&lt;br /&gt;
**[[Animation-LuaCallins]]&lt;br /&gt;
**[[Animation-LuaCallouts]]&lt;br /&gt;
**[[Animation-CobLuaDifferences]]&lt;br /&gt;
*[[Animation-CobOverview]]&lt;br /&gt;
**[[Animation-CobExamples]]&lt;br /&gt;
**[[Animation-CobAnimation]]&lt;br /&gt;
**[[Animation-CobCallins]]&lt;br /&gt;
**[[Animation-CobConstants]]&lt;br /&gt;
**[[Animation-CobThreads]]&lt;br /&gt;
**[[Animation-CobHitByWeaponID]]&lt;br /&gt;
*[http://www.planetannihilation.com/tadc/tut_unit_01_1.asp PlanetAnnihilation] has a nice tutorial&lt;br /&gt;
*[[Units:LuaCOB]] - how to interface COB with LUA&lt;br /&gt;
*[[CEG_For_Units|Game Development:Calling basic CEGs from COB]]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?p=132943#132943 GPL-compliant sourcecode, scripting code examples, and other things.]&lt;br /&gt;
&lt;br /&gt;
===Legacy Porting Tools===&lt;br /&gt;
====Automated Game Creation====&lt;br /&gt;
* [[TA2Spring]] - Automatically adds and converts Total Annihilation unit packs (.ufo files, etc..) into Spring games (requires a base game for the game rules, XTA is recommended, it is probably not properly supported by current Spring)&lt;br /&gt;
&lt;br /&gt;
====Units - FBI Files====&lt;br /&gt;
*[[Units:FBI]]&lt;br /&gt;
*[[All_FBI-variable_values:_min,_max,_default,_type|Units:FBI (variable datatype list)]]&lt;br /&gt;
*[[Unit_Categories]]&lt;br /&gt;
&lt;br /&gt;
====Units - MoveTypes====&lt;br /&gt;
*[[Units:MoveTypes]]&lt;br /&gt;
&lt;br /&gt;
====Weapons - TDF Files====&lt;br /&gt;
*[[Weapon Variables]] : This is the most up to date&lt;br /&gt;
*[[Units:WeaponMainDir]]&lt;br /&gt;
*[[Units:Weapons]] : Various informations about the weapontypes (uncompleted)&lt;br /&gt;
*[[All_Weapons_variable_values:_min%2C_max%2C_default%2C_type|Weapon datatype list]] : All weapon variables min/max/default values and datatypes listed.&lt;br /&gt;
*[[Weapons:Antinukes]]: All about antinukes.&lt;br /&gt;
&lt;br /&gt;
====Explosions====&lt;br /&gt;
*[[CEG]]&lt;br /&gt;
**[[CEG-Calls]] &lt;br /&gt;
**[[CEG-Format]] &lt;br /&gt;
**[[CEG-Classes]] &lt;br /&gt;
**[[CEG-Operators]] &lt;br /&gt;
**[[CEG-Miscellaneous]] &lt;br /&gt;
**[[CEG-OldInfo]]&lt;br /&gt;
&lt;br /&gt;
====Misc====&lt;br /&gt;
*[[Units:Design]]&lt;br /&gt;
*[[Units:Textures]]&lt;br /&gt;
*[[Units:Buildpics]]&lt;br /&gt;
*[[Units:SideData TDF]]&lt;br /&gt;
*[[Units:Download TDF]] &lt;br /&gt;
*[[Units:FlankingBonus]]&lt;br /&gt;
*[[Mod Development:Armor|Game Development:Armor]]&lt;br /&gt;
*[[Mod Development:Cursors|Game Development:Cursors]]&lt;br /&gt;
*[[Mod Development:Archives|Game Development:Archives]]&lt;br /&gt;
*[[Mod Development:Sidepics|Game Development:Sidepics]]&lt;br /&gt;
*[[CustomUnitIcons|Game Development:Custom unit icons]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7976</id>
		<title>Game and Unit development</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7976"/>
		<updated>2010-02-25T11:16:27Z</updated>

		<summary type="html">&lt;p&gt;Argh: Fixed all dead links, standardized to springrts.com domain&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
=Game development=&lt;br /&gt;
This information is meant to help newcomers learn how to develop their own games for the Spring Engine.&lt;br /&gt;
==General==&lt;br /&gt;
*[[Mod specification|Game specification]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[http://springrts.com/phpbb/viewtopic.php?t=6015 What do I need to create a game?]&lt;br /&gt;
*[[Simple Mod Tutorial|Simple Game Tutorial]]&lt;br /&gt;
*[[Freely available and reusable content|Freely available and reusable content for maps and games]]&lt;br /&gt;
&lt;br /&gt;
==Unit Development==&lt;br /&gt;
====Models - s3o Files====&lt;br /&gt;
*[http://user.supradigital.org/jcnossen/UpspringInstaller-1.54-EulerAngles.exe UpSpring, our second-gen import / export / rigging / animation tool.]&lt;br /&gt;
* [http://lassie.student.utwente.nl/vliet/springtut.pdf Maestro&#039;s tutorial of Upspring and textures].&lt;br /&gt;
* [[Basic s3o unit making guide]]&lt;br /&gt;
* [[Simple Mod Tutorial|Simple Game Tutorial]]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?t=10612 Wings UV Mapping Tutorial]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?f=9&amp;amp;t=12354 Saving polygons in Wings3d Tutorial]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?t=10947 Greeble Tutorial 1]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?f=9&amp;amp;t=12356 Greeble Tutorial 2]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?p=75495 various things about unit making. (Also contains an illustrated alpha-channel tut)]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?t=10503 Runecrafter&#039;s 3DS Max UV Mapping Tutorial]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?f=9&amp;amp;t=15106 Argh&#039;s UpSpring Easy Workflow Guide]&lt;br /&gt;
* [[Trouble-shooting s3o units]]&lt;br /&gt;
&lt;br /&gt;
====[http://springrts.com/wiki/Category:Animation Scripting and Animation - COB/BOS Files]====&lt;br /&gt;
To edit .bos files you need a program/compiler. The most famous one is [http://jobjol.nl/1384 Scriptor]&lt;br /&gt;
*[[Animation-LuaScripting]]&lt;br /&gt;
**[[Animation-LuaCallins]]&lt;br /&gt;
**[[Animation-LuaCallouts]]&lt;br /&gt;
**[[Animation-CobLuaDifferences]]&lt;br /&gt;
*[[Animation-CobOverview]]&lt;br /&gt;
**[[Animation-CobExamples]]&lt;br /&gt;
**[[Animation-CobAnimation]]&lt;br /&gt;
**[[Animation-CobCallins]]&lt;br /&gt;
**[[Animation-CobConstants]]&lt;br /&gt;
**[[Animation-CobThreads]]&lt;br /&gt;
**[[Animation-CobHitByWeaponID]]&lt;br /&gt;
*[http://www.planetannihilation.com/tadc/tut_unit_01_1.asp PlanetAnnihilation] has a nice tutorial&lt;br /&gt;
*[[Units:LuaCOB]] - how to interface COB with LUA&lt;br /&gt;
*[[CEG_For_Units|Game Development:Calling basic CEGs from COB]]&lt;br /&gt;
* [http://springrts.com/phpbb/viewtopic.php?p=132943#132943 GPL-compliant sourcecode, scripting code examples, and other things.]&lt;br /&gt;
&lt;br /&gt;
===Legacy Porting Tools===&lt;br /&gt;
====Models - 3do Files====&lt;br /&gt;
-NOTE- this is and outdated model format used by OTA&amp;lt;br&amp;gt;&lt;br /&gt;
(Note: UpSpring has some problems with empty objects and groundplates)&lt;br /&gt;
*use [http://springrts.com/phpbb/viewtopic.php?f=12&amp;amp;t=7208&amp;amp;p=126129&amp;amp;hilit=upspring#p126129 UpSpring] and [http://springfiles.com/1755 3doBuilder] to edit those files&lt;br /&gt;
&lt;br /&gt;
====Automated Game Creation====&lt;br /&gt;
* [[TA2Spring]] - Automatically adds and converts Total Annihilation unit packs (.ufo files, etc..) into Spring games (requires a base gameification for the game rules, XTA is recommended)&lt;br /&gt;
&lt;br /&gt;
====Units - FBI Files====&lt;br /&gt;
*[[Units:FBI]]&lt;br /&gt;
*[[All_FBI-variable_values:_min,_max,_default,_type|Units:FBI (variable datatype list)]]&lt;br /&gt;
*[[Unit_Categories]]&lt;br /&gt;
&lt;br /&gt;
====Units - MoveTypes====&lt;br /&gt;
*[[Units:MoveTypes]]&lt;br /&gt;
&lt;br /&gt;
====Weapons - TDF Files====&lt;br /&gt;
*[[Weapon Variables]] : This is the most up to date&lt;br /&gt;
*[[Units:WeaponMainDir]]&lt;br /&gt;
*[[Units:Weapons]] : Various informations about the weapontypes (uncompleted)&lt;br /&gt;
*[[All_Weapons_variable_values:_min%2C_max%2C_default%2C_type|Weapon datatype list]] : All weapon variables min/max/default values and datatypes listed.&lt;br /&gt;
*[[Weapons:Antinukes]]: All about antinukes.&lt;br /&gt;
&lt;br /&gt;
====Explosions====&lt;br /&gt;
*[[CEG]]&lt;br /&gt;
**[[CEG-Calls]] &lt;br /&gt;
**[[CEG-Format]] &lt;br /&gt;
**[[CEG-Classes]] &lt;br /&gt;
**[[CEG-Operators]] &lt;br /&gt;
**[[CEG-Miscellaneous]] &lt;br /&gt;
**[[CEG-OldInfo]]&lt;br /&gt;
&lt;br /&gt;
====Misc====&lt;br /&gt;
*[[Units:Design]]&lt;br /&gt;
*[[Units:Textures]]&lt;br /&gt;
*[[Units:Buildpics]]&lt;br /&gt;
*[[Units:SideData TDF]]&lt;br /&gt;
*[[Units:Download TDF]] &lt;br /&gt;
*[[Units:FlankingBonus]]&lt;br /&gt;
*[[Mod Development:Armor|Game Development:Armor]]&lt;br /&gt;
*[[Mod Development:Cursors|Game Development:Cursors]]&lt;br /&gt;
*[[Mod Development:Archives|Game Development:Archives]]&lt;br /&gt;
*[[Mod Development:Sidepics|Game Development:Sidepics]]&lt;br /&gt;
*[[CustomUnitIcons|Game Development:Custom unit icons]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=General_Resources&amp;diff=9288</id>
		<title>General Resources</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=General_Resources&amp;diff=9288"/>
		<updated>2010-02-25T11:13:09Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; General Resources&lt;br /&gt;
&lt;br /&gt;
=Textures=&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?t=7093&amp;amp;start=0 Texture Competition 0001 - Metal]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?t=7188&amp;amp;start=0 Texture Competition 0002 - Camo]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?t=7731 Texture Competition 0003 - Stone/Concrete]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.cgtextures.com/ CG Textures]&lt;br /&gt;
&lt;br /&gt;
=Code=&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?t=7457 GPL Code Repository]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?t=6569&amp;amp;postdays=0&amp;amp;postorder=asc&amp;amp;start=0 The Millionth Monkey Gets Its Typewriter - Movement Optimization]&lt;br /&gt;
&lt;br /&gt;
=Sounds=&lt;br /&gt;
[http://freesound.iua.upf.edu/ Freesound] free sounds and samples, distributed under the [http://creativecommons.org/licenses/sampling+/1.0/ Creative Commons License]&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?t=4047 Compilation List of Features for Maps]&lt;br /&gt;
&lt;br /&gt;
=Models=&lt;br /&gt;
[http://planet-wars.eu/ModelBase/Units.aspx Model Base]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=General_Resources&amp;diff=9287</id>
		<title>General Resources</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=General_Resources&amp;diff=9287"/>
		<updated>2010-02-25T11:12:53Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; General Resources&lt;br /&gt;
&lt;br /&gt;
=Textures=&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?t=7093&amp;amp;start=0 Texture Competition 0001 - Metal]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?t=7188&amp;amp;start=0 Texture Competition 0002 - Camo]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?t=7731 Texture Competition 0003 - Stone/Concrete]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.cgtextures.com/ CG Textures]&lt;br /&gt;
&lt;br /&gt;
=Code=&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?t=7457 GPL Code Repository]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?t=6569&amp;amp;postdays=0&amp;amp;postorder=asc&amp;amp;start=0 The Millionth Monkey Gets Its Typewriter - Movement Optimization]&lt;br /&gt;
&lt;br /&gt;
=Sounds=&lt;br /&gt;
[http://freesound.iua.upf.edu/ Freesound] free sounds and samples, distributed under the [http://creativecommons.org/licenses/sampling+/1.0/ Creative Commons License]&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
[http://spring.clan-sy.com/phpbb/viewtopic.php?t=4047 Compilation List of Features for Maps]&lt;br /&gt;
&lt;br /&gt;
=Models=&lt;br /&gt;
[http://planet-wars.eu/ModelBase/Units.aspx Model Base]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=General_Resources&amp;diff=9286</id>
		<title>General Resources</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=General_Resources&amp;diff=9286"/>
		<updated>2010-02-25T11:09:43Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Textures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; General Resources&lt;br /&gt;
&lt;br /&gt;
=Textures=&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?t=7093&amp;amp;start=0 Texture Competition 0001 - Metal]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?t=7188&amp;amp;start=0 Texture Competition 0002 - Camo]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://springrts.com/phpbb/viewtopic.php?t=7731 Texture Competition 0003 - Stone/Concrete]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.cgtextures.com/ CG Textures]&lt;br /&gt;
&lt;br /&gt;
=Code=&lt;br /&gt;
[http://taspring.clan-sy.com/phpbb/viewtopic.php?t=7457 GPL Code Repository]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://taspring.clan-sy.com/phpbb/viewtopic.php?t=6569&amp;amp;postdays=0&amp;amp;postorder=asc&amp;amp;start=0 The Millionth Monkey Gets Its Typewriter - Movement Optimization]&lt;br /&gt;
&lt;br /&gt;
=Sounds=&lt;br /&gt;
[http://freesound.iua.upf.edu/ Freesound] free sounds and samples, distributed under the [http://creativecommons.org/licenses/sampling+/1.0/ Creative Commons License]&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
[http://spring.clan-sy.com/phpbb/viewtopic.php?t=4047 Compilation List of Features for Maps]&lt;br /&gt;
&lt;br /&gt;
=Models=&lt;br /&gt;
[http://planet-wars.eu/ModelBase/Units.aspx Model Base]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Monthly_Topic_Rotation&amp;diff=14737</id>
		<title>Monthly Topic Rotation</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Monthly_Topic_Rotation&amp;diff=14737"/>
		<updated>2010-02-25T10:42:29Z</updated>

		<summary type="html">&lt;p&gt;Argh: Removed old topics for MTR; believe or not, none of that stuff is now not supported by Spring...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; Monthly Topic Rotation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Monthy Topic Rotation&amp;quot; is a term coined by Gnome referring to the fact that people keep coming into the forums and posting messages on the same subject.  It seems that as Spring becomes more popular, more new people keep coming up with the same ideas and questions... think of this as the &amp;quot;Is your idea original?&amp;quot; FAQ as opposed to the &amp;quot;real&amp;quot; [[FAQ]].&lt;br /&gt;
&lt;br /&gt;
If you&#039;d like to suggest an idea, see our [[http://springrts.com/phpbb Forums]], where we have a suggestion / request area.&lt;br /&gt;
&lt;br /&gt;
=The Topics=&lt;br /&gt;
&lt;br /&gt;
No current topics!  All previous topics are either possible using Lua, or have been included in the engine features at this time.  How times change...&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Monthly_Topic_Rotation&amp;diff=14736</id>
		<title>Monthly Topic Rotation</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Monthly_Topic_Rotation&amp;diff=14736"/>
		<updated>2010-02-25T10:38:59Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Custom Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; Monthly Topic Rotation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Monthy Topic Rotation&amp;quot; is a term coined by Gnome referring to the fact that people keep coming into the forums and posting messages on the same subject.  It seems that as Spring becomes more popular, more new people keep coming up with the same ideas and questions... think of this as the &amp;quot;Is your idea original?&amp;quot; FAQ as opposed to the &amp;quot;real&amp;quot; [[FAQ]].&lt;br /&gt;
&lt;br /&gt;
Now in some situations it&#039;s okay to repost on the same topic, if it has been only mentioned before in other people&#039;s topics or if you make reference to the fact that it is a known issue you are addressing with new ideas... but that doesn&#039;t excuse you from the list.  One way or the other, the community might make fun of you for rehashing old topics, expecially when they aren&#039;t forgotten so much as people are bored of talking about them.&lt;br /&gt;
&lt;br /&gt;
This has now turned into a sort of game. You can see the current scores here: http://maelstrom.niiil.com/?l=mtr (Note from a visitor: link seems to be down)&lt;br /&gt;
&lt;br /&gt;
=The Topics=&lt;br /&gt;
&#039;&#039;&#039;List of Generic Topics with brief discussion and list of topics posted on these subjects for quick reference:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Custom Resources===&lt;br /&gt;
Requests or Suggestions that involve anything from different names for the resources we have, better control over the handling of resources, resources like those in other games etc.  The best generalized suggestion is for a more dynamic, mod controlled resource and unit limit. Often coupled with suggestions for hacking or script based work arounds for the lack of the requested feature.&lt;br /&gt;
&lt;br /&gt;
*[http://springrts.com/phpbb/viewtopic.php?t=5932 A Third Resource PLEASE!]&lt;br /&gt;
*[http://springrts.com/phpbb/viewtopic.php?t=6277 A proposed System]&lt;br /&gt;
*[http://springrts.com/phpbb/viewtopic.php?t=6342 Mentioned in conjunction with other requests for resource related features]&lt;br /&gt;
*[http://springrts.com/phpbb/viewtopic.php?p=121014 Carbon or Something]&lt;br /&gt;
*[http://springrts.com/phpbb/viewtopic.php?t=5966 Reserach as a Resource]&lt;br /&gt;
*[http://springrts.com/phpbb/viewtopic.php?p=121186 spicing up economy]&lt;br /&gt;
&lt;br /&gt;
===OTA Style Music===&lt;br /&gt;
Requests or Suggestions that the engine include music playback, especially music that changes depending on what kind of action is happening in game.  Associated with requests for a sound track of any kind or asking for a link to get the orriginal TA Soundtrack in MP3 format.&lt;br /&gt;
&lt;br /&gt;
*[http://taspring.clan-sy.com/phpbb/viewtopic.php?t=2856 Soundtracks.]&lt;br /&gt;
*[http://taspring.clan-sy.com/phpbb/viewtopic.php?t=2786 Original OTA Music]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Getting_Spring_Content_and_Links&amp;diff=9385</id>
		<title>Getting Spring Content and Links</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Getting_Spring_Content_and_Links&amp;diff=9385"/>
		<updated>2010-02-25T10:37:03Z</updated>

		<summary type="html">&lt;p&gt;Argh: Removed redudant links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Content download websites for Spring===&lt;br /&gt;
[http://spring.clan-sy.com/wiki/Where_files_go &#039;&#039;&#039;Where files go&#039;&#039;&#039;, &#039;&#039;&#039;Their purpose&#039;&#039;&#039;] (Maps. Mods, Lua Widgets, Base ota content, AIs)&lt;br /&gt;
&lt;br /&gt;
http://spring.jobjol.nl &amp;lt;&amp;lt; a favorite site for getting Spring content - thanks to JJ&lt;br /&gt;
&lt;br /&gt;
http://www.springinfo.info/ &amp;lt;&amp;lt; a Spring Player&#039;s Portal (does not represent all Spring Development but is quite helpful)&lt;br /&gt;
&lt;br /&gt;
http://spring-portal.com/ &amp;lt;&amp;lt; a nice Spring site with a short &amp;lt;b&amp;gt;Getting Spring to play tutorial&amp;lt;/b&amp;gt; + more - thanks to BLC&lt;br /&gt;
&lt;br /&gt;
http://www.tasdownloads.com/ - thanks to M_A_D&lt;br /&gt;
&lt;br /&gt;
http://www.darkstars.co.uk/downloads/ &amp;lt;&amp;lt; Has the best &amp;lt;u&amp;gt;bandwidth&amp;lt;/u&amp;gt; you will get - thanks to AF (a Dev with a running Spring blog)&lt;br /&gt;
&lt;br /&gt;
http://evolutionrts.info/maps/ - thanks to AF&lt;br /&gt;
&lt;br /&gt;
http://www.unknown-files.net/spring/ &amp;lt;&amp;lt; one of the most popular sources for Spring content until its prolonged downtime - thanks to iamacup.&lt;br /&gt;
&lt;br /&gt;
===Developer Sites===&lt;br /&gt;
Note that some Mods just use the Message board and not a site.&lt;br /&gt;
&lt;br /&gt;
http://springlobby.info &amp;lt;&amp;lt; The Site for the Devs who work on the SpringLobby which lets us play together &amp;lt;&amp;lt; there u can write a ticket if some thing [about the lobby] needs fixing.&lt;br /&gt;
&lt;br /&gt;
http://trac.caspring.org/wiki/sd &amp;lt;&amp;lt; CA mod site &amp;lt;&amp;lt; The link for DLing the CaUpdater - you can also write a ticket about some ting CA needs fixed&lt;br /&gt;
&lt;br /&gt;
http://nota.strategyboards.com/ &amp;lt;&amp;lt; NOTA&#039;s Independent forum and Bug Report site&lt;br /&gt;
&lt;br /&gt;
===General Links For Spring===&lt;br /&gt;
&lt;br /&gt;
http://springladder.no-ip.org/ &amp;lt;&amp;lt; Ladder game Ranks + Scores&lt;br /&gt;
&lt;br /&gt;
http://www.portforward.com/ &amp;lt;&amp;lt; see our wiki on port forwarding to make use of this&lt;br /&gt;
&lt;br /&gt;
http://modinfo.adune.nl &amp;lt;&amp;lt; gives detailed info for mods &amp;lt;&amp;gt; (if some mod is missing, PM at TradeMark). Modinfo has also an &amp;quot;error reporting&amp;quot; tool, which shows errors in the TDF files, like missing ; marks. &amp;quot;find errors&amp;quot; utility shows several types of errors, and other useful information about cleaning up your mod.&lt;br /&gt;
&lt;br /&gt;
http://replays.adune.nl &amp;lt;&amp;lt; for getting and uploading replays - note: 2 see a &lt;br /&gt;
&lt;br /&gt;
replay you will need the Map and Mod played&lt;br /&gt;
&lt;br /&gt;
http://pastebin.com &amp;lt;&amp;lt; used for easily sharing code, or large blocks of text&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; [[FAQ|&amp;lt;- Back to Help page]]&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_specification&amp;diff=8109</id>
		<title>Game specification</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_specification&amp;diff=8109"/>
		<updated>2010-02-25T10:20:31Z</updated>

		<summary type="html">&lt;p&gt;Argh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Overview===&lt;br /&gt;
&lt;br /&gt;
This is a specification of how Spring will support mods and switching between them. &lt;br /&gt;
&lt;br /&gt;
Spring looks for games in the folders &amp;quot;maps&amp;quot;, &amp;quot;base&amp;quot; and &amp;quot;mods&amp;quot;, and all their subfolders. It is recommended to put your game in a subfolder of /mods.  Spring supports multiple subfolders within /mods:  &#039;&#039;&#039;/mods/my_nifty_game/game.sdd&#039;&#039;&#039; and &#039;&#039;&#039;/mods/my_nifty_game/game_support.sdz&#039;&#039;&#039; are both correct.&lt;br /&gt;
&lt;br /&gt;
On startup, Spring will search these folders and their subfolders for files called &amp;quot;modinfo.lua&amp;quot;. This file declares all &#039;&#039;dependencies&#039;&#039; of this game, such as additional graphics, sounds and the like.&lt;br /&gt;
&lt;br /&gt;
The general idea is that this file should be used as a manifest file to let Spring know what to do with the archive it is found inside, so each archive file in the mods directory is supposed to have one. Archive files that do not contain this file are ignored, and aren&#039;t available to Spring&#039;s Virtual File System.&lt;br /&gt;
&lt;br /&gt;
===Modinfo.lua Example===&lt;br /&gt;
Modinfo.lua, like any Lua language file, can contain active code, should you want it to.  But it is mainly just designed to refer Spring&#039;s Virtual File System (VFS) to the correct game files and any dependencies of your project.&lt;br /&gt;
&lt;br /&gt;
Here is an example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;return&lt;br /&gt;
{&lt;br /&gt;
	game=&#039;myNiftyGame&#039;,&lt;br /&gt;
	shortGame=&#039;mNg&#039;,&lt;br /&gt;
	name=&#039;My Nifty Game&#039;,&lt;br /&gt;
	mutator=&#039;official&#039;,&lt;br /&gt;
	version=&#039;1.0&#039;,&lt;br /&gt;
	description=&#039;The Awesome Game I Made.&#039;,&lt;br /&gt;
	url=&#039;http://www.my_nifty_url.com/&#039;,&lt;br /&gt;
	modtype=1,&lt;br /&gt;
	depend= {&lt;br /&gt;
		depend01.sdd,&lt;br /&gt;
		depend02.sdd,&lt;br /&gt;
		},&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dependencies&#039;&#039;&#039; are files that your game depends on to operate.  This may be anything- a map, another game, a folder named &amp;quot;my_nifty_sounds.sdd&amp;quot; that has a bunch of sounds in it and a modinfo.lua file to identify it as a valid file archive to Spring- basically anything goes, so long as it, like your game, is identified as a usable archive by having a modinfo.lua file in it.&lt;br /&gt;
&lt;br /&gt;
These files are loaded in the order listed.  So if depend02.sdd contains a file with the same name as depend01.sdd, it will &amp;lt;u&amp;gt;overwrite that file&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modtype&#039;&#039;&#039; determines whether Spring&#039;s archive system sees the game as a game, or as an &amp;quot;invisible&amp;quot; file that can only be called as a Dependency.  If set to any number except for 1, it will not be visible to end-users as a &amp;quot;game&amp;quot;, but you can still refer to it in the depend table.&lt;br /&gt;
&lt;br /&gt;
===Replacements===&lt;br /&gt;
&lt;br /&gt;
When releasing new versions of a mod it is recommended that a new unique filename is used. In this manner it would be possible for the lobby to download archives from a fast webserver based on the filename. &lt;br /&gt;
&lt;br /&gt;
But if a new name is used for a support archive with content for example, it would break other mods that depend on the archive. To avoid this, replacements can be used.&lt;br /&gt;
&lt;br /&gt;
Replacements simply specifies which other archives this one replaces. So if a new archive specifies that it replaces old_archive.sdz, any other mod that depends on old_archive.sdz would now use the new one instead.&lt;br /&gt;
&lt;br /&gt;
It is probably not always a good idea to use this for new versions of a mod however, since if you hide the old version people would not be able to switch between the old and the new version. So only use replacements when you are sure that it is what you want.&lt;br /&gt;
&lt;br /&gt;
===Distribution===&lt;br /&gt;
&lt;br /&gt;
If a player does not have a certain game&#039;s files when trying to join a game online, the Lobbies are designed to let them know that they don&#039;t have the game.  If you have uploaded your game to the various services that are supported by the Lobby applications, players can automatically download the game.  Also, SpringDownloader allows players to share the game&#039;s file with others easily.  Modinfo.lua lets both the Lobby application and Spring know what your game is, and whether it &amp;quot;knows&amp;quot; where it can be downloaded from.&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod development]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_specification&amp;diff=8108</id>
		<title>Game specification</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_specification&amp;diff=8108"/>
		<updated>2010-02-25T10:14:19Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Modinfo.lua Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Overview===&lt;br /&gt;
&lt;br /&gt;
This is a specification of how Spring will support mods and switching between them. &lt;br /&gt;
&lt;br /&gt;
Spring looks for games in the folders &amp;quot;maps&amp;quot;, &amp;quot;base&amp;quot; and &amp;quot;mods&amp;quot;, and all their subfolders. It is recommended to put your game in a subfolder of /mods.  Spring supports multiple subfolders within /mods:  &#039;&#039;&#039;/mods/my_nifty_game/game.sdd&#039;&#039;&#039; and &#039;&#039;&#039;/mods/my_nifty_game/game_support.sdz&#039;&#039;&#039; are both correct.&lt;br /&gt;
&lt;br /&gt;
On startup, Spring will search these folders and their subfolders for files called &amp;quot;modinfo.lua&amp;quot;. This file declares all &#039;&#039;dependencies&#039;&#039; of this game, such as additional graphics, sounds and the like.&lt;br /&gt;
&lt;br /&gt;
The general idea is that this file should be used as a manifest file to let Spring know what to do with the archive it is found inside, so each archive file in the mods directory is supposed to have one. Archive files that do not contain this file are ignored, and aren&#039;t available to Spring&#039;s Virtual File System.&lt;br /&gt;
&lt;br /&gt;
===Modinfo.lua Example===&lt;br /&gt;
Modinfo.lua, like any Lua language file, can contain active code, should you want it to.  But it is mainly just designed to refer Spring&#039;s Virtual File System (VFS) to the correct game files and any dependencies of your project.&lt;br /&gt;
&lt;br /&gt;
Here is an example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;return&lt;br /&gt;
{&lt;br /&gt;
	game=&#039;myNiftyGame&#039;,&lt;br /&gt;
	shortGame=&#039;mNg&#039;,&lt;br /&gt;
	name=&#039;My Nifty Game&#039;,&lt;br /&gt;
	mutator=&#039;official&#039;,&lt;br /&gt;
	version=&#039;1.0&#039;,&lt;br /&gt;
	description=&#039;The Awesome Game I Made.&#039;,&lt;br /&gt;
	url=&#039;http://www.my_nifty_url.com/&#039;,&lt;br /&gt;
	modtype=1,&lt;br /&gt;
	depend= {&lt;br /&gt;
		depend01.sdd,&lt;br /&gt;
		depend02.sdd,&lt;br /&gt;
		},&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dependencies&#039;&#039;&#039; are files that your game depends on to operate.  This may be anything- a map, another game, a folder named &amp;quot;my_nifty_sounds.sdd&amp;quot; that has a bunch of sounds in it and a modinfo.lua file to identify it as a valid file archive to Spring- basically anything goes, so long as it, like your game, is identified as a usable archive by having a modinfo.lua file in it.&lt;br /&gt;
&lt;br /&gt;
These files are loaded in the order listed.  So if depend02.sdd contains a file with the same name as depend01.sdd, it will &amp;lt;u&amp;gt;overwrite that file&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modtype&#039;&#039;&#039; determines whether Spring&#039;s archive system sees the game as a game, or as an &amp;quot;invisible&amp;quot; file that can only be called as a Dependency.  If set to any number except for 1, it will not be visible to end-users as a &amp;quot;game&amp;quot;, but you can still refer to it in the depend table.&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Listing the dependencies allows a mod to not load the OTA textures at all for example, if it only uses original textures. Only one mod of type 1 can be selected at one time. Also, if a mod of type 2 is depending on a type 1 mod, that mod has to be selected first.&lt;br /&gt;
&lt;br /&gt;
Some examples on how this could be used:&lt;br /&gt;
&lt;br /&gt;
* An OTA mod that restores balance to be more similar to OTA could use modtype=1 and depend on XTA. Since XTA is now in the dependency graph, type 2 mods that depend on XTA would now also be usable.&lt;br /&gt;
* A new total conversion with a few extra options (not sure what that could be.. but anyway) could use a hidden base package and provide several type 1 mods that are small files that depend on the base.&lt;br /&gt;
&lt;br /&gt;
When playing, the files would be loaded in the order defined by the dependency graph. The files could also be checked with an MD5 checksum or similar to make sure all players have the same file.&lt;br /&gt;
&lt;br /&gt;
===Replacements===&lt;br /&gt;
&lt;br /&gt;
When releasing new versions of a mod it is recommended that a new unique filename is used. In this manner it would be possible for the lobby to download archives from a fast webserver based on the filename. But if a new name is used for a support archive with content for example, it would break other mods that depends on the archive. To avoid this, replacements can be used.&lt;br /&gt;
&lt;br /&gt;
Replacements simply specifies which other archives this one replaces. So if a new archive specifies that it replaces old_archive.sdz, any other mod that depends on old_archive.sdz would now use the new one instead.&lt;br /&gt;
&lt;br /&gt;
It is probably not always a good idea to use this for new versions of a mod however, since if you hide the old version people would not be able to switch between the old and the new version. So only use replacements when you are sure that it is what you want.&lt;br /&gt;
&lt;br /&gt;
===Final words===&lt;br /&gt;
&lt;br /&gt;
If a player does not have a certain mod when trying to join a game, the info in description etc could be sent to allow the player to download it.. The filename could be sent as well, so that the client could try to download it automatically from a few predefined redirect servers (similar to the system unreal tournament uses).&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod development]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_specification&amp;diff=8107</id>
		<title>Game specification</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_specification&amp;diff=8107"/>
		<updated>2010-02-25T10:12:08Z</updated>

		<summary type="html">&lt;p&gt;Argh: Removed TDF reference; cleaned up, added current example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Overview===&lt;br /&gt;
&lt;br /&gt;
This is a specification of how Spring will support mods and switching between them. &lt;br /&gt;
&lt;br /&gt;
Spring looks for games in the folders &amp;quot;maps&amp;quot;, &amp;quot;base&amp;quot; and &amp;quot;mods&amp;quot;, and all their subfolders. It is recommended to put your game in a subfolder of /mods.  Spring supports multiple subfolders within /mods:  &#039;&#039;&#039;/mods/my_nifty_game/game.sdd&#039;&#039;&#039; and &#039;&#039;&#039;/mods/my_nifty_game/game_support.sdz&#039;&#039;&#039; are both correct.&lt;br /&gt;
&lt;br /&gt;
On startup, Spring will search these folders and their subfolders for files called &amp;quot;modinfo.lua&amp;quot;. This file declares all &#039;&#039;dependencies&#039;&#039; of this game, such as additional graphics, sounds and the like.&lt;br /&gt;
&lt;br /&gt;
The general idea is that this file should be used as a manifest file to let Spring know what to do with the archive it is found inside, so each archive file in the mods directory is supposed to have one. Archive files that do not contain this file are ignored, and aren&#039;t available to Spring&#039;s Virtual File System.&lt;br /&gt;
&lt;br /&gt;
===Modinfo.lua Example===&lt;br /&gt;
Modinfo.lua, like any Lua language file, can contain active code, should you want it to.  But it is mainly just designed to refer Spring&#039;s Virtual File System (VFS) to the correct game files and any dependencies of your project.&lt;br /&gt;
&lt;br /&gt;
Here is an example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;return&lt;br /&gt;
{&lt;br /&gt;
	game=&#039;myNiftyGame&#039;,&lt;br /&gt;
	shortGame=&#039;mNg&#039;,&lt;br /&gt;
	name=&#039;My Nifty Game&#039;,&lt;br /&gt;
	mutator=&#039;official&#039;,&lt;br /&gt;
	version=&#039;1.0&#039;,&lt;br /&gt;
	description=&#039;The Awesome Game I Made.&#039;,&lt;br /&gt;
	url=&#039;http://www.my_nifty_url.com/&#039;,&lt;br /&gt;
	modtype=1,&lt;br /&gt;
	depend= {&lt;br /&gt;
		depend01.sdd,&lt;br /&gt;
		depend02.sdd,&lt;br /&gt;
		},&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dependencies&#039;&#039;&#039; are files that your game depends on to operate.  This may be anything- a map, another game, a folder named &amp;quot;my_nifty_sounds.sdd&amp;quot; that has a bunch of sounds in it and a modinfo.lua file to identify it as a valid file archive to Spring- basically anything goes, so long as it, like your game, is identified as a usable archive by having a modinfo.lua file in it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Modtype&#039;&#039;&#039; determines whether Spring&#039;s archive system sees the game as a game, or as an &amp;quot;invisible&amp;quot; file that can only be called as a Dependency.  If set to any number except for 1, it will not be visible to end-users as a &amp;quot;game&amp;quot;, but you can still refer to it in the depend table.&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Listing the dependencies allows a mod to not load the OTA textures at all for example, if it only uses original textures. Only one mod of type 1 can be selected at one time. Also, if a mod of type 2 is depending on a type 1 mod, that mod has to be selected first.&lt;br /&gt;
&lt;br /&gt;
Some examples on how this could be used:&lt;br /&gt;
&lt;br /&gt;
* An OTA mod that restores balance to be more similar to OTA could use modtype=1 and depend on XTA. Since XTA is now in the dependency graph, type 2 mods that depend on XTA would now also be usable.&lt;br /&gt;
* A new total conversion with a few extra options (not sure what that could be.. but anyway) could use a hidden base package and provide several type 1 mods that are small files that depend on the base.&lt;br /&gt;
&lt;br /&gt;
When playing, the files would be loaded in the order defined by the dependency graph. The files could also be checked with an MD5 checksum or similar to make sure all players have the same file.&lt;br /&gt;
&lt;br /&gt;
===Replacements===&lt;br /&gt;
&lt;br /&gt;
When releasing new versions of a mod it is recommended that a new unique filename is used. In this manner it would be possible for the lobby to download archives from a fast webserver based on the filename. But if a new name is used for a support archive with content for example, it would break other mods that depends on the archive. To avoid this, replacements can be used.&lt;br /&gt;
&lt;br /&gt;
Replacements simply specifies which other archives this one replaces. So if a new archive specifies that it replaces old_archive.sdz, any other mod that depends on old_archive.sdz would now use the new one instead.&lt;br /&gt;
&lt;br /&gt;
It is probably not always a good idea to use this for new versions of a mod however, since if you hide the old version people would not be able to switch between the old and the new version. So only use replacements when you are sure that it is what you want.&lt;br /&gt;
&lt;br /&gt;
===Final words===&lt;br /&gt;
&lt;br /&gt;
If a player does not have a certain mod when trying to join a game, the info in description etc could be sent to allow the player to download it.. The filename could be sent as well, so that the client could try to download it automatically from a few predefined redirect servers (similar to the system unreal tournament uses).&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod development]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_specification&amp;diff=8106</id>
		<title>Game specification</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_specification&amp;diff=8106"/>
		<updated>2010-02-25T09:56:22Z</updated>

		<summary type="html">&lt;p&gt;Argh: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Overview===&lt;br /&gt;
&lt;br /&gt;
This is a specification of how Spring will support mods and switching between them. &lt;br /&gt;
&lt;br /&gt;
Spring looks for games in the folders &amp;quot;maps&amp;quot;, &amp;quot;base&amp;quot; and &amp;quot;mods&amp;quot;, and all their subfolders. It is recommended to put your game in a subfolder of /mods.  Spring supports multiple subfolders within /mods:  &#039;&#039;&#039;/mods/my_nifty_game/game.sdd&#039;&#039;&#039; and &#039;&#039;&#039;/mods/my_nifty_game/game_support.sdz&#039;&#039;&#039; are both correct.&lt;br /&gt;
&lt;br /&gt;
On startup, Spring will search these folders and their subfolders for files called &amp;quot;modinfo.lua&amp;quot;. This file declares all &#039;&#039;dependencies&#039;&#039; of this game, such as additional graphics, sounds and the like.&lt;br /&gt;
&lt;br /&gt;
The general idea is that this file should be used as a manifest file to let Spring know what to do with the archive it is found inside, so each archive file in the mods directory is supposed to have one. Archive files that do not contain this file are ignored, and aren&#039;t available to Spring&#039;s Virtual File System.&lt;br /&gt;
&lt;br /&gt;
===Specification===&lt;br /&gt;
&lt;br /&gt;
This is an example of what this file should look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
// Description of the mod control file recognized by spring: &lt;br /&gt;
&lt;br /&gt;
[MOD] &lt;br /&gt;
{ &lt;br /&gt;
   // The name is shown in the selection interface&lt;br /&gt;
   Name=XTA version 0.61; &lt;br /&gt;
&lt;br /&gt;
   // These can be shown by the selection interface &lt;br /&gt;
   Description=XTA 0.61 beta makes stuff balanced and cool; &lt;br /&gt;
   URL=http://www.clan-sy.com/; &lt;br /&gt;
&lt;br /&gt;
   // What kind of mod this is &lt;br /&gt;
   //  0 - Hidden (support mod that can&#039;t be selected, such as OTA_textures) &lt;br /&gt;
   //  1 - Normal, only one can be selected at a time &lt;br /&gt;
   //  2 - Addon, any number of these can be selected. Could be used &lt;br /&gt;
   //      for single units for example. &lt;br /&gt;
   //  others - perhaps mutators and addon races that can be &lt;br /&gt;
   //           enabled in addition to xta for example? &lt;br /&gt;
   ModType=1; &lt;br /&gt;
&lt;br /&gt;
   // Number of other archives this one depends on    &lt;br /&gt;
   NumDependencies=1; &lt;br /&gt;
   Depend0=taenheter.sdz;&lt;br /&gt;
&lt;br /&gt;
   // Number of other archives this one replaces&lt;br /&gt;
   NumReplaces=1;&lt;br /&gt;
   Replace0=xta_se_v060.sdz;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of these entries should be easy to understand. Dependencies and replacements needs some consideration though.&lt;br /&gt;
&lt;br /&gt;
Note: the order in which depencies are numerated, is inverse to the hierarchy,&lt;br /&gt;
i.e. (example taken from OTA mod pack made by zwzsg):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
[MOD] &lt;br /&gt;
{ &lt;br /&gt;
   Name=Shiny TA v5.5; &lt;br /&gt;
   Description=OTA Evolva new BP v5.5; &lt;br /&gt;
   URL=http://www.fileuniverse.com/spring/; &lt;br /&gt;
&lt;br /&gt;
   ModType=1; &lt;br /&gt;
&lt;br /&gt;
   NumDependencies=1; &lt;br /&gt;
   Depend4=tacontent.sdz;&lt;br /&gt;
   Depend3=tatextures.sdz;&lt;br /&gt;
   Depend2=OTA_data.sd7;&lt;br /&gt;
   Depend1=Evolva_models.sd7;&lt;br /&gt;
   Depend0=UTASP_UnitPics.sd7;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the last item in this list is Depend0=UTASP_UnitPics.sd7, which should overwrite the buildpics contained into otacontent.sdz, which is included in the tacontent.sdz, thus UTASP_UnitPics.sd7 should be loaded the last to overwrite the previously loaded unitpic files.&lt;br /&gt;
&lt;br /&gt;
Altough the list is written in the right order, the dependencies seem to be numerated inversely, with UTASP_UnitPics.sd7 having the lower number and tacontent the higher, this is anyhow the correct way to do it.&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Listing the dependencies allows a mod to not load the OTA textures at all for example, if it only uses original textures. Only one mod of type 1 can be selected at one time. Also, if a mod of type 2 is depending on a type 1 mod, that mod has to be selected first.&lt;br /&gt;
&lt;br /&gt;
Some examples on how this could be used:&lt;br /&gt;
&lt;br /&gt;
* An OTA mod that restores balance to be more similar to OTA could use modtype=1 and depend on XTA. Since XTA is now in the dependency graph, type 2 mods that depend on XTA would now also be usable.&lt;br /&gt;
* A new total conversion with a few extra options (not sure what that could be.. but anyway) could use a hidden base package and provide several type 1 mods that are small files that depend on the base.&lt;br /&gt;
&lt;br /&gt;
When playing, the files would be loaded in the order defined by the dependency graph. The files could also be checked with an MD5 checksum or similar to make sure all players have the same file.&lt;br /&gt;
&lt;br /&gt;
===Replacements===&lt;br /&gt;
&lt;br /&gt;
When releasing new versions of a mod it is recommended that a new unique filename is used. In this manner it would be possible for the lobby to download archives from a fast webserver based on the filename. But if a new name is used for a support archive with content for example, it would break other mods that depends on the archive. To avoid this, replacements can be used.&lt;br /&gt;
&lt;br /&gt;
Replacements simply specifies which other archives this one replaces. So if a new archive specifies that it replaces old_archive.sdz, any other mod that depends on old_archive.sdz would now use the new one instead.&lt;br /&gt;
&lt;br /&gt;
It is probably not always a good idea to use this for new versions of a mod however, since if you hide the old version people would not be able to switch between the old and the new version. So only use replacements when you are sure that it is what you want.&lt;br /&gt;
&lt;br /&gt;
===Final words===&lt;br /&gt;
&lt;br /&gt;
If a player does not have a certain mod when trying to join a game, the info in description etc could be sent to allow the player to download it.. The filename could be sent as well, so that the client could try to download it automatically from a few predefined redirect servers (similar to the system unreal tournament uses).&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod development]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7975</id>
		<title>Game and Unit development</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Game_and_Unit_development&amp;diff=7975"/>
		<updated>2010-02-25T09:49:45Z</updated>

		<summary type="html">&lt;p&gt;Argh: Removed an old Emmanuel edit; &amp;#039;mod&amp;#039; is now &amp;#039;game&amp;#039;, removed some dead links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Engine_Development|Development]] &amp;lt; {{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
=Game development=&lt;br /&gt;
This information is meant to help newcomers learn how to develop their own games for the Spring Engine.&lt;br /&gt;
==General==&lt;br /&gt;
*[[Mod specification|Game specification]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[http://spring.clan-sy.com/phpbb/viewtopic.php?t=6015 What do I need to create a game?]&lt;br /&gt;
*[[Simple Mod Tutorial|Simple Game Tutorial]]&lt;br /&gt;
*[[Freely available and reusable content|Freely available and reusable content for maps and games]]&lt;br /&gt;
&lt;br /&gt;
==Unit Development==&lt;br /&gt;
====Models - s3o Files====&lt;br /&gt;
*[http://user.supradigital.org/jcnossen/UpspringInstaller-1.54-EulerAngles.exe UpSpring, our second-gen import / export / rigging / animation tool.]&lt;br /&gt;
* [http://lassie.student.utwente.nl/vliet/springtut.pdf Maestro&#039;s tutorial of Upspring and textures].&lt;br /&gt;
* [[Basic s3o unit making guide]]&lt;br /&gt;
* [[Simple Mod Tutorial|Simple Game Tutorial]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10612 Wings UV Mapping Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12354 Saving polygons in Wings3d Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10947 Greeble Tutorial 1]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=12356 Greeble Tutorial 2]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?p=75495 various things about unit making. (Also contains an illustrated alpha-channel tut)]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?t=10503 Runecrafter&#039;s 3DS Max UV Mapping Tutorial]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?f=9&amp;amp;t=15106 Argh&#039;s UpSpring Easy Workflow Guide]&lt;br /&gt;
* [[Trouble-shooting s3o units]]&lt;br /&gt;
&lt;br /&gt;
====[http://springrts.com/wiki/Category:Animation Scripting and Animation - COB/BOS Files]====&lt;br /&gt;
To edit .bos files you need a program/compiler. The most famous one is [http://jobjol.nl/1384 Scriptor]&lt;br /&gt;
*[[Animation-LuaScripting]]&lt;br /&gt;
**[[Animation-LuaCallins]]&lt;br /&gt;
**[[Animation-LuaCallouts]]&lt;br /&gt;
**[[Animation-CobLuaDifferences]]&lt;br /&gt;
*[[Animation-CobOverview]]&lt;br /&gt;
**[[Animation-CobExamples]]&lt;br /&gt;
**[[Animation-CobAnimation]]&lt;br /&gt;
**[[Animation-CobCallins]]&lt;br /&gt;
**[[Animation-CobConstants]]&lt;br /&gt;
**[[Animation-CobThreads]]&lt;br /&gt;
**[[Animation-CobHitByWeaponID]]&lt;br /&gt;
*[http://www.planetannihilation.com/tadc/tut_unit_01_1.asp PlanetAnnihilation] has a nice tutorial&lt;br /&gt;
*[[Units:LuaCOB]] - how to interface COB with LUA&lt;br /&gt;
*[[CEG_For_Units|Game Development:Calling basic CEGs from COB]]&lt;br /&gt;
* [http://spring.clan-sy.com/phpbb/viewtopic.php?p=132943#132943 GPL-compliant sourcecode, scripting code examples, and other things.]&lt;br /&gt;
&lt;br /&gt;
===Legacy Porting Tools===&lt;br /&gt;
====Models - 3do Files====&lt;br /&gt;
-NOTE- this is and outdated model format used by OTA&amp;lt;br&amp;gt;&lt;br /&gt;
(Note: UpSpring has some problems with empty objects and groundplates)&lt;br /&gt;
*use [http://spring.clan-sy.com/phpbb/viewtopic.php?f=12&amp;amp;t=7208&amp;amp;p=126129&amp;amp;hilit=upspring#p126129 UpSpring] and [http://springfiles.com/1755 3doBuilder] to edit those files&lt;br /&gt;
&lt;br /&gt;
====Automated Game Creation====&lt;br /&gt;
* [[TA2Spring]] - Automatically adds and converts Total Annihilation unit packs (.ufo files, etc..) into Spring games (requires a base gameification for the game rules, XTA is recommended)&lt;br /&gt;
&lt;br /&gt;
====Units - FBI Files====&lt;br /&gt;
*[[Units:FBI]]&lt;br /&gt;
*[[All_FBI-variable_values:_min,_max,_default,_type|Units:FBI (variable datatype list)]]&lt;br /&gt;
*[[Unit_Categories]]&lt;br /&gt;
&lt;br /&gt;
====Units - MoveTypes====&lt;br /&gt;
*[[Units:MoveTypes]]&lt;br /&gt;
&lt;br /&gt;
====Weapons - TDF Files====&lt;br /&gt;
*[[Weapon Variables]] : This is the most up to date&lt;br /&gt;
*[[Units:WeaponMainDir]]&lt;br /&gt;
*[[Units:Weapons]] : Various informations about the weapontypes (uncompleted)&lt;br /&gt;
*[[All_Weapons_variable_values:_min%2C_max%2C_default%2C_type|Weapon datatype list]] : All weapon variables min/max/default values and datatypes listed.&lt;br /&gt;
*[[Weapons:Antinukes]]: All about antinukes.&lt;br /&gt;
&lt;br /&gt;
====Explosions====&lt;br /&gt;
*[[CEG]]&lt;br /&gt;
**[[CEG-Calls]] &lt;br /&gt;
**[[CEG-Format]] &lt;br /&gt;
**[[CEG-Classes]] &lt;br /&gt;
**[[CEG-Operators]] &lt;br /&gt;
**[[CEG-Miscellaneous]] &lt;br /&gt;
**[[CEG-OldInfo]]&lt;br /&gt;
&lt;br /&gt;
====Misc====&lt;br /&gt;
*[[Units:Design]]&lt;br /&gt;
*[[Units:Textures]]&lt;br /&gt;
*[[Units:Buildpics]]&lt;br /&gt;
*[[Units:SideData TDF]]&lt;br /&gt;
*[[Units:Download TDF]] &lt;br /&gt;
*[[Units:FlankingBonus]]&lt;br /&gt;
*[[Mod Development:Armor|Game Development:Armor]]&lt;br /&gt;
*[[Mod Development:Cursors|Game Development:Cursors]]&lt;br /&gt;
*[[Mod Development:Archives|Game Development:Archives]]&lt;br /&gt;
*[[Mod Development:Sidepics|Game Development:Sidepics]]&lt;br /&gt;
*[[CustomUnitIcons|Game Development:Custom unit icons]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Development:Main&amp;diff=5680</id>
		<title>Development:Main</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Development:Main&amp;diff=5680"/>
		<updated>2010-02-25T09:30:46Z</updated>

		<summary type="html">&lt;p&gt;Argh: Removed links that aren&amp;#039;t relevant to working on the engine or AI for the engine.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|width=&amp;quot;100%&amp;quot; style=&amp;quot;border: 0px; border-spacing:0px&amp;quot;&lt;br /&gt;
|width=&amp;quot;500px&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;padding-left:10px; padding-right:10px&amp;quot;|&lt;br /&gt;
&#039;&#039;&#039;[[Building spring|Building/Compiling the Spring Engine]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
How to build Spring from source.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Building Spring on Windows|Windows]], [[Building Spring on Linux|Linux]], [[Building Spring on MacOSX|MacOSX]], [[Building Spring Cross Compiled|Cross-compiler]] or [[Building Spring on Buildbot|Buildbot]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Getting_Started_Development|Spring Engine Development]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Information regarding contributing to the source code of Spring.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Lobby_Development|Lobby Clients and Servers Development]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Information regarding contributing to the source code of the different lobby clients and servers available for Spring.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[AI:Development|Skirmish AI Development]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
All you ever wanted to know about Skirmish AI Development for Spring, and more. This includes Skirmish and Lua AIs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Linux_Page |Linux and Mac OS]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Mac OSX / NetBSD / Solaris / Linux / Cross-platform information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Debugging_sync_errors|Sync Debugging]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Contains instructions for debugging sync related errors in spring.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:0px&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|width=&amp;quot;100%&amp;quot; class=&amp;quot;legend&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[http://spring.clan-sy.com/phpbb/viewforum.php?f=12 Development forums]&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Look at the development forums for ongoing progress and discussion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|width=&amp;quot;100%&amp;quot; class=&amp;quot;legend&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[http://springrts.com/mantis/ Report Bugs/Submit a Patch]&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Submit patches and bug reports here&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|width=&amp;quot;100%&amp;quot; class=&amp;quot;legend&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;[http://github.com/feeds/spring/commits/spring/master Commit Newsfeed]&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| View git commits as they happen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Main_Page&amp;diff=12788</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Main_Page&amp;diff=12788"/>
		<updated>2010-02-25T09:28:28Z</updated>

		<summary type="html">&lt;p&gt;Argh: Removed &amp;quot;Engine Development&amp;quot;; redundant&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
{|border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;background: #41545c; border: 1px #aaa solid;&amp;quot;|&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Read Me First]]&#039;&#039;&#039; Answers to questions often asked - Everyone should read this first.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[FAQ]]&#039;&#039;&#039; Has it been asked before?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Using_Spring|Playing Spring]]&#039;&#039;&#039; How to play the game. Controls, issuing orders, and related topics.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Games]]&#039;&#039;&#039; Games that use the Spring engine.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Getting Spring Content and Links]]&#039;&#039;&#039; Lists sites related to spring, and sites from which you can download spring Mods/Games, Maps, and more&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Maps]]&#039;&#039;&#039; All about maps for the Spring engine and where to get them.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[AIs]]&#039;&#039;&#039; Skirmish AIs, Helper AIs...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Lua Widgets]]&#039;&#039;&#039; All about installing and using LuaUI widgets...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Spreading Spring]]&#039;&#039;&#039; Read before advertising.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Hosting Spring]]&#039;&#039;&#039; Autohosting and related topics.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Linux_Page |Linux and Mac OS]]&#039;&#039;&#039; Mac OSX / NetBSD / Solaris / Linux / Cross-platform information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[The Lighter Side Of Spring]]&#039;&#039;&#039; Humour, comics and quotations.&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;background: #41545c; border: 1px #aaa solid;&amp;quot;|&lt;br /&gt;
== Game Development == &lt;br /&gt;
&#039;&#039;&#039;[[Mod_and_Unit_development#Mod_development|Game Development And Unit Creation]]&#039;&#039;&#039; Lots of links to valuable Articles and forum threads regarding Mod/Unit Development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Map_development|Map Development]]&#039;&#039;&#039; Tutorials and other useful information for creating maps.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Debugging_sync_errors|Debugging sync errors]]&#039;&#039;&#039; Guide to debugging sync errors for engine developers, mod developers and testers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Lua Scripting]]&#039;&#039;&#039; Information regarding the use of the supplementary Lua scripting language for Widgets and beyond...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Map, Mod, And Unit Development Programs|Content Development Programs]]&#039;&#039;&#039; Links to all kind of useful programs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[AI:Development|AI Development]]&#039;&#039;&#039; Lots of information about developing Skirmish, Unit and Group AIs for Spring.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Monthly Topic Rotation]]&#039;&#039;&#039; Generally related to development of the engine or particular mods. Read before posting on the forums.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[General Resources]]&#039;&#039;&#039; Usable textures, sounds and code snippets by the community, for the community.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Associated Development Groups]]&#039;&#039;&#039; Teams, Forums and Groups associated with Spring content and code development.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|width=&amp;quot;100%&amp;quot; style=&amp;quot;margin:10px; background:#2d3b43; padding:5px; border:1px #aaa solid;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;center&amp;gt;&#039;&#039;&#039;This wiki needs your help!&#039;&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;A wiki is a web application that allows users to add content, as on an Internet forum, but also allows anyone to edit the content.&amp;quot;&#039;&#039;&lt;br /&gt;
- [http://en.wikipedia.org/wiki/Wiki Wikipedia.org]&lt;br /&gt;
&lt;br /&gt;
The spring project is very dependent on its community of users to help new players and developers.  If you see anything here where a change would be helpful, please put it in.  We are currently working together at the [[Wiki ToDo]] page to help coordinate improvements.&lt;br /&gt;
&lt;br /&gt;
Any contributions you make to this Wiki are in the public domain.  If you need help with the wiki markup, the [[Help:Editing|help page]] is an excellent resource.&lt;br /&gt;
|}&lt;br /&gt;
 __NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
If you wish to comment on this page (or the wiki) you need to login and then you can go [http://taspring.clan-sy.com/w/index.php?title=Talk:Main_Page&amp;amp;action=edit&amp;amp;section=new here], and post your thoughts.&lt;br /&gt;
[[Category:Spring]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Main_Page&amp;diff=226</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Main_Page&amp;diff=226"/>
		<updated>2010-02-25T09:28:28Z</updated>

		<summary type="html">&lt;p&gt;Argh: Removed &amp;quot;Engine Development&amp;quot;; redundant&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
{|border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;background: #41545c; border: 1px #aaa solid;&amp;quot;|&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Read Me First]]&#039;&#039;&#039; Answers to questions often asked - Everyone should read this first.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[FAQ]]&#039;&#039;&#039; Has it been asked before?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Using_Spring|Playing Spring]]&#039;&#039;&#039; How to play the game. Controls, issuing orders, and related topics.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Games]]&#039;&#039;&#039; Games that use the Spring engine.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Getting Spring Content and Links]]&#039;&#039;&#039; Lists sites related to spring, and sites from which you can download spring Mods/Games, Maps, and more&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Maps]]&#039;&#039;&#039; All about maps for the Spring engine and where to get them.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[AIs]]&#039;&#039;&#039; Skirmish AIs, Helper AIs...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Lua Widgets]]&#039;&#039;&#039; All about installing and using LuaUI widgets...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Spreading Spring]]&#039;&#039;&#039; Read before advertising.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Hosting Spring]]&#039;&#039;&#039; Autohosting and related topics.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Linux_Page |Linux and Mac OS]]&#039;&#039;&#039; Mac OSX / NetBSD / Solaris / Linux / Cross-platform information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[The Lighter Side Of Spring]]&#039;&#039;&#039; Humour, comics and quotations.&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;background: #41545c; border: 1px #aaa solid;&amp;quot;|&lt;br /&gt;
== Game Development == &lt;br /&gt;
&#039;&#039;&#039;[[Mod_and_Unit_development#Mod_development|Game Development And Unit Creation]]&#039;&#039;&#039; Lots of links to valuable Articles and forum threads regarding Mod/Unit Development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Map_development|Map Development]]&#039;&#039;&#039; Tutorials and other useful information for creating maps.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Debugging_sync_errors|Debugging sync errors]]&#039;&#039;&#039; Guide to debugging sync errors for engine developers, mod developers and testers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Lua Scripting]]&#039;&#039;&#039; Information regarding the use of the supplementary Lua scripting language for Widgets and beyond...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Map, Mod, And Unit Development Programs|Content Development Programs]]&#039;&#039;&#039; Links to all kind of useful programs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[AI:Development|AI Development]]&#039;&#039;&#039; Lots of information about developing Skirmish, Unit and Group AIs for Spring.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Monthly Topic Rotation]]&#039;&#039;&#039; Generally related to development of the engine or particular mods. Read before posting on the forums.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[General Resources]]&#039;&#039;&#039; Usable textures, sounds and code snippets by the community, for the community.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Associated Development Groups]]&#039;&#039;&#039; Teams, Forums and Groups associated with Spring content and code development.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|width=&amp;quot;100%&amp;quot; style=&amp;quot;margin:10px; background:#2d3b43; padding:5px; border:1px #aaa solid;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;center&amp;gt;&#039;&#039;&#039;This wiki needs your help!&#039;&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;A wiki is a web application that allows users to add content, as on an Internet forum, but also allows anyone to edit the content.&amp;quot;&#039;&#039;&lt;br /&gt;
- [http://en.wikipedia.org/wiki/Wiki Wikipedia.org]&lt;br /&gt;
&lt;br /&gt;
The spring project is very dependent on its community of users to help new players and developers.  If you see anything here where a change would be helpful, please put it in.  We are currently working together at the [[Wiki ToDo]] page to help coordinate improvements.&lt;br /&gt;
&lt;br /&gt;
Any contributions you make to this Wiki are in the public domain.  If you need help with the wiki markup, the [[Help:Editing|help page]] is an excellent resource.&lt;br /&gt;
|}&lt;br /&gt;
 __NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
If you wish to comment on this page (or the wiki) you need to login and then you can go [http://taspring.clan-sy.com/w/index.php?title=Talk:Main_Page&amp;amp;action=edit&amp;amp;section=new here], and post your thoughts.&lt;br /&gt;
[[Category:Spring]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Using_Spring&amp;diff=19393</id>
		<title>Using Spring</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Using_Spring&amp;diff=19393"/>
		<updated>2010-02-25T09:26:03Z</updated>

		<summary type="html">&lt;p&gt;Argh: Removed &amp;quot;Starting a Game&amp;quot;; redundant&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|width=&amp;quot;100%&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;background: #41545c; border: 1px #aaa solid;&amp;quot;|&lt;br /&gt;
===Using Spring===&lt;br /&gt;
&lt;br /&gt;
This is a fairly exhaustive description of controls, interface and features.  For basic information, check the most current readme [[Readme|here]] or [[Read_Me_First|Read me first]].  For an introduction to the strategy and overall gameplay in XTA (and most mods based on the original Cavedog units) check out the [[Spring_guide%21|Spring Guide!]]. Other mods should have more specific documentation on their web sites or on the Wiki. Please see the links in the [[Games]] section.&lt;br /&gt;
&lt;br /&gt;
For more advanced/current information check the most recent [http://taspring.clan-sy.com/changelog.txt changelog] (&#039;&#039;fixme&#039;&#039;) or the [http://taspring.clan-sy.com/phpbb/ Spring Forums].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|width=&amp;quot;100%&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;background: #41545c; border: 1px #aaa solid;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===Articles===&lt;br /&gt;
&#039;&#039;&#039;[[Using_Selections|Selections/Groups/Group Commands/Group AI]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Using_Orders|Issuing Orders]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Command_Reference|Command Quick Reference]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Printable_Reference|Printable Command Reference]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://img108.imagevenue.com/img.php?image=03721_PK06A_Compact_Keyboard_ProdImage_Black_V2_122_972lo.jpg Spring default Keyboard layout] (OLD)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Using_Camera | Using the Cameras]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Using_chat|Chat, Cheats, and Text Commands]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Using_doodles|Map drawing/doodles]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Using_custom_keys| Customized key shortcuts/bindings and the key/selection editor]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Spring on a LAN]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Playing]]&lt;br /&gt;
&lt;br /&gt;
[[category:Using Spring]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Where_files_go&amp;diff=19605</id>
		<title>Where files go</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Where_files_go&amp;diff=19605"/>
		<updated>2010-02-25T09:24:03Z</updated>

		<summary type="html">&lt;p&gt;Argh: Removed &amp;quot;download BA / NOTA&amp;quot;.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===What It Is===&lt;br /&gt;
 &#039;&#039;&#039;Maps:&#039;&#039;&#039; those neat places you will play your games in&lt;br /&gt;
 &#039;&#039;&#039;Mods:&#039;&#039;&#039; those games you will play on the maps&lt;br /&gt;
 &#039;&#039;&#039;Base ota content:&#039;&#039;&#039; material needed to run the games which use content from&lt;br /&gt;
 the Total Annihilation Product demo and /or Main Product&lt;br /&gt;
 &#039;&#039;&#039;Lua Widgets:&#039;&#039;&#039; configured settings for game play. they often make it much&lt;br /&gt;
 easier to control your troops etc.&lt;br /&gt;
 &#039;&#039;&#039;AI:&#039;&#039;&#039; an AI pot to give you an opponent in a game&lt;br /&gt;
&lt;br /&gt;
===Where It Goes===&lt;br /&gt;
 &amp;lt;b&amp;gt;Maps&amp;lt;/b&amp;gt; go in the Maps folder in your Spring directory&lt;br /&gt;
 Example: &#039;&#039;My Documents\My Games\Spring\maps&#039;&#039;&lt;br /&gt;
 Example Map File: &amp;quot;ExpandedTropics.sd7&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;b&amp;gt;Mods(Games)&amp;lt;/b&amp;gt; go in the Mods folder in your Spring directory&lt;br /&gt;
 Example: &#039;&#039;My Documents\My Games\Spring\mods&#039;&#039;&lt;br /&gt;
 Example Mod File: &amp;quot;NOTA154.sd7&amp;quot;&lt;br /&gt;
 Example Mod File: &amp;quot;NanoBlobs065.sdz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;Base ota content&amp;lt;/b&amp;gt; is needed for all those lovely Mods like [[NOTA]]. It goes in your Base folder&lt;br /&gt;
 in the Spring directory.&lt;br /&gt;
 Example: &#039;&#039;My Documents\My Games\Spring\base&#039;&#039;&lt;br /&gt;
 An Example File: &amp;quot;otacontent.sdz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;Lua Widgets&amp;lt;/b&amp;gt; typically go in your Lua &amp;gt; Widgets folder&lt;br /&gt;
 Example 1: &#039;&#039;My Documents\My Games\Spring\LuaUI\Widgets&#039;&#039;&lt;br /&gt;
 Some times you will find that they go here: &amp;quot;C:\Program Files\Spring\LuaUI&amp;quot;&lt;br /&gt;
 Mods also come with widgets in their mod folder altering that is not for beguines so I will&lt;br /&gt;
 not tell you here.&lt;br /&gt;
 Example Widget File: &amp;quot;unit_customformations2.lua&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===What You Want===&lt;br /&gt;
 &#039;&#039;&#039;Lua Widgets:&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;b&amp;gt;unit_customformations2.lua&amp;lt;/b&amp;gt;: Lets you draw orders in a line formation by dragging the mouse&lt;br /&gt;
 while button is held down. Lets you draw attack lines, move lines, fight lines, unload&lt;br /&gt;
 lines. Units/orders will be spread out along the line you draw&lt;br /&gt;
 &amp;lt;b&amp;gt;gui_clock.lua&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;b&amp;gt;unit_immobile_buider.lua&amp;lt;/b&amp;gt;: for BA and CA, not for NOTA sets keeps certain units active&lt;br /&gt;
 &amp;lt;b&amp;gt;unit_stockpile.lua&amp;lt;/b&amp;gt;: auto loads anti nuke silos and other such units not needed but very&lt;br /&gt;
 useful&lt;br /&gt;
 &amp;lt;b&amp;gt;Transporter_2.lua&amp;lt;/b&amp;gt;: auto mathematically moves units with move orders which are guarded by a&lt;br /&gt;
 transport with the transport nearly invaluable once you get a handle for every thing else&lt;br /&gt;
 you need to do&lt;br /&gt;
 &amp;lt;b&amp;gt;gui_build_eta.lua&amp;lt;/b&amp;gt;: gives you eta for things under construction very useful but not needed&lt;br /&gt;
 &amp;lt;b&amp;gt;unit_improved_metal_maker.lua&amp;lt;/b&amp;gt;: helps metal makers run not needed but very helpful&lt;br /&gt;
 &amp;lt;b&amp;gt;[http://spring.clan-sy.com/wiki/NOTA#Team_Speak Team Speak]&amp;lt;/b&amp;gt; Lets you speak to your allies while in game&lt;br /&gt;
&lt;br /&gt;
===What To Know===&lt;br /&gt;
&lt;br /&gt;
 If you use TASClient to find games hit F1 for help.&lt;br /&gt;
 NOTA has some Single player missions.&lt;br /&gt;
 S44 has a decent AI created for it.&lt;br /&gt;
 SWIW has a decent AI created for it.&lt;br /&gt;
 Many mods have &amp;quot;chicken modes&amp;quot; or &amp;quot;Space Bug modes&amp;quot; which are basically a  defense against waves of forces.&lt;br /&gt;
 &#039;&#039;&#039;drawing messages&#039;&#039;&#039; on  the game map while in game uses &amp;quot;~&amp;quot; (found under&lt;br /&gt;
 the Esc key)and the left&lt;br /&gt;
 mouse button.&lt;br /&gt;
 Hold the &amp;quot;~&amp;quot; key and Single click your wheel button to place a point on the map and double&lt;br /&gt;
 click to place a point with text. Use &amp;quot;~&amp;quot; and the right mouse button to erase.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; [[Getting_Spring_Content_and_Links|&amp;lt;- Back to &amp;quot;Getting_Spring_Content_and_Links&amp;quot; page]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:old]] [[Category:unsorted]]&lt;/div&gt;</summary>
		<author><name>Argh</name></author>
	</entry>
</feed>