This Trac instance is not used for development anymore!

We migrated our development workflow to git and Gitea.
To test the future redirection, replace trac by ariadne in the page URL.

Custom Query (5409 matches)

Filters
 
Or
 
  
 
Columns

Show under each result:


Results (1 - 1000 of 5409)

1 2 3 4 5 6
Ticket Resolution Summary Owner Reporter
#1 fixed Player Properties historic_bruno Stuart Walpole
Description
  • Ideally JS variables should be attachable to the Player object (via localPlayer?) to declare and set any properties affiliated with the current player. (eg player.resource.food; modder could alter it to add/remove any resources he wishes.)
  • Civilisation: Celt, Greek, etc ... Chosen from session config. (--> Currently there is a concept of civ, but it's not choosable in the GUI.)
  • Colour: Player colour, chosen from session config.
  • Team: In session config, players can choose to be on the same team (allied at start).
  • Various team settings, such as allowing teams to have "shared control" and being able to command each other's units.
  • Alliance: Diplomatic settings (who's an ally, who's an enemy).
  • array of players matching slot numbers, 1: enemy, 2: ally (Not choosable from GUI yet though.)
  • Phase: The starting "age" for the player (defaults to village). If otherwise, the player begins with the phase upgrade already researched.
  • Resource: Quantities of each of the resources gathered by the player.
    • Currently resources are tracked by the GUI; every player should have their own set of resources and the entity scripts and GUI should be updated to work with this.
  • Start Location: Position on the map where the player will begin.
    • Camera should also start centered on this location.
#2 fixed Gameplay - Unit AI Stuart Walpole
Description
  • When a unit depletes a resource object, he should seek out another one to gather from if nearby.
  • Stances
    • GUI: List stance options in GUI and allow user to select the stance for current unit.
  • Units react to opponents in LOS, depending on stance (move to attack, hold ground and attack, don't attack except to retaliate). Changed to "ready" animation instead of idle.
  • Units react to opponents in attack range, depending on stance (move to attack, hold ground and attack, don't attack except to retaliate).
  • Equally, depending on stance's freedom of movement, capable idle units will repair or heal nearby damaged units and buildings when not otherwise engaged.
  • When an entity places the foundation for a structure, he'll move over to it and aid in constructing it.
#3 fixed [PATCH] Implement Technologies Jonathan Waller Stuart Walpole
Description

Most of the code for technologies is now done.

The modifications that technologies make still need coding. See ResourceGatherer.js for an example.

Tech pairs where only one out of two techs can be researched need implementing. An idea is to have a tech pair json file which defines the pair and have the building have that in it's template file for what is available for research. The tech pairs can then supersede each other.

#4 fixed Make simulation speed configurable Stuart Walpole
Description
  • When releasing screenshots, the scenario designers would like to be able to slow down the speed of the game so they can set up a shot in "slow-mo" and have a better chance of taking an impressive-looking screenshot.
  • We got around this by altering the movement speed of entities, but this was a bit of a hack since it didn't affect other actions, and units move at a crawl for any other development until changed back. So, would it be possible to alter the simulation rate while the game is running?
  • Probably best to handle it as an exposed JS function with a parameter to set the game speed modifier. Then could link this to two hotkeys (and maybe also onscreen buttons with speed display) to increase/reduce the simulation speed a step at a time.
  • One hotkey increases the rate of simulation by one step (slows it down, eg for easier taking of screenshots). Another hotkey decreases the rate of simulation by one step (speeds it up, eg for feature testing).
  • Feature should not be available to clients, only the host (so that all players match to one speed).
#5 fixed Gameplay - Pathfinding Stuart Walpole
Description
  • Improve to handle tree traversal and dynamic terrain.
#6 fixed Random Map Scripting historic_bruno Stuart Walpole
Description
  • Integrate rmgen with engine, so random map based on session config can be generated on the fly.
  • Accept parameters so that random maps can be generated based on host's settings (eg number of players, their civilisations, desired number of territories, if any, size of starting force (eg prebuilt base or "Nomad", number of starting units), etc).
  • Fundamental commands:
  • Set terrain textures
  • Define elevation
  • Area definition (for territories)
  • Objects in territories (resources, settlements)
  • Water height (This is just height 0 in RMS, but maybe we can make it customizable)
#7 fixed Diplomacy leper Stuart Walpole
Description
  • Support for sending chat messages to players (all, specific, alliance groups). #1583
  • Taunts (including GUI)
  • Making/breaking alliances
  • Sending tribute
  • Tributing units/territories
#8 fixed Simulation - Time Elapsed Stuart Walpole
Description
  • hh:mm:ss clock variable from engine showing time elapsed since the session started (perhaps best handled as an event, so it's updated in real-time?). I'd suggest a separate variable for each component (eg elapsedHours, elapsedMinutes, elapsedSeconds).
  • This can then be used to control various time-based occurrences in the game ... Such as moving to the next season or stage in the day/night cycle by comparing it to a duration set in session creation.
  • Or maybe implement it using a ProgressTimer? set to update each game second? (Would still have to calculate the difference on the fly.)
#9 fixed [PATCH] Simulation - Game Record/Replay Stuart Walpole
Description
  • Initial settings and all input is recorded.
  • These same inputs can be fed back into the game at a later date so that the player can view it as a replay.
  • User cannot affect what happens, but can view it (alter playback speed, look at play from any players' POV, etc).
  • Needs a JS Interface. Should probably start and stop recording synchronized with CGame somehow. Needs a file format (pipe network packets to a file). Needs an entry point for replay (could do something wicked with CMessagePipe and the polling framework already in place for sockets, perhaps). http://www.wildfiregames.com/forum/index.php?showtopic=1665
  • Also would need a Game Replay user interface to handle special features (selecting control of a different player, adjusting the rate of playback, rewind, etc) as well as select a replay to load (variation of Load Game screen).

Related tickets: #3168 Lets observer change perspective #3253 Save playernames to commands.txt #3255 Update directory structure to prevent overwrites #3258 Main menu entry to start replays #3261 Session panel (pause / fast forward / rewind) #3309 Fast forwarding replays doesn't work as expected #3387 Access summary screen from replays

#12 fixed Orientation properties / entity alignment Stuart Walpole
Description
  • Units can have a height offset relative to the terrain (eg flying units, or ones the scenario designer has decided to make float in the air, for some reason)
#13 fixed [PATCH] Formations Badmadblacksad Stuart Walpole
Description
#14 fixed Entity Death Stuart Walpole
Description
  • Remove the "decay animation". Instead, the last frame of the death animation is sustained while the corpse is lying about and while it is decaying.
  • If an entity leaves a corpse, it should still decay (ie be removed from the map with a bit of eye candy) at some point to remove the entity for performance reasons (whether after a timer has elapsed, or based on some signal from the graphics engine).
  • Decay: If an entity doesn't leave a corpse (eg buildings decay immediately after being destroyed) or after its corpse state has elapsed, the default will be for it to sink vertically into the terrain, ideally with also a simple fade effect, until out of sight (basically the reverse of construction). Then it'll be removed from the game.
#15 fixed Resources Stuart Walpole
Description
  • An upper limit on how much population limit can be increased, set at Session Creation (add to GUI), default 200.
  • Ensure resource and population requirements are taken into account in determing prerequisites for entity creation.
#17 fixed Bug - Delay Before Performing Entity Action Stuart Walpole
Description
  • Units currently delay for a few seconds between reaching a target and switching to performing this action. This delay period should be reduced.
#18 fixed [PATCH] Realistic ranged attack Jonathan Waller Stuart Walpole
Description
  • Ranged attack projectiles should not guaranteed to hit target
  • Splash damage should be implemented when the projectile hits something (target, ground, or otherwise)
#19 fixed Complete Production Interface Stuart Walpole
Description
  • GUI: Progress bar over unit currently being created. Numbers next to units in queue.
  • Sound: Units make a "unit ready" sound when creation is complete.
#20 fixed Entity Event - Train - Rally Point andrew Stuart Walpole
Description
  • Training building has a "Rally Point" property. (When the building is selected, a banner actor shows the position of its rally point.)
  • Rally Point position can be set by right-clicking a terrain location with the building selected (or pressing a Rally Point UI button to get the rally cursor, then doing the same).
  • Spawned units move to rally point after appearing adjacent to the building.
  • Training building has a "Spawn Point" property. (The X/Z origin on the edge of the building where the entity first emerges (eg at the actor position of a door) after being created; he then walks from there to the rally point.) [Assuming it isn't satisfactory to just have units randomly appear at any side of the building. Varies from RTS to RTS.]
#21 fixed [PATCH] Building construction Stuart Walpole
Description
  • Building rises out of ground as construction proceeds (#1174)
  • Scaffolding not necessary but maybe as a bonus if time allows? (#1581)
#23 fixed [PATCH] Buy/Sell Resources Stuart Walpole
Description
  • Resources can be traded for other resources at the Market from the Barter tab.
  • (This is mostly an interface task, since it largely involves pressing buttons to juggle the player's resource values, without need for special events.)
  • XML.Entity.Actions.Barter
#24 fixed Bug - Entity Order Lockup Stuart Walpole
Description
  • Sometimes selecting a target for an entity (eg telling a unit to gather from a tree) causes the game to freeze as a vast amount of memory is allocated to the game, and the only way out is to close the application from the task manager. Not easily replicable.
  • (Uncertain whether this is coming from the pathfinder failing to plot a course to the tree, or the order being given to the entity.)
#26 fixed Interactive garrisoned unit prop points Stuart Walpole
Description
  • Visible Garrisoning (see link above) liable to be most challenging aspect of garrisoning. Some of the garrisoned entities are propped to sockets on the parent actor, and while not directly controllable, can interact with the environment (eg archers at windows or on decks of ships fire at nearby units, including units propped on other ships).
#27 fixed Entity Events - Garrison/Inventory Stuart Walpole
Description
  • Maintain a "selection" of entities stored in an entity. (These do not appear in the game unless occupying prop points ... See Entity Events - Garrison - Propping.)
  • Garrisoned entities can be removed (either immediately adjacent to parent, or ungarrisoned to a target using something similar to a Rally Point) and listed (each for GUI ungarrisoning/viewing).
  • Actor player-coloured pennant prop appears over entity when units are garrisoned in it. (This will need X/Z location properties so artists can put it somewhere which looks vaguely appropriate from unit to unit.)
  • The same principle of entities-owned-by-other-entities could also be used to imitate an entity's inventory (possessions), with objects being carried by an entity and appearing (and being droppable from) the entity's garrison UI.
  • This is largely for TLA's sake (which has more RPG elements; eg they might want a unit to be able to pick up a sword, have it appear in the entity's hand socket, and increase his attack damage while he is carrying it -- this would also include having an "equipment slot" so he can only equip one melee weapon).
  • However, we should keep this feature set in mind for "relics" (whether we do them in Part I or Part II), since they follow similar principles of picking up (see the Pick Up event) and carrying an item (bestowing a tech effect) and dropping (ungarrisoning) it in the world.
  • (Priests and Heroes can pick up a relic and give it to a Temple's inventory, which then unlocks the relic's tech effect.)
#30 fixed [PATCH] Trade fcxSanya Stuart Walpole
Description
#31 fixed Entity Event - Heal Jason Stuart Walpole
Description

Priests and temples heal injured organic units in a radius around them.

#32 fixed Entity Event - Repair Stuart Walpole
Description
#34 fixed Entity Event - Graze Stuart Walpole
Description
#35 fixed Entity Event - Town Bell Stuart Walpole
Description
  • Pressing this UI button of the Civ Centre puts the units in its province (or surrounding area, if playing a game mode where the map isn't split into provinces) into "red alert": units automatically garrison in nearby buildings, with priority on gatherers that cannot defend themselves (female citizens), and military units going for buildings that allow them to attack from the battlements (like towers).
#37 fixed Entity Event - Charge Stuart Walpole
Description
  • Trample Aura (component of Charging). Used in particular by cavalry to mow down infantry.
#41 fixed Provinces/Territories philip Stuart Walpole
Description
  • Relies on area definition (RMS), allocation of resources and settlements to Provinces.
  • Ownership of areas (provinces)
  • Visible borders
  • Scripted behaviour for Provinces:
    • Unlocks (eg resource gathering, building)
    • Construction over NPC (gaia) settlements (see Entity Event - Construction - Sites)
    • Statistical Benefits/Disadvantages
    • Ceasefire (see Timed Events above), attrition damage (see Terrain below)
    • Entity caps (limited to a certain number of entities of certain types, particularly buildings, per province)
#42 fixed Terrain - Elevation andrew Stuart Walpole
Description
  • Higher Ground: Units at higher elevations gain a bonus to damage in combat.
  • Steepness:
    • Slopes can be too steep to traverse, though this can vary from unit to unit (foot units can climb steeper slopes than carts or siege weapons). --> Decided not to do this for now since it is expensive and would be confusing to the player; instead, just make certain terrains impassable.
    • The steepness of a slope also affects the movement rate of units (going up is slower, going down is faster).
#50 fixed Virtual File System Stuart Walpole
Description
  • Additional parameter to extract folder names.
  • on-demand loading = assimilate changed files without restarting game
  • GUI Hotload.
  • Scope/cache management
  • VFS should handle newline conversion (recognize all \r\n \n \r combinations and treat them as newlines) when reading files.
#52 fixed [PATCH] Trigger system O.Davoodi Stuart Walpole
Description
  • General-purpose trigger system

See this topic for forum discussion.

Here is the recent topic: http://www.wildfiregames.com/forum/index.php?showtopic=18211

#55 fixed Camera - Start Position Stuart Walpole
Description
  • Able to set camera position at game start for each player (usually centered on player's Civ Centre if not specified ... done by RMS or baked into map?). (See Random Map Scripting above.)
#56 fixed Camera - Cinematics Sergey Stuart Walpole
Description
  • Key to lock camera on the selected unit ("follow" mode).
  • Bugfix: camera shakes when unit being followed goes downhill away from camera.
  • Cinematics: functions to control camera and define tracks at positions in the environment.
  • Option to lock camera rotation or "snap" to saved rotation.
#59 fixed Actors - Vertex Animation Stuart Walpole
Description
  • Animated meshes using vertex animation (swaying trees, flags, flowing capes -- could be done with boning/skinning if absolutely necessary.
  • If we could support vertex animation though, we would also be more accessable to the moding community that isn't as capable with bones and skin as developers).
#60 fixed Actors - Foundation Texture Stuart Walpole
Description
  • Foundation texture (eg leafy texture under trees, paved/dirt texture under buildings).
#61 fixed Actors - Particle Props Stuart Walpole
Description
  • Particle effects (smoke, flames, rubble) can be attached to sockets on a unit just like props.
  • Obviously requires a working particle system.
#62 fixed Bug - Actor Sychronisation Michael D. Hafer Stuart Walpole
Description
  • Start times for initial animations should be randomised. All units on the map start with their idle animations in perfect unison, for example.
#65 fixed Document GUI Engine Needs Stuart Walpole Stuart Walpole
Description
  • Document the needs of the revised GUI engine. Essentially do a postmortem on the current system and see where it can be improved (an initial start on that in the sections below). With any luck this'll provide a game plan to Gustav to make amends in the time before he goes to Japan, and then for his successor to take over.
  • (Merge the GUI Engine Trac task into that brief, and post for feedback.)
  • 01/05/06 "3 weeks to compile a wishlist for Gee, then he has 3 weeks of spare time."
  • "the school is coming to an end in 3 weeks so I have to pretty much study every day until then. Although when it's over I have 3 weeks completely free before I leave for Japan."
#67 fixed [PATCH] Internationalization gallaecio Stuart Walpole
Description
  • i18n - allow conversion from game's text into a translatable table, and then to the right format for the game to read. Possibly using GetText (http://www.gnu.org/software/gettext/gettext.html) if it supports XML, JS, and C++?. Multiple tools for GetText translation already exist, which would simplify the translation process (not a custom format and editor). See #1389
  • Includes correct handling of accented characters (many characters are replaced with (?) symbols). [The tools to do this are not quite completed/working yet.]
  • l10n - perform that conversion and do the translations (into English first, and maybe another language to test the system)
  • Provide a default hotkey set for each locale? See #692
#69 fixed Enhance Multiplayer Experience Stuart Walpole
Description

Latency Adjustment (moved to #3752)

Currently the networking code is hard-coded to a 200ms turn length, with commands scheduled for execution 2 turns ahead. This causes jerky motion if the RTT for any player is >200ms.

We ought to do some combination of dynamically adjusting the turn length (which allows fine-tuning and reduces simulation CPU load, but large values will result in very variable responsiveness depending on whether the player clicks near the start or end of a turn), and dynamically adjusting the number of turns ahead (which allows more consistent responsiveness, but is a coarse adjustment).

Player disconnections

I believe if a non-host player is disconnected, it'll display a message already, saying the player left?

However, if a client does not hear from a host for ~5 seconds, it should display a "waiting for host" message to the player (with an "exit game" button on it), and then either go back to normal or go to the "connection lost" message on network timeout. (Will be done in #3264)

Auto-Reconnect

If a player is kicked, allow them to try to reconnect via a button (in the case where their (the players) internet was cut off, but the host is still running the game, and the player rejoins the same I.P. and takes control of their units).

Observer Mode

Players who can join a game, but don't have a civ to play (full or doesn't want to play), can just watch (like a real-time Replay).

They get full view of the map (no SoD or FoW). Sometimes called 'God Mode'.

#70 fixed Graphics - Shaders Stuart Walpole
Description
  • Shaders
  • Simple implementation
  • Shaders and materials for shiny armour and helmets, reflective, glowing and transparent objects
#73 fixed Terrain Decals Stuart Walpole
Description
  • Paint a small texture on the terrain such as footprints, tree roots, blood splats, burn marks, etc… This would conform to the terrain perfectly and appear to be part of the terrain. (Splats/doodads/goobers/decals.)
#74 fixed Graphics - Particle Engine Stuart Walpole
Description
  • Basic particle engine is in the game, provided by Will Dull, with a constant emitter.
  • Needs to be picked up to allow creation of XML-based particle effects, using editor to tweak properties, and have them broadcast from locations in the game (either placed as particle objects, or attached to actors in prop sockets).
  • Often particles can appear conditionally (eg smoke and flame trails on a building when it is damaged) or when a unit is splashing through water.
#76 fixed Entity - Queuing Orders Stuart Walpole
Description
  • Currently an entity can only be assigned one order at a time.
  • The player should be able to queue multiple orders for an entity by holding down Shift when giving the entity an order. It will then complete each order in turn.
#79 fixed VFS: support for creating dirs Jan Wassenberg Jan Wassenberg
Description

VFS requires a bit of work so it can create real directories when files are written to not-yet-existing dirs. This is needed for the XMB move, because they no longer reside in the game's data dirs that are sure to exist anyway.

#80 fixed VFS: move XMB files to separate dir Jan Wassenberg Jan Wassenberg
Description

.. specifically to $install/cache/XMB/mods/official .

Rationale: unclutters the XML dirs, allows easily deleting XMB, allows file writes to go into some writable dir (important when not running as admin).

Discussion: see http://www.wildfiregames.com/forum/index.php?showtopic=9939&pid=170413&st=0&

Requires #78.

#81 fixed Move all writable files to user's home directory Jan Wassenberg
Description

To support Least-permission User Accounts (i.e. everything except Administrator) on Windows, no files in the game directory may be written to.

1) All output files (e.g. screenshots, savegames) should go into "My Documents\My Games\0ad" (suggestion). 2) Non-user-specific stuff that also doesn't need to be backed up (e.g. archive and XMB) should go in "Documents and Settings\All Users\Application Data\0ad". 3) this will be implemented in a portable fashion by providing sysdep routines to return "home" and "local appdata" directories.

#82 fixed Lighting editor Philip Taylor Philip Taylor
Description
  • Control over:
    • Lighting colours (sun, terrain ambient, unit ambient)
    • Sun direction
  • Real-time preview of changes
  • Load preset lighting conditions
  • Save new preset lighting conditions
#86 fixed Water editor Philip Taylor Philip Taylor
Description
  • Allow control over height of water plane
  • Select water effect (texture, shader parameters)
  • (Some time in the future, allow editing of the more advanced multi-level water system we'd hopefully have)
#88 fixed Sky editor Philip Taylor Philip Taylor
Description
  • Allow selection of skybox texture, and (if possible) shades.
#90 fixed Playtesting Philip Taylor Philip Taylor
Description
  • Run the game from inside the editor, using the in-game GUI and controls (but preferably inside the Atlas window, to make it as seamless as possible). Once finished, forget all changes and return to the editor
#91 fixed Player editor Slawomir Zborowski Philip Taylor
Description
  • Edit number of players and their names, types (AI/human/other), civs, resources, starting location, etc.
#95 fixed Cinematics editor andrew Philip Taylor
Description

UI for editing (and previewing) cinematics tracks.

#96 fixed [PATCH][Atlas] Copy-and-paste of entities trompetin17 Philip Taylor
Description

Allow copy-and-paste of various things, like the selected objects.

Probably implement by converting the data to XML and saving as text into the clipboard, so that people can easily edit it in a text editor or save it to disk and then copy it back into Atlas.

#99 fixed Objects jump when first moved Philip Taylor
Description

Create an object in Atlas. Zoom in and move the camera so the object is near a corner of the screen. With the object-move tool, click the unit and try moving by a single pixel. It jumps towards the edge of the screen by dozens of pixels.

It seems the cause is that CCamera::GetScreenCoordinates and CCamera::GetWorldCoordinates are not exact inverses - for points near the edge of the screen, the difference is quite significant. (GetWorldCoordinates requires integer pixel values, but I don't think that'd cause errors of more than one screen-space pixel (which would be acceptable) - it's probably some difference in the algorithms used to convert between spaces.)

#100 fixed Clean up ogghack Andrew Jan Wassenberg
Description

We are currently using really hacky code in sound/ogghack.cpp to decode OGG for sending it to OpenAL.

Background: all of our sounds are in .ogg format. At one point it was promised by Creative that their Windows implementation would support an extension that allows passing in OGG data directly to OpenAL. This would be very convenient for us and also quite efficient. Unfortunately Creative dropped the ball - they never got it working and now officially say "do it yourself".

Since ogghack.cpp was implemented during the time when they promised the extension would be available soon, it is a very basic implementation, wasteful of memory, and doesn't check for errors. This should be cleaned up and made permanent.

No serious changes should be required; we can still use the OGG Vorbis library as currently.

#103 fixed GL_ARB_texture_env_crossbar requirement is unnecessary Nicolai Hähnle Philip Taylor
Description

GameSetup.cpp checks for the presence of the GL_ARB_texture_env_crossbar extension, and complains if it's not there, in a way which implies that it's required and the game may break in unexpected ways.

That extension appears to be used only in FastPlayerColorRender, which is optional - it falls back to SlowPlayerColorRender if the required features are missing. Currently it's only testing for >= 3 texture units. It should probably be testing for GL_ARB_texture_env_crossbar too, and quietly switching to the slow method if it's unavailable.

#104 fixed GUI - Modal Dialogs (Namespaces) Stuart Walpole
Description
  • Problem: Currently all the GUI XML files are combined into one big GUI object, and you have to hide/unhide individual screens at appropriate times to make them appear, which is kind of nasty (and would make any editor much harder to do). This also creates problems with hotkeys (if the Esc key has a specific effect on the main menu, the Esc key will have the same effect everywhere else), as well as determining z order. For example, the dropped-down part of a combobox should usually be visible on top of everything, except when a message box is open on top of that (which seems to be an unavoidable problem if there's a single global z, instead of a localised per-GUI-screen z).
  • Solution: Separate GUI XMLs (other than those reserved for special purposes, such as sprite.xml, styles.xml and setup.xml) are considered their own namespaces (local pages). To switch between them, call a function to open/close an XML screen.
    • Each page is an independent GUI window ("modal dialog") with its own local z order. When objects with the same z order overlap, whichever object is written first should have the lower z, making specification of z values largely unnecessary.
    • There could be any number of these pages; pop-up windows (like game setup or a Yes/No dialog) could also be separate pages.
    • The XMLs are added to the GUI scope via init.xml (so that each XML load is not hardcoded into the engine).
    • Pages are drawn in z order using the sequence in which they are declared in init.xml.
    • .cfg Hotkeys are grouped under page names (hotkey.mainmenu.quit, hotkey.session.return) so that they are only effective while that page is open, or can be set as part of the reserved "global" page (hotkey.global.watermark) and the hotkey has the effect on any page.
    • This will also facilitate the -quickstart allowing the game to jump straight to a default session for testing purposes (while currently loading the GUI means having to start at the main menu).
#105 fixed GUI - Hotloading Stuart Walpole
Description
  • Problem: Although VFS recognises when game assets are modified and reloads them while the game is running, the GUI does not currently support this feature.
  • Solution: Adapt the GUI to be capable of auto-reloading changed assets. Such functionality should greatly improve rate of GUI development, since coordinates can be tweaked while the game is running without the need for an equivalent WYSIWYG editor.
#106 fixed GUI - Separate GUI and Simulation Stuart Walpole
Description
  • Problem: The GUI engine shares the same JS space as the simulation, which makes it far too easy to break synchronisation.
  • Solution: Separate the GUI and simulation so that they can be loaded independently. Also the setup of the simulation should not be dependent upon the GUI (so that -quickstart works). (Ask Philip for help if any questions.)
#113 fixed GUI - Grid Control Stuart Walpole
Description
  • Problem: A common GUI need are tables or lists of buttons with similar properties, such as a construction queue, list of garrisoned unit portraits, or table of statistics. Creating,
  • Solution: One solution is to be able to omit the XML and create a control instance entirely from script. A much safer solution, however, would be a "grid" control which acts as a container for an array of child objects of the same type with the same default properties from a given starting position. Only one grid would need to be declared and it would generate a specified number of child controls. It would automatically take care of lining up the buttons and fit to a specific spacing/rows/columns if specified. The child objects could then be individually accessed and their properties modified.
#117 fixed add CxxTest Jan Wassenberg Jan Wassenberg
Description

Background: using an existing Unit/self-test framework is deemed helpful (see 2006-05-27 meeting) Chiefly based on evaluation, we choose CxxTest as unit testing framework.

Basic usage:

  • self-tests are separate Cpp files that contain only the test code. (splitting is necessary so that cxxtestgen doesn't have to parse the entire codebase)
  • they are stored in a tests subdir of the source directory (simplifies finding the relevant test file for purposes of editing it)
  • a workspace generated by premake enumerates all test files, uses custom build step to generate the actual test code, and then links it all into a separate program that runs all tests. Note: separating test code from the main PS executable has several advantages as documented
  • only running certain tests will be possible (shortens iteration time when only editing one module).

TODO:

  • add CxxTest to SVN
  • generate workspace for the test program (via premake)
  • move all existing tests over to that
  • add squelchNextError feature, use it in string_s test
  • make sure all tests run successfully
  • filtering: modify(/replace/subclass) TestRunner and change its runWorld() so that it filters by the SuiteDescription.testName().
#119 fixed On-screen error display Jan Wassenberg
Description

Motivation: error log works but isn't usually looked at (only when a problem has otherwise made itself apparent). Solution: provide an on-screen display of errors to make sure they are seen.

Problems:

  • we currently have lots of unsolved errors in the log; when display on screen, those would get annoying fast. Solution: solve all of them! :P More seriously, having them in our face should provide a nice incentive to investigate and solve them. However, if need be, we can also use the logging system's severity mechanism to avoid displaying some log messages on screen.
  • how to deal with a flood of errors? Make sure each line gets (say) 30 seconds of face time, then scroll it off the screen. Only display a certain limit of lines to avoid scribbling on the entire screen.

Detailed Implementation Points:

  • probably best to integrate into CLogger; that which is logged there also goes onto screen.
  • text must be visible to user; whether scribbling directly on the screen (i.e. adding code to Render() ) or adding a GUI control of sorts is left open. The latter is preferable of course, but is a bit harder (needs a control to be made visible/invisible).
  • need to maintain a buffer of errors awaiting display. This is because errors can come up before the GUI or graphics systems are initialized; we'd want to display them as soon as possible afterwards.
  • proposal: std::deque of error-description lines. push new ones onto the end. as soon as GUI is ready, display the first MAXLINES of them on screen. maintain a count of when each line went on-screen. check every frame if the top lines have gotten more than FACETIME seconds; if so, pop them off the deque and remove them from the screen.

If deque is empty, no longer clutter up the screen; disappear from view.

  • this error display should be available for developers and modders. add a config option that enables/disables it.
  • prefer unicode-only strings (to allow easier localization)

Thanks to Philip for discussion+planning.

#120 fixed Death bug andrew
Description

After a unit finishes its dying animation, it "jumps" over to another spot when changing to the corpse actor.

#122 fixed Lowlevel CppDoc Jan Wassenberg Jan Wassenberg
Description

Add CppDoc comments to:

  • types
  • timer
  • posix_types
  • posix
  • path_util
  • ogl
  • mmgr
  • lib_errors
  • debug_stl
  • config
  • byte_order
  • app_hooks
  • allocators
  • adts
  • debug
  • lib
  • sysdep
  • snd
  • ia32
  • gfx
  • dir_watch
  • cpu
  • win_internal
  • win
  • wgl
  • wdbg
  • wdll_ver
  • h_mgr
  • handle
  • cursor
  • ogl_shader
  • unifont
  • ogl_tex
  • tex
  • tex_codec
  • tex_internal
  • snd_mgr
  • zip
  • vfs_tree
  • vfs_optimizer
  • vfs_mount
  • vfs
  • trace
  • path
  • file_io
  • file_internal
  • file_cache
  • file
  • compression
  • archive_builder
  • archive
#123 fixed Bug: menu->ingame music crossfade doesn't work Jan Wassenberg Jan Wassenberg
Description

.

#124 fixed Minor SwEng improvements Jan Wassenberg Jan Wassenberg
Description

Some possibilities for minor improvement noticed while cruising by:

  • premake: document extra_params
  • ogl: remove EXT_ symbols, use glext instead
  • debug_stl: prefix symbols with debug_stl
  • adts: move cache into separate file (also remove old cache impl)
  • wgl: prevent multiple include
  • move SDL files in sysdep/win to libraries/SDL
  • delay_load uses NLSO ctor to register functions. require load_notify to be called at init time. (rationale: this no longer works since splitting up into several static libs)
  • wsock_init: call via module init, have it do load_notify call
  • ScopeTimerAccrue: change #ifdef spaghetti into templated policy class
  • app_hooks, define VOID_FUNC to FUNC(.., (void) )
  • look at stalk walk code; any reason not to work on Win64?
  • replace ERR_TEX_CODEC_CANNOT_HANDLE with INFO_* - not an error. also ERR_SYM_SUPPRESS_OUTPUT ERR_SYM_SINGLE_SYMBOL_LIMIT
  • wdbg_sym: only import RtlCaptureContext once (not every walk_stack)
  • add sys_last_error (GetLastError on win32); converts to text in display_error, also show sys_last_error and errno
  • app_hooks: move i18n impl out (belongs in pyrogenesis)
  • move non-lib asm code into separate asm file; split out memcpy and color code from ia32_asm.asm
  • rename all C headers to C++ name (e.g. cmath) Deemed not worth the effort.
  • fix mem leaks No longer happens.
  • move GUIbase.h errors (DECLARE_ERROR) into philip's error mechanism, remove DECLARE_ERROR, remove ps/errors.h Separate ticket.
#125 fixed Error on Win64 while getting sound driver version Jan Wassenberg Jan Wassenberg
Description

Desmond reports:

I have a similar problem too. Ever since I updated the cache from a few months ago it does that for me.

Function call failed at dll_ver.cpp:45 (get_ver): return value was -1 (Unknown error (-1, 0xFFFFFFFF))

Call stack:

RtlFreeUnicodeString (:0)

win_get_snd_info (wsnd.cpp:178)
    dlls = (uninitialized/invalid set<string > >)
    suppress__ = 0x55 ('U')

WriteSystemInfo (util.cpp:48)
    LINE_44 = 
        t0 = 2.82072e-317
        description = 0x00000000

    N_path = "PCI\VEN_1002&DEV_4A49&SUBSYS_0D42174B&REV_00"
    hostname = "dvag"
    un = 
        sysname = [9] { 244, 218, 246, 119 ('w'), 212, 246, 45 ('-'), 0, 0 }
        nodename = [16] { 1, 0, 0, 254, 58 (':'), 83 ('S'), 0, 0, 0, 0, 0, 0, 5, 0, 0, 0 }
        release = [9] { 0, 0, 0, 0, 240, 253, 126 ('~'), 18, 59 (';') }
        version = "S"
        machine = [9] { 0, 0, 0, 0, 0, 0, 97 ('a'), 116 ('t'), 105 ('i') }

    ips = 0x40297020 -> (unavailable - internal error)

Then with a supress the game stays minimized, and the first time it does a 'rebuilding archive' then then goes to menu. A few builds ago it would show two error messages, but it dosen't do that anymore.

My sound card is a Creative Soundblaster Audigy 2 ZS. I'm running Windows XP Professional x64 in English. This 64bitness requires 64bit drivers to work, so the sound driver I'm using is a 64bit one. I'll check to see if there are any sounddriver updates after this. I haven't moved anything around. My 0ad directory is located here D:\Documents and Settings\Administrator\My Documents\0 AD. I have a C drive, but it is used for Win xp home boot and storing files.

#126 fixed Trac SVN post-commit hook Philip Taylor Philip Taylor
Description

It needs to work.

#127 fixed Make XMB Maintain Case Matei
Description

Currently XMB converts all element and attribute names to lower-case. It should keep them as they were in the file. We can then modify the entity or GUI code to change the JavaScript versions to camelCase.

#128 fixed Minor fixes/improvements related to GUI sluzky Jan Wassenberg
Description
  • We now get warnings whenever there is a C++ file that is empty or doesn't contain any meaningful info (e.g. stuff that would end up in the compiled static library). Accordingly: decide if CGUIScrollBarStyle.cpp and CGUIList.cpp can be removed.
  • Some parts of the GUI still use the old and obsolete PS_ERROR mechanism. Removing that would be nice, to avoid confusion. Also, localization would be helped a bit by not having error text hard-coded in English.

If a return-value-based approach is still desired (instead of tossing exceptions), we could simply assign numbers to the error definitions, rename them a bit, and be done. Otherwise, we can move that over to Philip's error mechanism, i.e. throwing exceptions. I can help out and/or do all the work - just let me know which is preferable. (old TODO entry: move GUIbase.h errors (DECLARE_ERROR) into e.g. Philip's error mechanism, remove DECLARE_ERROR, remove ps/errors.h.)

#129 fixed Opportunities for optimization (startup) Jan Wassenberg
Description
  • tc_CalculateVariationKey: 1.72362 s (8010x): graphics/objectmanager.cpp

TODO (for some efficiency): use the pre-calculated choices for this object, which has already worked out what to do for props, instead of passing the selections into BuildVariation and having it recalculate the props' choices. Release mode: 38.6697 ms

  • Gamesetup/config.cpp: 300ms

g_ConfigDB.Reload(CFG_SYSTEM); 216ms LoadGlobals(); 64ms Release mode: 60ms

  • plain_transform: 500ms

flipping font texture files vertically. fix: convert them to e.g. DDS (possibly compressed, if that looks ok?!) same thing for art/textures/particles/sprite cursors also require runtime conversion. ironically enough, being DDS means they have to be converted back to TGA's BGR ordering (required by Windows for cursors) Release mode: 5ms

  • CSimulation init: 5000ms Now about 600ms.
  • font load: 350ms (total for 12 fonts) mostly spent building display lists. Better to store coords and render quads in immediate mode? Or use vertex arrays?
  • GUI init: 900ms (having subtracted font load time)

[more will be added as they are found]

#130 fixed Bugfixes: string_s selftest and isnan() Jan Wassenberg Jan Wassenberg
Description
  • VC2005 release mode selftest crashes.
  • VC2003 string_s selftest complains due to missing debug_skip_next_error
  • isnan() reports spurious failures. TODO: check IA32 FXAM bit definitions.
#132 fixed Territories - Render Boundaries Matei
Description

Territory boundaries should be rendered in the game world, flowing along the terrain. Ideally, each territory's boundary should be coloured with its owner's player colour so that at the edge between two territories owned by different players, you see two lines of different colours side by side.

#133 fixed Territories - Build Rules Matei
Description

Buildings should only be buildable on allied territories. In addition, buildings should have a per-territory cap (e.g. 2 barrackses per territory).

#134 fixed Territories - Gather Rules Matei
Description

Gathering should only be allowed in allied territories or around mills built in enemy territories.

#135 fixed Territories - Shroud of Darkness philip Matei
Description

Controlling a territory should remove the Shroud of Darkness (but not Fog of War) within it for its owner.

#139 fixed Update wxWidgets Philip Taylor Philip Taylor
Description

wxWidgets 2.7.0 released. It doesn't seem to have any major changes (except for an added 'advanced user interface' library with no documentation so I'm not quite sure what it does), so it ought to be reasonably easy to upgrade to, and it should provide continued bug fixes and things.

#141 fixed Shadows are delayed by one frame Nicolai Hähnle Philip Taylor
Description

Shadows seem to be rendered on the screen one frame later than they should be: click on the minimap to jump somewhere (preferably while having a low framerate), and the screen is momentarily bright before all the shadows pop back in.

#143 fixed [PATCH] Shadowing: Selectively disable/enable for actors through properties philip Nicolai Hähnle
Description

Basically the default for actors would be that they would cast a shadow and they would recieve a shadow. Only need flags if they don't in either case. Something like:

<not_recieve_shadows /> <not_cast_shadow />

#144 fixed Visualize player controlled units that are hidden behind other objects Nicolai Hähnle
Description

We need a way to render player controled/obstructed (by trees, walls, terrain) units (player color/filled sillohettes), and some nifty effects to render enemy units hiding in 'trees' (some sort of transparency).

#145 fixed Auto detect gfx card "speed" Jan Wassenberg
Description
  • divide GPUs into several classes (i.e. crap, latest+greatest, shader capable, etc.)
  • measure perf on one sample system from each class, and then compare with performance attained during a test run.
  • if there is a test run, warn of a problem similar to what Nicolai experienced: lack of VIA 4in1 driver => AGP disabled => 5FPS when it should be much higher.

Could also use this to autodetect graphics settings based on what the user's system is capable of.

#146 fixed Assertion in wsdl screen_to_client Jan Wassenberg Nicolai Hähnle
Description

During startup of the game, I got the following error (unfortunately, I wasn't able to reproduce it).

This is in Windows XP, running the game in a 800x600 window, the screen resolution is 1280x1024. The window appeared in to top-left corner of the screen.

Here's the error message from the error dialog:

Assertion failed: "pt.x >= 0 && pt.y >= 0"
Location: wsdl.cpp:802 (screen_to_client)
errno = 42 (?)
OS error = Der Vorgang wurde erfolgreich beendet.


Call stack:

screen_to_client (wsdl.cpp:802)
    screen_x = (unavailable - stored in register 0x0)
    screen_y = (unavailable - stored in register 0x0)
    x = (unavailable - stored in register 0x0)
    y = (unavailable - stored in register 0x0)
    pt = { x = 5791740, y = 179 }
    suppress__ = 0x00
    suppress__ = 0x00

OnMouseButton (wsdl.cpp:903)
    __formal = 0x0048C874 (..)
    uMsg = (unavailable - stored in register 0x0)
    screen_x = 182
    screen_y = 16
    __formal = 0x0048C874
    outstanding_press_events = 1
    x = 0x7FFDF000
    y = 0x00000001

wndproc (wsdl.cpp:1035)
    hWnd = 0x00050600 (..)
    uMsg = 0x00000201
    wParam = 0x00000001
    lParam = 1048758
    ps = 
        hdc = 0x0012FCC0 (..)
        fErase = 1
        rcPaint = 
            left = 0
            top = 0
            right = 16
            bottom = 0

        fRestore = 0
        fIncUpdate = 1
        rgbReserved = [32] 
            0x00
            0x00
            0x00
            0x00
            0x00
            0x00
            0x00
            0x00
            0x44 ('D')
            0xFC
            0x12
            0x00
            0x48 ('H')
            0xFC
            0x12
            0x00 ...


GetDC (:0)

GetDC (:0)

IsWindowUnicode (:0)

CallWindowProcW (:0)

wglSwapBuffers (:0)

GetDC (:0)

GetDC (:0)

GetWindowLongW (:0)

DispatchMessageW (:0)

SDL_PumpEvents (wsdl.cpp:1051)
    msg = 
        hwnd = 0x00000001
        message = 0x00050600
        wParam = 0x00000201
        lParam = 1
        time = 0x001000B6
        pt = { x = 12142140, y = 185 }


SDL_PollEvent (wsdl.cpp:1061)
    ev = 0x0012FEFC -> 
        type = [8] { 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0x12, 0x00 }
        key = 
            type = [8] { 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0x12, 0x00 }
            keysym = { type = [8] { 0x10, 0xFF, 0x12, 0x00, 0x01, 0x00, 0x00, 0x00 }, sym = 1, unicode = 0xF1F9 }

        motion = { type = [8] { 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0x12, 0x00 }, x = 0x0000, y = 0xFF10 }
        button = 
            type = [8] { 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0x12, 0x00 }
            button = [8] { 0x00, 0x00, 0x00, 0x10, 0xFF, 0x12, 0x00, 0x01 }
            state = [8] { 0x00, 0x00, 0x10, 0xFF, 0x12, 0x00, 0x01, 0x00 }
            x = 0xFF10
            y = 0x0012

        active = { type = [8] { 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0x12, 0x00 }, gain = [8] { 0x00, 0x00, 0x00, 0x10, 0xFF, 0x12, 0x00, 0x01 }, state = [8] { 0x00, 0x00, 0x10, 0xFF, 0x12, 0x00, 0x01, 0x00 } }
        user = { type = [8] { 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0x12, 0x00 }, code = 1244944, data1 = 0x00000001 }


PumpEvents (main.cpp:91)
    ev = 
        ev = 
            type = 0xFC
            key = 
                type = 0xFC
                keysym = { type = 0x00, sym = 1244944, unicode = 0x0001 }

            motion = { type = 0xFC, x = 0x0012, y = 0x0000 }
            button = 
                type = 0xFC
                button = 0xFE
                state = 0x12
                x = 0x0000
                y = 0x0000

            active = { type = 0xFC, gain = 0xFE, state = 0x12 }
            user = { type = 0xFC, code = 0, data1 = 0x0012FF10 }



Frame (main.cpp:240)
    need_update = true 
    TimeSinceLastFrame = 3.62822e-038
    need_render = false
    suppress__ = 0x00
    __profile = (CProfileSample)
    __profile = (CProfileSample)
    __profile = (CProfileSample)
    __profile = (CProfileSample)
    __profile = (CProfileSample)
    __profile = (CProfileSample)
    __profile = (CProfileSample)
    __profile = (CProfileSample)
    __profile = (CProfileSample)
    __profile = (CProfileSample)
    __profile = (CProfileSample)
    __profile = (CProfileSample)
    __profile = (CProfileSample)

main (main.cpp:382)
    argc = 1
    argv = 0x00384EA0 -> 0x00384EA8 -> "c:\Wildfiregames\0ad\binaries\system\pyrogenesis.exe"

__tmainCRTStartup (crtexe.c:586)
    nested = 1245020

SEH_wrapped_entry (win.cpp:338)
    ret = 1245076

RegisterWaitForInputIdle (:0)
#147 fixed Animation/propping bugs Jan Wassenberg
Description

peltast: when running, spear is on wrong prop point (holding it in the wrong hand?!)

Duplicate: fire up cantabrian generated and order the starting unit(s) to run.

#148 fixed interact bugs Jan Wassenberg
Description

bandbox selection is buggy. sometimes selection works, sometimes none are selected.

woman has a build menu, but can't build anything. should hide the build menu

on click on minimap: it apparently captures the mouse, thus one can move the mouse around and the view follows it. clicking again undoes this and unhooks the mouse. Desirable behavior would be: one click on the minimap simply moves the view there.

select the (cantabrian generated) 3 starting units, formation "wedge" => crash

#149 fixed Building bugs Jan Wassenberg
Description

when Lclick on finished farm, temple, mill, crashes. Lclick on dock,barracks,market works fine.

on maps that have no territories defined, one cannot build anywhere. Fix: retrofit territories into all maps, or disable the territory check when building on maps that have no Ts defined?

rally point not implemented --> It actually is implemented; you can select a building, click the pink flag button, and rightclick on the map to set a rally point.

#150 fixed Exhausted trees don't disappear Jan Wassenberg
Description

when finished gathering from a tree, the tree does not disappear. It is still rendered, but at least is no longer available for selection. Same goes for rocks.

#152 fixed Crash on exit when researching Jan Wassenberg Nicolai Hähnle
Description

This bug occured in SVN r4384

To reproduce:

  1. Launch CantabrianHighland-Mythos
  2. In the Barracks to the left: start researching something
  3. Hit Escape to exit the game
#153 fixed Floating actors Philip Taylor Philip Taylor
Description

From meeting - it should be possible to specify that certain actors should float on top of water instead of following the terrain.

  • Add flag to actor XML
  • Add checkbox to Actor Editor
  • Make game use that when sticking nonentities onto the ground
#154 fixed COLLADA Philip Taylor
Description

As here:

  • Create .dae -> .pmd, .pma converter
    • for static objects (e.g. buildings)
    • for animated bipeds
    • for arbitrary skeletons (skinned, or multiple meshes linked to bones)
  • Make game check for presence of updated .dae when reading .pmd/.pma files and convert it if necessary
  • Things that should probably be split into further tickets in the future:
    • Create .pmd, .pma -> .dae converter so people can modify our current files
    • Use the newly available mesh information and tools to create more optimal .pmd files
#155 fixed GCC PCH Simon Brenner Philip Taylor
Description

Premake isn't setting up PCH properly for GCC. (lib/config.h was defining HAVE_PCH, but the project isn't being compiled with PCH so that doesn't work.)

From the docs, it looks like we just need to make it compile precompiled.h into precompiled.gch before doing the rest of the source files (whatever.cpp into whatever.o). That'd probably require modifying Premake's source so it handles the pchsource/pchheader settings differently to MSVC - it should ignore the pchsource and just add the pchheader as the first compiled file.

#156 fixed Premake on Linux creates bogus directories Simon Brenner Philip Taylor
Description

After running update-workspaces.sh (in particularly the line that calls premake with --outpath), it creates a number of mode 000 directories inside the premake directory:

$ ls -al ../premake/     
total 857
drwxr-xr-x 11 philip users    424 Sep 30 18:55 .
drwxr-xr-x 11 philip users    296 Sep 30 13:28 ..
drwxr-xr-x  7 philip users    328 Sep 30 14:52 .svn
d---------  2 philip users     48 Sep 30 18:55 0ad
d---------  2 philip users     48 Sep 30 18:55 build
-rw-r--r--  1 philip users   6165 Sep 30 13:27 extern_libs.lua
-rwxr-xr-x  1 philip users    495 Sep 30 13:27 functions.lua
d---------  2 philip users     48 Sep 30 18:55 gcc
d---------  2 philip users     48 Sep 30 18:55 home
d---------  2 philip users     48 Sep 30 18:55 philip
-rwxr-xr-x  1 philip users 563342 Sep 30 13:39 premake
-rwxr-xr-x  1 philip users 278528 Sep 30 13:26 premake.exe
-rwxr-xr-x  1 philip users  19926 Sep 30 13:26 premake.lua
drwxr-xr-x  5 philip users    376 Sep 30 13:39 src
d---------  2 philip users     48 Sep 30 18:55 trunk
d---------  2 philip users     48 Sep 30 18:55 workspaces

(I'm not sure if this is just a Premake bug - if it is, we should see if it's been fixed in recent versions, and if not then fix it and submit a patch.)

#157 fixed Can't initialise VFS more than once Jan Wassenberg Philip Taylor
Description

test_archive_builder.h has setUp/tearDown to initialise/shutdown VFS and related things. But it doesn't shut down cleanly - if you add another test case in that test suite, it dies with various errors when running setUp for the second time. That also affects any other test suites which are wanting to initialise the VFS so it's available to the tested code.

#158 fixed CLogger unit test failure on Linux Philip Taylor Philip Taylor
Description

The tests fail, probably because of differences between vsnprintf2 (the implementation used on Windows, based on MSVC's _vsnprintf) and vsnprintf (as implemented in glibc) in handling strings that are larger than the buffer.

../../../source/ps/tests/../../../source/ps/tests/test_CLogger.h:46: Error: Expected (lines[1] == msg1), found ("******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************" != "*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************")
../../../source/ps/tests/../../../source/ps/tests/test_CLogger.h:47: Error: Expected (lines[2] == clipped), found ("******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************" != "****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************...")
../../../source/ps/tests/../../../source/ps/tests/test_CLogger.h:48: Error: Expected (lines[3] == clipped), found ("******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************" != "****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************...")
#159 fixed TestPathUtil tests fail on Linux Jan Wassenberg Philip Taylor
Description
In TestPathUtil::test_append:
../../../source/lib/tests/../../../source/lib/tests/test_path_util.h:12: Error: Expected (std ::string(dst) == std::string(correct_result)), found ("abc\\/def" != "abc\\def")
.
In TestPathUtil::test_name_only:
../../../source/lib/tests/../../../source/lib/tests/test_path_util.h:28: Error: Expected (std ::string(result) == std::string(correct_result)), found ("abc\\def\\ghi" != "ghi")
../../../source/lib/tests/../../../source/lib/tests/test_path_util.h:28: Error: Expected (std ::string(result) == std::string(correct_result)), found ("def\\ghi" != "ghi")
In TestPathUtil::test_last_component:
../../../source/lib/tests/../../../source/lib/tests/test_path_util.h:34: Error: Expected (std ::string(result) == std::string(correct_result)), found ("abc\\def\\ghi" != "ghi")
../../../source/lib/tests/../../../source/lib/tests/test_path_util.h:34: Error: Expected (std ::string(result) == std::string(correct_result)), found ("def\\ghi" != "ghi")
../../../source/lib/tests/../../../source/lib/tests/test_path_util.h:34: Error: Expected (std ::string(result) == std::string(correct_result)), found ("abc\\def\\ghi\\" != "ghi\\")
../../../source/lib/tests/../../../source/lib/tests/test_path_util.h:34: Error: Expected (std ::string(result) == std::string(correct_result)), found ("def\\ghi/" != "ghi/")
In TestPathUtil::test_strip_fn:
../../../source/lib/tests/../../../source/lib/tests/test_path_util.h:42: Error: Expected (std ::string(path) == std::string(correct_result)), found ("" != "abc\\def\\")
../../../source/lib/tests/../../../source/lib/tests/test_path_util.h:42: Error: Expected (std ::string(path) == std::string(correct_result)), found ("abc/" != "abc/def\\")
../../../source/lib/tests/../../../source/lib/tests/test_path_util.h:42: Error: Expected (std ::string(path) == std::string(correct_result)), found ("" != "abc\\def\\ghi\\")
.
In TestPathUtil::test_path_package:
../../../source/lib/tests/../../../source/lib/tests/test_path_util.h:57: Error: Expected (std ::string(pp.path) == std::string(correct_result)), found ("a\\b\\/c" != "a\\b\\c")
#160 fixed lockfree tests fail on Linux Jan Wassenberg Philip Taylor
Description
lockfree.cpp(179): Assertion failed: "tls_key != 0"
Assertion failed: "tls_key != 0"
Location: lockfree.cpp:179 (tls_alloc)
errno = 0 (?)
OS error = ?

Call stack:

(0x084e4999) allocators.cpp:621 bucket_create(Bucket*, unsigned int)
(0x084e4be0) allocators.cpp:166 validate_da
(0x084e5239) allocators.cpp:581 pool_free_all(Pool*)
(0x082d7f14) stl_iterator_base_funcs.h:118 std::iterator_traits<__gnu_cxx::__normal_iterator< unsigned short*, std::basic_string<unsigned short, std::char_traits<unsigned short>, std::all ocator<unsigned short> > > >::difference_type std::distance<__gnu_cxx::__normal_iterator<unsi gned short*, std::basic_string<unsigned short, std::char_traits<unsigned short>, std::allocat or<unsigned short> > > >(__gnu_cxx::__normal_iterator<unsigned short*, std::basic_string<unsi gned short, std::char_traits<unsigned short>, std::allocator<unsigned short> > >, __gnu_cxx:: __normal_iterator<unsigned short*, std::basic_string<unsigned short, std::char_traits<unsigne d short>, std::allocator<unsigned short> > >)
(0x082d81c4) stl_construct.h:121 void std::__destroy_aux<__gnu_cxx::__normal_iterator<JSFunct ionSpec*, std::vector<JSFunctionSpec, std::allocator<JSFunctionSpec> > > >(__gnu_cxx::__norma l_iterator<JSFunctionSpec*, std::vector<JSFunctionSpec, std::allocator<JSFunctionSpec> > >, _ _gnu_cxx::__normal_iterator<JSFunctionSpec*, std::vector<JSFunctionSpec, std::allocator<JSFun ctionSpec> > >, __false_type)
(0x082b3f78) stl_algobase.h:387 HEntity* std::copy<__gnu_cxx::__normal_iterator<HEntity const *, std::vector<HEntity, std::allocator<HEntity> > >, HEntity*>(__gnu_cxx::__normal_iterator<H Entity const*, std::vector<HEntity, std::allocator<HEntity> > >, __gnu_cxx::__normal_iterator <HEntity const*, std::vector<HEntity, std::allocator<HEntity> > >, HEntity*)
(0x082b826a) stl_tree.h:817 std::_Rb_tree<CStrW, std::pair<CStrW const, int>, std::_Select1st <std::pair<CStrW const, int> >, CStrW_hash_compare, std::allocator<std::pair<CStrW const, int > > >::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair<CStrW const, i nt> const&)
(0x082b8342) stl_tree.h:917 std::_Rb_tree<CStrW, std::pair<CStrW const, int>, std::_Select1st <std::pair<CStrW const, int> >, CStrW_hash_compare, std::allocator<std::pair<CStrW const, int > > >::insert_unique(std::pair<CStrW const, int> const&)
(0x082b8433) stl_tree.h:927 std::_Rb_tree<CStrW, std::pair<CStrW const, int>, std::_Select1st <std::pair<CStrW const, int> >, CStrW_hash_compare, std::allocator<std::pair<CStrW const, int > > >::insert_unique(std::pair<CStrW const, int> const&)
(0x082b84e9) stl_tree.h:932 std::_Rb_tree<CStrW, std::pair<CStrW const, int>, std::_Select1st <std::pair<CStrW const, int> >, CStrW_hash_compare, std::allocator<std::pair<CStrW const, int > > >::insert_unique(std::pair<CStrW const, int> const&)
(0x082b8511) stl_tree.h:942 std::_Rb_tree<CStrW, std::pair<CStrW const, int>, std::_Select1st <std::pair<CStrW const, int> >, CStrW_hash_compare, std::allocator<std::pair<CStrW const, int > > >::insert_unique(std::_Rb_tree_iterator<std::pair<CStrW const, int> >, std::pair<CStrW co nst, int> const&)
(0x082b62be) stl_pair.h:69 pair
(0xb760d878) /lib/libc.so.6:0 __libc_start_main
(0x082b36a1) stl_vector.h:776 HEntity* std::vector<HEntity, std::allocator<HEntity> >::_M_all ocate_and_copy<__gnu_cxx::__normal_iterator<HEntity const*, std::vector<HEntity, std::allocat or<HEntity> > > >(unsigned int, __gnu_cxx::__normal_iterator<HEntity const*, std::vector<HEnt ity, std::allocator<HEntity> > >, __gnu_cxx::__normal_iterator<HEntity const*, std::vector<HE ntity, std::allocator<HEntity> > >)
#163 fixed error when exiting with 'X' button arissanightblade
Description

http://www.wildfiregames.com/forum/index.php?showtopic=10656

#164 fixed Debug messages show incorrect "OS error" Jan Wassenberg Philip Taylor
Description

Every time the game brings up its Program Error window which looks somewhat like ...

Function call failed: return value was -100101 (Case 1)
Location: allocators.cpp:174 (validate_da)
errno = 0 (?)
OS error = The system cannot find the file specified.


Call stack:

validate_da (allocators.cpp:164)
    da = 0x00CEE6A0 -> 
        base = 0x00000000
        max_size_pa = 0x00000000
        cur_size = 0x00000000
        prot = 0
        pos = 0x00000000

    pos = 0xCCCCCCCC
    prot = 0xCCCCCCCC
    base = 0xCCCCCCCC
    cur_size = 0xCCCCCCCC
    max_size_pa = 0xCCCCCCCC

... I can't help but read the one piece of understandable meaningful English on it, which is nearly always "OS error = The system cannot find the file specified.", which is nearly always completely irrelevant (because it was probably set seconds ago by some unrelated operation). Then I unfailingly get confused for a while before remembering that that message is completey irrelevant, and have to start again at trying to work out what the error is complaining about.

Since it's worse than useless in most cases (because it distracts me from what the real problem is), it would be nice to remove it. If there are cases where it's actually useful, it could at least report the error number instead of the string so it doesn't stand out (and change the "OS error" text because that's distractingly English too), and we can always look up the meaning of that number in the rare cases when it's relevant to a bug report.

So, it could look more like:

Function call failed: return value was -100101 (Case 1)

Location: allocators.cpp:174 (validate_da)

(errno=0, oserr=2)

Call stack:

validate_da (allocators.cpp:164)
    da = 0x00CEE6A0 -> 
        base = 0x00000000
        max_size_pa = 0x00000000
        cur_size = 0x00000000
        prot = 0
        pos = 0x00000000

    pos = 0xCCCCCCCC
    prot = 0xCCCCCCCC
    base = 0xCCCCCCCC
    cur_size = 0xCCCCCCCC
    max_size_pa = 0xCCCCCCCC

and then it's still not very helpful but at least it's not misleading, and I can see I should just look in the code or the debugger to work out what's wrong.

#165 fixed VFS_MOUNT_ARCHIVABLE is unused Jan Wassenberg Philip Taylor
Description

VFS_MOUNT_ARCHIVABLE is never used, except for being passed to (then ignored by) vfs_mount.

But mount_is_archivable tests for VFS_MOUNT_ARCHIVES - is that where ARCHIVABLE should be used instead? (The comment in source:ps/trunk/source/lib/res/file/vfs_optimizer.cpp@4703#L161 talks about VFS_MOUNT_ARCHIVE which doesn't even exist.)

#166 fixed Move TDD Wiki onto Trac Philip Taylor Philip Taylor
Description

It would be nice if the TDD Wiki was on Trac instead of MediaWiki, to simplify administration (user accounts, backups, etc). It should be possible to export the pages from MediaWiki, do some conversion, and import them into Trac without too much manual effort.

#167 fixed Assertion failure when reading trace file Jan Wassenberg Philip Taylor
Description

The assertion at source:ps/trunk/source/lib/res/file/trace.cpp@4706#L202 fails with start_idx = 25243, t->total_ents = 25225.

trace.txt is 25326 lines, with the last run's delimeter on line 25243, with a total of 101 delimeters. 25326 - 101 = t->total_ents, and 25243 = start_idx. So it looks like the problem is that start_idx counts the divider lines, while t->total_ents doesn't, and so it fails if the number of divider lines is greater than the size of the last run in the file.

#169 fixed Terrain quad rendering uses unspecified triangulation Philip Taylor
Description

The terrain renderer draws non-planar GL_QUADS. The OpenGL spec just says

For a polygon with more than three edges, we require only that a convex combination of the values of the datum at the polygon's vertices can be used to obtain the value assigned to each fragment produced by the rasterization algorithm.

which in practice seems to result in the quad being triangulated along an arbitrary diagonal. Since there's no way to know exactly what's going to happen, and particularly since what happens isn't very good, we need to split the quads into triangles ourselves.

It is presumably sensible to split each quad along the diagonal that minimises the angle between the two triangles.

#171 fixed GL extension loading slightly incorrect on Linux ben Philip Taylor
Description

ogl.cpp does:

	p##nameARB = NULL;
	if(oglHaveVersion(version))
		*(void**)&p##nameARB = SDL_GL_GetProcAddress(#nameCore);
	if(!p##nameARB) /* use the ARB name if the driver lied about what version it supports */
		*(void**)&p##nameARB = SDL_GL_GetProcAddress(#nameARB);

But glXGetProcAddress never returns NULL. In the case where "the driver lied about what version it supports", it will still return a non-NULL function pointer, which will crash when it is called, even if there would have been a valid function pointer when we used the ARB name.

(NVIDIA's OpenGL implementation is different, and does (when I test it) return NULL for functions that it doesn't have. But the xorg-x11 implementation only returns NULL for non-existent glX* functions or for names not starting with "gl", and it returns non-NULL for any arbitrary gl[^X]* name.)

Hopefully it doesn't actually matter for us, since ogl.cpp seems to be the only place where we're testing the NULLness of the function pointers, and since ogl.cpp should still work correctly as long as the driver reports its GL version correctly (which it should). So I don't think there's anything we should actually do, except be aware of the issue.

#174 fixed premake.lua incorrectly defines __STDC_VERSION__ on GCC Philip Taylor
Description

premake.lua says:

package.defines = {
    "__STDC_VERSION__=199901L",
    "CONFIG_USE_MMGR",
}

sysdep.h says:

for some reason, g++-3.3 claims to support C99 (according to __STDC_VERSION__) but doesn't have the restrict keyword.

So it's our fault that we get a little confused by GCC pretending to support C99 when it really doesn't.

Claiming to support C99 is nonsensical in any case, because we're writing C++ and not C. It would probably be better to define a series of HAVE_RELEVANT_C99LIKE_FEATURE, for all the relevant C99-like features which GCC supports in its normal nonstandard C++ mode.

#175 fixed Load SoundGroup table from entity XMLs Matei Matei
Description

It should be possible to specify a sound for each animation, using code such as:

<Entity>
        ...

	<SoundGroups>
		<Walk>infantry_walk.xml</Walk>
		<Run>infantry_run.xml</Run>
		<Death>screams.xml</Death>
		<Gather_wood>axe_chopping.xml</Gather_wood>
		<Gather_stone>pickaxe.xml</Gather_stone>
	</SoundGroups>
</Entity>

These should be in a hashmap in CEntityTemplate.

#176 fixed Crash in aura code Matei Philip Taylor
Description

When running the cinematics.pmp simulation in Atlas, it crashes after a while in the aura-handling code.

Some script calls CEntity::Kill, which calls Remove on everything in m_aurasInfluencingMe. That fails because the CAura* in there is not valid - it's a readable pointer but the contents are rubbish (seemingly being used by some other object, since it's not the default debug memory-fill pattern).

#177 fixed Corpses disappear after the death animation is played Matei
Description

When units with a death animation die, a corpse showing the last frame of this animation should persist. However, they currently just disappear. Could be related to changes in [4810].

#178 fixed Decouple entity simulation and actor animation Philip Taylor
Description

Let the entity code simply tell the actor to switch to a certain animation state, and not worry about any timing details itself. The actor should handle looping, randomisation, and potentially things like blending. The animation speed should be determined just by the actor XML.

Change the entity XML files to store only a Rate (units per second) for actions, rather than Speed+Rate. Update the simulation world at a fixed frequency, independent of the animation speed.

Experiment with the same for attack animations to see if it still looks alright, but at least keep projectile launches synchronised.

#180 fixed Default DepthTextureBits is very slow on GF4 Philip Taylor
Description

By default, the shadow DepthTextureBits is 16. With a GF4, that is very slow compared to other depths - e.g. on a blank grass map, with AA disabled, it is 72fps with DepthTextureBits=32 and 23fps with DepthTextureBits=16. With 4xAA enabled, it is 36fps at 32, but only 2fps at 16.

Is a similar effect visible on other graphics cards? (Use renderer.depthTextureBits in the console to change it). If so, presumably the default should be changed; otherwise, the default should depend on the hardware.

#186 fixed Automatic archiving is annoying Jan Wassenberg Philip Taylor
Description

The automatic archiver runs pretty much every time I start the game (probably because I don't start the game very often and so several data files change in the meantime). It takes ages, and tends to leave multiple giant zip files hanging around, and wastes much more time than simply loading slower unarchived files, and it leaves the game window (and sometimes the whole computer) unresponsive while it's working.

I'd be much happier if it was manually activated instead - people could run it once if they care about the loading speed, and the time lost to loading loose files after the archive becomes out of date would be more than made up for by the time gained by never automatically rebuilding the archive. We can run the archiver once manually when distributing the game, and no normal user (including modders) will change enough files for it to ever be worth automatically rebuilding the archive, particularly since it happens precisely when they're trying to play the game and it stops them from doing so. (It wouldn't be so bad if it happened at installation-time for large patches.)

(Or maybe I'm misinterpreting the problem and it's just not using the mini archives like it should do (since they never look mini - they're always about 60MB), or something.)

...

Oh, it's finished rebuilding now, I'll get back to work ;-)

#189 fixed Entity deletion doesn't work properly Philip Taylor Philip Taylor
Description

After deleting entities, they tend to still exist in an invisible ghostly form and attack people when you play the simulation from within the editor.

They should be deleted properly from the entity manager, instead of the current pseudo-deletion. To allow undo, serialise the entity into some form (same as when you play/reset the simulation) on deletion and then reconstruct it on undo.

#190 fixed COLLADA: split skeleton definitions into moddable files leper Philip Taylor
Description

The skeleton definitions should be located in mods/*/art/skeletons/*.xml, and all the files matching that pattern should be loaded. That would allow modders to add their own skeleton definitions, just by creating a new file (rather than overwriting the existing one). It would also reduce the number of animations that get cache-invalidated when a single skeleton definition is tweaked.

#194 fixed Update TracWebAdmin Philip Taylor
Description

The currently-installed version of TracWebAdmin doesn't work with Trac 0.10, so it should be updated. (The newest version only seems to be available from SVN, not as an Egg file, which makes it slightly less trivial.)

#195 fixed Support more mouse buttons JoshuaJB Philip Taylor
Description

Currently only five buttons (left, right, middle, wheel-up, wheel-down) are supported. It might be nice if users could map functions onto other buttons (e.g. my mouse has seven additional buttons).

#199 fixed Hook up the SoundGroup system Jan Wassenberg
Description

The SoundGroup system for choosing random sounds is not yet in use. The current placeholder code enumerates all audio files in a certain subpath, which works but is slow and inflexible (see http://www.wildfiregames.com/forum/index.php?showtopic=10924&hl= for an overview and list of links that detail the sound system design).

Here's a list of what I think is necessary to get the SoundGroup show on the road:

  • during init, create all the sound groups we'll be needing (e.g. attack grunts, death, ...) and associate them with entity classes
  • .. by storing a string or index that identifies the sound group in entity.traits.audio.path instead of path (as now)
  • create a script interface for the SoundGroup that allows calling it from our Javascript event handlers (this is where the performAttack logic runs). This kind of thing is pretty much boilerplate, we can refer to stuff like JSI_Sound.cpp to get an idea of what to do.
  • replace newRandomSound with the corresponding new function that basically just calls CSoundGroup::PlayNext
  • add a call to CSoundGroupMgr::Update in the main game loop
#200 fixed UI: disable not-yet-implemented features Jan Wassenberg
Description
  • production queue: at least feedback that something is being built.
    Matei: maybe a list box or something showing just a list of items in the queue, with add/delete buttons.
  • Disable formations and all other non-implemented UI stuff
    (remove entirely from scripts by commenting them out)
  • disable game setup stuff that's not implemented
#203 fixed Combat Crash Michael D. Hafer
Description

Crash occurs in-game as well as in Atlas simulation when initiating combat. Problem seems to me to reside with Super Infantry, as other types of units do not cause such a crash. I assume this could be entity related, but scanning the template_unit_super and template_unit_super_infantry entities does not immediately present any issues with coding. grrr

#205 fixed PMD/PSA skeleton mismatches should be reported nicely Philip Taylor
Description

http://www.wildfiregames.com/forum/index.php?s=&showtopic=11872&view=findpost&p=192546

Currently, skeleton mismatches are only detected and reported if the number of bones differs. The PMD and PSA files ought to store their skeleton name, so mismatches can be detected properly and reported nicely.

#206 fixed Remove NO_GUI Philip Taylor
Description

The game probably doesn't work with the NO_GUI compiler flag, and it doesn't seem a useful feature at all, and it adds complexity to the code, so the flag should just be removed entirely.

#207 fixed Linux build uses FColladaSD in Release mode Philip Taylor
Description

The Collada project gets linked with libFColladaSD.a (the debug version) in Release configurations as well as Debug. It should use libFColladaSR.a instead, since that's faster.

This probably just needs some small (but not entirely trivial) changes in extern_libs.lua

#209 fixed Show idle peasants Anton Galitch
Description

By clicking on this button, all idle resource gathering units (women ?) should be selected.

#210 fixed Skybox is uninitialized Jan Wassenberg
Description

In an MP game (Oasis), scrolling off the map shows that the skybox is uninitialized or filled with garbage (looks like a terrain texture, but Wijit was seeing something else).

#211 fixed Oasis map requires non-public files Jan Wassenberg
Description

When loading Oasis in MP, having started the game with -quickstart and -onlyPublicFiles, a VFS file load error is produced.

It turns out that "art/textures/skies/mountainous/front.dds" is the only file that is not found, after that the map loads successfully.

#212 fixed Player control of enemy units Jan Wassenberg
Description

In MP games (specifically Oasis with 2 players), blue (the host) can move red's (the second player's) units .

#214 fixed Exception reading 0x45C Anton Galitch Jan Wassenberg
Description

Encountered by Erik whilst attempting MP on Latium map with Anton: in CEntity::UpdateXZOrientation(), apparently m_base is invalid, thus causing an access violation. Since inheritance is data-driven, we should add checks (especially in this function, likely in others as well) whether m_base is valid at all. If not, try to use reasonable defaults.

#215 fixed GUI: Display of entity properties hides other information Anton Galitch Jan Wassenberg
Description

In an MP game of Oasis, the blue (host's) cavalry can be clicked upon to show unit details in the upper-left corner of the screen. Here, the range information is displayed with very many digits, thus overwriting the next field. It would be good to display all floating-point information in the GUI with one digit of precision, which can be expressed in printf via "%.1f".

#216 fixed Chat doesn't work in multiplayer brian Jan Wassenberg
Description

Chat is a fairly important part of the game being playable. As soon as a client connects, it would be good to be able to chat (the previous mechanism having been entering any line of text not starting with : or ? into the console).

We used to have this functionality, but it was a part of the previous network code and apparently still needs work.

#217 fixed JS warnings that show up in the console Anton Galitch Jan Wassenberg
Description

After loading a MP game (Oasis), the following warnings/errors show up in the console:

gui/test/functions_utility_list.js:142: TypeError: getGuiObjectByName(objectName) has no properties

setCurrItemValue(): pgSessionSetupPO (<- could also be a 0) not found

#218 fixed Assertion failed when hosting MP after incorrect join Anton Galitch
Description

Actions to reproduce: Click on multiplayer. Join. Any ip (I tried with 127.0.0.1) where there is no server. (A message will popup saying that could connect.) Go back Host game. [Error.]

Assertion failed: "!ms_singleton" Location: Singleton.h:28 (Singleton<class CNetHost>::Singleton)

Call stack:

Singleton<CNetHost>::Singleton<CNetHost> (singleton.h:28)

this = (unavailable)

CNetHost::CNetHost (netsession.cpp:23)

this = (unavailable)

CNetServer::CNetServer (netserver.cpp:28)

this = (unavailable) pGame = 0x0EA9C030 ->

(boost::noncopyable_::noncopyable) m_World = 0x0EB1AED8 ->

(boost::noncopyable_::noncopyable) m_pGame = 0x0EA9C030 (see above) m_Terrain = 0x0EB43830 ->

m_MapSize = 0 (0x00000000) m_MapSizePatches = 0 (0x00000000) m_Patches = 0x00000000 m_Heightmap = 0x00000000 m_BaseColour =

R = [8] { 255 (0xFF), 255 (0xFF), 255 (0xFF), 255 (0xFF), 0 (0x00), 0 (0x00), 0 (0x00), 0 (0x00) } G = [8] { 255 (0xFF), 255 (0xFF), 255 (0xFF), 0 (0x00), 0 (0x00), 0 (0x00), 0 (0x00), 37 (0x25) } B = [8] { 255 (0xFF), 255 (0xFF), 0 (0x00), 0 (0x00), 0 (0x00), 0 (0x00), 37 (0x25), 193 (0xC1) } A = [8] { 255 (0xFF), 0 (0x00), 0 (0x00), 0 (0x00), 0 (0x00), 37 (0x25), 193 (0xC1), 91 (0x5B) }

m_UnitManager = 0x0EB43810 ->

m_Units = (error -100500 while analyzing vector<CUnit * >) m_NextID = 0 (0x00000000) m_ObjectManager = 0x0EB702A0 ->

(boost::noncopyable_::noncopyable) m_MeshManager = 0x0EB70260 ->

(boost::noncopyable_::noncopyable) m_MeshMap =

(error -100406 while analyzing _Container_base) comp = (CStr8_hash_compare)

_List = (error -100500 while analyzing list<pair<CStr8 const ,boost::weak_ptr<CModelDef> > >) _Vec = (error -100406 while analyzing vector<list<pair<CStr8 const ,boost::weak_ptr<CModelDef> > >::_Iterator<0> >) _Mask = 15 (0x0000000F) _Maxidx = 16 (0x00000010) _Max_bucket_size = 1.000000 (0x3F800000)

m_ColladaManager = 0x0EB7025C ->

m = 0x0EB43850 ->

dll =

m_Name = 0x0150E31C -> "Collada" m_Handle = 0x00000000

set_logger = 0xFE4EF270 -> set_skeleton_definitions = 0xFD14F377 -> convert_dae_to_pmd = 0xFC3CF462 -> convert_dae_to_psa = 0xFBA1F4A5 ->

m_SkeletonAnimManager = 0x0EB70290 ->

(boost::noncopyable_::noncopyable) m_Animations = (error -100500 while analyzing map<CStr8,CSkeletonAnimDef * >) m_ColladaManager = 0x0EB7025C (see above)

m_Objects = (error -100500 while analyzing map<CObjectManager::ObjectKey,CObjectEntry * >) (too much output; skipping to next top-level symbol)

m_EntityManager = 0x0EB4E608 ->

m_entities = [16384]

{ m_entity = 0x00000000, m_refcount = 0 (0x0000) } { m_entity = 0x00000000, m_refcount = 0 (0x0000) } { m_entity = 0x00000000, m_refcount = 0 (0x0000) } { m_entity = 0x00000000, m_refcount = 0 (0x0000) } { m_entity = 0x00000000, m_refcount = 0 (0x0000) } { m_entity = 0x00000000, m_refcount = 0 (0x0000) } { m_entity = 0x00000000, m_refcount = 0 (0x0000) } { m_entity = 0x00000000, m_refcount = 0 (0x0000) } ...

m_refd = (error -100406 while analyzing bitset<16384>) m_reaper = (error -100500 while analyzing vector<CEntity * >) m_collisionPatches = 0x00000000 m_nextalloc = 0 (0x00000000) m_death = false m_collisionPatchesPerSide = 13365591 (0x00CBF157) m_entityClassData = (error -100500 while analyzing map<size_t,map<CStrW,int > >) m_screenshotMode = false

m_ProjectileManager = 0x0EAC6428 ->

m_LastTurnLength = 0 (0x00000000) m_Projectiles = (error -100500 while analyzing list<CProjectile * >)

m_LOSManager = 0x0EB437F0 ->

m_VisibilityMatrix = 0x00000000 m_TilesPerSide = 10 (0x0000000A) m_TilesPerSide_1 = 0 (0x00000000) m_LOSSetting = LOS_SETTING_NORMAL m_FogOfWar = true

m_TerritoryManager = 0x0EB1B6A8 ->

m_Territories = (error -100500 while analyzing vector<CTerritory * >) m_TerritoryMatrix = 0x00000000 m_TilesPerSide = 1953066081 (0x74696C61) m_DelayedRecalculate = false

m_Simulation = 0x0EB6EE40 ->

m_pGame = 0x0EA9C030 (see above) m_pWorld = 0x0EB1AED8 (see above) m_pTurnManager = 0x0EB706A4 ->

m_Clients = (error -100406 while analyzing vector<CTurnManager::SClient >) m_Batches = [3]

m_Messages = (error -100406 while analyzing vector<CTurnManager::SMessageSyncEntry >) m_TurnLength = 300 (0x0000012C)

m_Messages = (error -100406 while analyzing vector<CTurnManager::SMessageSyncEntry >) m_TurnLength = 300 (0x0000012C)

m_Messages = (error -100406 while analyzing vector<CTurnManager::SMessageSyncEntry >) m_TurnLength = 300 (0x0000012C)

m_pRecord = 0x0DF402C9 ->

m_IsRecording = false m_pTurnManager = 0x00000000

m_Time = 0 (0x0000000000000000) m_DeltaTime = 0 (0x0000000000000000) m_Random =

x = [1248]

5489 (0x00001571) 1301868182 (0x4D98EE96) 2938499221 (0xAF25F095) 2950281878 (0xAFD9BA96) 1875628136 (0x6FCBD068) 751856242 (0x2CD06A72) 944701696 (0x384F0100) 2243192071 (0x85B46507) 694061057 (0x295E8801) 219885934 (0x0D1B316E) 2066767472 (0x7B305E70) 3182869408 (0xBDB6BBA0) ...

i = 624 (0x00000270)

m_GameView = 0x0EA0C8C0 ->

(Scene) (boost::noncopyable_::noncopyable) m = 0x0EB701F0 ->

(IJSObject) m_JS = 0x00000000 m_NonsharedProperties =

(error -100406 while analyzing _Container_base) comp = (CStrW_hash_compare)

_List = (error -100500 while analyzing list<pair<CStrW const ,IJSProperty *> >) _Vec = (error -100406 while analyzing vector<list<pair<CStrW const ,IJSProperty *> >::_Iterator<0> >) _Mask = 15 (0x0000000F) _Maxidx = 16 (0x00000010) _Max_bucket_size = 1.000000 (0x3F800000)

m_ScriptProperties =

(error -100406 while analyzing _Container_base) comp = (CStrW_hash_compare)

_List = (error -100500 while analyzing list<pair<CStrW const ,IJSProperty *> >) _Vec = (error -100406 while analyzing vector<list<pair<CStrW const ,IJSProperty *> >::_Iterator<0> >) _Mask = 15 (0x0000000F) _Maxidx = 16 (0x00000010) _Max_bucket_size = 1.000000 (0x3F800000)

m_EngineOwned = true

(boost::noncopyable_::noncopyable) Game = 0x0EA9C030 (see above) ColladaManager =

m = 0x0EB43850 (see above)

MeshManager =

(boost::noncopyable_::noncopyable) m_MeshMap =

(error -100406 while analyzing _Container_base) comp = (CStr8_hash_compare)

_List = (error -100500 while analyzing list<pair<CStr8 const ,boost::weak_ptr<CModelDef> > >) _Vec = (error -100406 while analyzing vector<list<pair<CStr8 const ,boost::weak_ptr<CModelDef> > >::_Iterator<0> >) _Mask = 15 (0x0000000F) _Maxidx = 16 (0x00000010) _Max_bucket_size = 1.000000 (0x3F800000)

m_ColladaManager = 0x0EB7025C (see above)

SkeletonAnimManager =

(boost::noncopyable_::noncopyable) m_Animations = (error -100500 while analyzing map<CStr8,CSkeletonAnimDef * >) m_ColladaManager = 0x0EB7025C (see above)

ObjectManager =

(boost::noncopyable_::noncopyable) m_MeshManager = 0x0EB70260 (see above) m_SkeletonAnimManager = 0x0EB70290 (see above) m_Objects = (error -100500 while analyzing map<CObjectManager::ObjectKey,CObjectEntry * >) m_ObjectBases = (error -100500 while analyzing map<CStr8,CObjectBase * >)

ViewCamera =

m_Orientation =

_11 = 1.000000 (0x3F800000) _21 = 0.000000 (0x00000000) _31 = 0.000000 (0x00000000) _41 = 0.000000 (0x00000000) _12 = 0.000000 (0x00000000) _22 = 0.866025 (0x3F5DB3D7) _32 = 0.500000 (0x3F000000) _42 = 0.000000 (0x00000000) _13 = 0.000000 (0x00000000) _23 = -0.500000 (0xBF000000) _33 = 0.866025 (0x3F5DB3D7) _43 = 0.000000 (0x00000000) _14 = 100.000000 (0x42C80000) _24 = 150.000000 (0x43160000) _34 = -100.000000 (0xC2C80000) _44 = 1.000000 (0x3F800000) _data = [16]

1.000000 (0x3F800000) 0.000000 (0x00000000) 0.000000 (0x00000000) 0.000000 (0x00000000) 0.000000 (0x00000000) 0.866025 (0x3F5DB3D7) 0.500000 (0x3F000000) 0.000000 (0x00000000) 0.000000 (0x00000000) -0.500000 (0xBF000000) 0.866025 (0x3F5DB3D7) 0.000000 (0x00000000) ...

_data2d = [4]

[4] { 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) } [4] { 0.000000 (0x00000000), 0.866025 (0x3F5DB3D7), 0.500000 (0x3F000000), 0.000000 (0x00000000) } [4] { 0.000000 (0x00000000), -0.500000 (0xBF000000), 0.866025 (0x3F5DB3D7), 0.000000 (0x00000000) } [4] { 100.000000 (0x42C80000), 150.000000 (0x43160000), -100.000000 (0xC2C80000), 1.000000 (0x3F800000) }

m_ProjMat =

_11 = 4.219332 (0x408704C4) _21 = 0.000000 (0x00000000) _31 = 0.000000 (0x00000000) _41 = 0.000000 (0x00000000) _12 = 0.000000 (0x00000000) _22 = 5.671282 (0x40B57B24) _32 = 0.000000 (0x00000000) _42 = 0.000000 (0x00000000) _13 = 0.000000 (0x00000000) _23 = 0.000000 (0x00000000) _33 = 1.001955 (0x3F804010) _43 = 1.000000 (0x3F800000) _14 = 0.000000 (0x00000000) _24 = 0.000000 (0x00000000) _34 = -8.007820 (0xC1002008) _44 = 0.000000 (0x00000000) _data = [16]

4.219332 (0x408704C4) 0.000000 (0x00000000) 0.000000 (0x00000000) 0.000000 (0x00000000) 0.000000 (0x00000000) 5.671282 (0x40B57B24) 0.000000 (0x00000000) 0.000000 (0x00000000) 0.000000 (0x00000000) 0.000000 (0x00000000) 1.001955 (0x3F804010) 1.000000 (0x3F800000) ...

_data2d = [4]

[4] { 4.219332 (0x408704C4), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) } [4] { 0.000000 (0x00000000), 5.671282 (0x40B57B24), 0.000000 (0x00000000), 0.000000 (0x00000000) } [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 1.001955 (0x3F804010), 1.000000 (0x3F800000) } [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), -8.007820 (0xC1002008), 0.000000 (0x00000000) }

m_NearPlane = 4.000000 (0x40800000) m_FarPlane = 4096.000000 (0x45800000) m_FOV = 0.349066 (0x3EB2B8C2) m_ViewPort =

m_X = 0 (0x00000000) m_Y = 0 (0x00000000) m_Width = 1024 (0x00000400) m_Height = 768 (0x00000300)

m_ViewFrustum =

m_aPlanes = [10]

m_Norm =

X = 0.000000 (0x00000000) Y = 0.000000 (0x00000000) Z = 0.000000 (0x00000000)

m_Dist = 0.000000 (0x00000000)

m_Norm =

X = 0.000000 (0x00000000) Y = 0.000000 (0x00000000) Z = 0.000000 (0x00000000)

m_Dist = 0.000000 (0x00000000)

m_Norm =

X = 0.000000 (0x00000000) Y = 0.000000 (0x00000000) Z = 0.000000 (0x00000000)

m_Dist = 0.000000 (0x00000000)

m_Norm =

X = 0.000000 (0x00000000) Y = 0.000000 (0x00000000) Z = 0.000000 (0x00000000)

m_Dist = 0.000000 (0x00000000)

m_Norm =

X = 0.000000 (0x00000000) Y = 0.000000 (0x00000000) Z = 0.000000 (0x00000000)

m_Dist = 0.000000 (0x00000000)

m_Norm =

X = 0.000000 (0x00000000) Y = 0.000000 (0x00000000) Z = 0.000000 (0x00000000)

m_Dist = 0.000000 (0x00000000)

m_Norm =

X = 0.000000 (0x00000000) Y = 0.000000 (0x00000000) Z = 0.000000 (0x00000000)

m_Dist = 0.000000 (0x00000000)

m_Norm =

X = 0.000000 (0x00000000) Y = 0.000000 (0x00000000) Z = 0.000000 (0x00000000)

m_Dist = 0.000000 (0x00000000)

...

m_NumPlanes = 0 (0x00000000)

CullCamera =

m_Orientation =

_11 = 1.000000 (0x3F800000) _21 = 0.000000 (0x00000000) _31 = 0.000000 (0x00000000) _41 = 0.000000 (0x00000000) _12 = 0.000000 (0x00000000) _22 = 0.866025 (0x3F5DB3D7) _32 = 0.500000 (0x3F000000) _42 = 0.000000 (0x00000000) _13 = 0.000000 (0x00000000) _23 = -0.500000 (0xBF000000) _33 = 0.866025 (0x3F5DB3D7) _43 = 0.000000 (0x00000000) _14 = 100.000000 (0x42C80000) _24 = 150.000000 (0x43160000) _34 = -100.000000 (0xC2C80000) _44 = 1.000000 (0x3F800000) _data = [16]

1.000000 (0x3F800000) 0.000000 (0x00000000) 0.000000 (0x00000000) 0.000000 (0x00000000) 0.000000 (0x00000000) 0.866025 (0x3F5DB3D7) 0.500000 (0x3F000000) 0.000000 (0x00000000) 0.000000 (0x00000000) -0.500000 (0xBF000000) 0.866025 (0x3F5DB3D7) 0.000000 (0x00000000) ...

_data2d = [4]

[4] { 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) } [4] { 0.000000 (0x00000000), 0.866025 (0x3F5DB3D7), 0.500000 (0x3F000000), 0.000000 (0x00000000) } [4] { 0.000000 (0x00000000), -0.500000 (0xBF000000), 0.866025 (0x3F5DB3D7), 0.000000 (0x00000000) } [4] { 100.000000 (0x42C80000), 150.000000 (0x43160000), -100.000000 (0xC2C80000), 1.000000 (0x3F800000) }

m_ProjMat =

_11 = 4.219332 (0x408704C4) _21 = 0.000000 (0x00000000) _31 = 0.000000 (0x00000000) _41 = 0.000000 (0x00000000) _12 = 0.000000 (0x00000000) _22 = 5.671282 (0x40B57B24) _32 = 0.000000 (0x00000000) _42 = 0.000000 (0x00000000) _13 = 0.000000 (0x00000000) _23 = 0.000000 (0x00000000) _33 = 1.001955 (0x3F804010) _43 = 1.000000 (0x3F800000) _14 = 0.000000 (0x00000000) _24 = 0.000000 (0x00000000) _34 = -8.007820 (0xC1002008) _44 = 0.000000 (0x00000000) _data = [16]

4.219332 (0x408704C4) 0.000000 (0x00000000) 0.000000 (0x00000000) 0.000000 (0x00000000) 0.000000 (0x00000000) 5.671282 (0x40B57B24) 0.000000 (0x00000000) 0.000000 (0x00000000) 0.000000 (0x00000000) 0.000000 (0x00000000) 1.001955 (0x3F804010) 1.000000 (0x3F800000) ...

_data2d = [4]

[4] { 4.219332 (0x408704C4), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) } [4] { 0.000000 (0x00000000), 5.671282 (0x40B57B24), 0.000000 (0x00000000), 0.000000 (0x00000000) } [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 1.001955 (0x3F804010), 1.000000 (0x3F800000) } [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), -8.007820 (0xC1002008), 0.000000 (0x00000000) }

m_NearPlane = 4.000000 (0x40800000) m_FarPlane = 4096.000000 (0x45800000) m_FOV = 0.349066 (0x3EB2B8C2) m_ViewPort =

m_X = 0 (0x00000000) m_Y = 0 (0x00000000) m_Width = 1024 (0x00000400) m_Height = 768 (0x00000300)

m_ViewFrustum =

m_aPlanes = [10]

m_Norm =

X = 0.000000 (0x00000000) Y = 0.000000 (0x00000000) Z = 0.000000 (0x00000000)

m_Dist = 0.000000 (0x00000000)

m_Norm =

X = 0.000000 (0x00000000) Y = 0.000000 (0x00000000) Z = 0.000000 (0x00000000)

m_Dist = 0.000000 (0x00000000)

m_Norm =

X = 0.000000 (0x00000000) Y = 0.000000 (0x00000000) Z = 0.000000 (0x00000000)

m_Dist = 0.000000 (0x00000000)

m_Norm =

X = 0.000000 (0x00000000) Y = 0.000000 (0x00000000) Z = 0.000000 (0x00000000)

m_Dist = 0.000000 (0x00000000)

m_Norm =

X = 0.000000 (0x00000000) Y = 0.000000 (0x00000000) Z = 0.000000 (0x00000000)

m_Dist = 0.000000 (0x00000000)

m_Norm =

X = 0.000000 (0x00000000) Y = 0.000000 (0x00000000) Z = 0.000000 (0x00000000)

m_Dist = 0.000000 (0x00000000)

m_Norm =

X = 0.000000 (0x00000000) Y = 0.000000 (0x00000000) Z = 0.000000 (0x00000000)

m_Dist = 0.000000 (0x00000000)

m_Norm =

X = 0.000000 (0x00000000) Y = 0.000000 (0x00000000) Z = 0.000000 (0x00000000)

m_Dist = 0.000000 (0x00000000)

...

m_NumPlanes = 0 (0x00000000)

LockCullCamera = false Culling = true CachedLightEnv =

m_Elevation = 0.785398 (0x3F490FDB) m_Rotation = 5.497787 (0x40AFEDDF) m_TerrainShadowTransparency = 0.000000 (0x00000000) m_SunDir =

X = -0.270598 (0xBE8A8BD6) Y = -0.923880 (0xBF6C835F) Z = 0.270598 (0x3E8A8BD3)

m_SunColor =

X = 1.000000 (0x3F800000) Y = 1.000000 (0x3F800000) Z = 1.000000 (0x3F800000)

m_TerrainAmbientColor =

X = 0.643137 (0x3F24A4A5) Y = 0.643137 (0x3F24A4A5) Z = 0.643137 (0x3F24A4A5)

m_UnitsAmbientColor =

X = 0.643137 (0x3F24A4A5) Y = 0.643137 (0x3F24A4A5) Z = 0.643137 (0x3F24A4A5)

TrackManager =

m_Active = true m_DrawCurrentSpline = false m_DrawLines = (bool)0x8B m_ValidCurrent = false m_CurrentPath = (error -100406 while analyzing _Tree<<CStrW,CCinemaPath>::iterator) m_Paths = (error -100500 while analyzing map<CStrW,CCinemaPath >) m_PathQueue = (error -100500 while analyzing list<CCinemaPath >)

ViewScrollSpeed = 60.000000 (0x42700000) ViewRotateSensitivity = 0.002000 (0x3B03126F) ViewRotateSensitivityKeyboard = 1.000000 (0x3F800000) ViewRotateAboutTargetSensitivity = 0.010000 (0x3C23D70A) ViewRotateAboutTargetSensitivityKeyboard = 2.000000 (0x40000000) ViewDragSensitivity = 0.500000 (0x3F000000) ViewZoomSensitivityWheel = 16.000000 (0x41800000) ViewZoomSensitivity = 256.000000 (0x43800000) ViewZoomSmoothness = 0.020000 (0x3CA3D70A) ViewSnapSmoothness = 0.020000 (0x3CA3D70A) CameraDelta =

X = 0.000000 (0x00000000) Y = 0.000000 (0x00000000) Z = 0.000000 (0x00000000)

CameraPivot =

X = 0.000000 (0x00000000) Y = 0.000000 (0x00000000) Z = 0.000000 (0x00000000)

UnitView = 0x00000000 UnitViewProp = 0xF448015D ->

m_Bounds =

m_Data = [2]

X = (unavailable - internal error)

Y = (unavailable - internal error)

Z = (unavailable - internal error)

X = (unavailable - internal error)

Y = (unavailable - internal error)

Z = (unavailable - internal error)

m_Transform =

_11 = (unavailable - internal error)

_21 = (unavailable - internal error)

_31 = (unavailable - internal error)

_41 = (unavailable - internal error)

_12 = (unavailable - internal error)

_22 = (unavailable - internal error)

_32 = (unavailable - internal error)

_42 = (unavailable - internal error)

_13 = (unavailable - internal error)

_23 = (unavailable - internal error)

_33 = (unavailable - internal error)

_43 = (unavailable - internal error)

_14 = (unavailable - internal error)

_24 = (unavailable - internal error)

_34 = (unavailable - internal error)

_44 = (unavailable - internal error)

_data = [16]

(unavailable - internal error)

_data2d = [4]

[4] { (unavailable - internal error)

m_InvTransform =

_11 = (unavailable - internal error)

_21 = (unavailable - internal error)

_31 = (unavailable - internal error)

_41 = (unavailable - internal error)

_12 = (unavailable - internal error)

_22 = (unavailable - internal error)

_32 = (unavailable - internal error)

_42 = (unavailable - internal error)

_13 = (unavailable - internal error)

_23 = (unavailable - internal error)

_33 = (unavailable - internal error)

_43 = (unavailable - internal error)

_14 = (unavailable - internal error)

_24 = (unavailable - internal error)

_34 = (unavailable - internal error)

_44 = (unavailable - internal error)

_data = [16]

(unavailable - internal error)

_data2d = [4]

[4] { (unavailable - internal error)

m_RenderData = (unavailable - internal error)

m_BoundsValid = (unavailable - internal error)

(boost::noncopyable_::noncopyable) m_Parent = (unavailable - internal error)

m_Flags = (unavailable - internal error)

m_Texture =

m_Name = { (error -100500 while analyzing string >) } m_Handle = (unavailable - internal error)

m_Material =

m_Hash = (unavailable - internal error)

m_Diffuse =

r = (unavailable - internal error)

g = (unavailable - internal error)

b = (unavailable - internal error)

a = (unavailable - internal error)

m_Ambient =

r = (unavailable - internal error)

g = (unavailable - internal error)

b = (unavailable - internal error)

a = (unavailable - internal error)

m_Specular =

r = (unavailable - internal error)

g = (unavailable - internal error)

b = (unavailable - internal error)

a = (unavailable - internal error)

m_Emissive =

r = (unavailable - internal error)

g = (unavailable - internal error)

b = (unavailable - internal error)

a = (unavailable - internal error)

m_SpecularPower = (unavailable - internal error)

m_Texture = { (error -100500 while analyzing string >) } m_VertexProgram = { (error -100500 while analyzing string >) } m_FragmentProgram = { (error -100500 while analyzing string >) } m_Alpha = (unavailable - internal error)

m_PlayerID = (unavailable - internal error)

m_TextureColor =

r = (unavailable - internal error)

g = (unavailable - internal error)

b = (unavailable - internal error)

a = (unavailable - internal error)

m_pModelDef =

px = (unavailable - internal error)

pn =

pi_ = (unavailable - internal error)

m_ObjectBounds =

m_Data = [2]

X = (unavailable - internal error)

Y = (unavailable - internal error)

Z = (unavailable - internal error)

X = (unavailable - internal error)

Y = (unavailable - internal error)

Z = (unavailable - internal error)

m_Anim = (unavailable - internal error)

m_NextAnim = (unavailable - internal error)

m_AnimSpeed = (unavailable - internal error)

m_AnimTime = (unavailable - internal error)

m_BoneMatrices = (unavailable - internal error)

m_InverseBindBoneMatrices = (unavailable - internal error)

m_Props = (error -100406 while analyzing vector<CModel::Prop >) m_PositionValid = (unavailable - internal error)

m_ShadingColor =

r = (unavailable - internal error)

g = (unavailable - internal error)

b = (unavailable - internal error)

a = (unavailable - internal error)

m_SkeletonAnimManager = (unavailable - internal error)

UnitAttach = 0x00000000 CameraTargets = (error -100500 while analyzing vector<CVector3D >) ZoomDelta = 0.000000 (0x00000000)

m_pLocalPlayer = 0x00000000 m_Players = (error -100500 while analyzing vector<CPlayer * >) m_NumPlayers = 0 (0x00000000) m_GameStarted = false m_SimRate = 1.000000 (0x3F800000) GameStatus = 1551066223 m_Paused = false

pGameAttributes = 0x0EACBE10 ->

(IJSObject) m_JS = 0x02815388 -> (JSObject) m_NonsharedProperties =

(error -100406 while analyzing _Container_base) comp = (CStrW_hash_compare)

_List = (error -100500 while analyzing list<pair<CStrW const ,IJSProperty *> >) _Vec = (error -100406 while analyzing vector<list<pair<CStrW const ,IJSProperty *> >::_Iterator<0> >) _Mask = 15 (0x0000000F) _Maxidx = 16 (0x00000010) _Max_bucket_size = 1.000000 (0x3F800000)

m_ScriptProperties =

(error -100406 while analyzing _Container_base) comp = (CStrW_hash_compare)

_List = (error -100500 while analyzing list<pair<CStrW const ,IJSProperty *> >) _Vec = (error -100406 while analyzing vector<list<pair<CStrW const ,IJSProperty *> >::_Iterator<0> >) _Mask = 15 (0x0000000F) _Maxidx = 16 (0x00000010) _Max_bucket_size = 1.000000 (0x3F800000)

m_EngineOwned = true

m_SynchedProperties =

(error -100406 while analyzing _Container_base) comp = (CStrW_hash_compare)

_List = (error -100500 while analyzing list<pair<CStrW const ,ISynchedJSProperty *> >) _Vec = (error -100406 while analyzing vector<list<pair<CStrW const ,ISynchedJSProperty *> >::_Iterator<0> >) _Mask = 15 (0x0000000F) _Maxidx = 16 (0x00000010) _Max_bucket_size = 1.000000 (0x3F800000)

(Singleton<CGameAttributes>) m_MapFile = { (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >) } m_ResourceLevel = { (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >) } m_StartingPhase = { (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >) } m_GameMode = { (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >) } m_LOSSetting = 0 (0x00000000) m_FogOfWar = true m_ScreenshotMode = false m_NumSlots = 8 (0x00000008) m_Players = (error -100500 while analyzing vector<CPlayer * >) m_PlayerSlots = (error -100500 while analyzing vector<CPlayerSlot * >) m_PlayerSlotArrayJS = 0x02815380 -> (JSObject) m_UpdateCB = 0x00000000 m_UpdateCBData = 0x000055D4 m_PlayerUpdateCB = 0x00000000 (too much output; skipping to next top-level symbol)

CreateServer (scriptglue.cpp:695)

cx = 0x028BB6D8 -> (JSContext) formal = 0x028BCFC8 -> (JSObject) argc = 246895736 (0x0EB75478) argv = 0x027F4FA4 -> 0 (0x00000000) rval = 0x002FF17C -> 2147483649 (0x80000001)

js_Invoke (:0)

errno = 0 (?) OS error = Se ha intentado tener acceso a una dirección no válida.

#219 fixed Strange players names behavoiur Anton Galitch
Description

In MP game. When playing 1 vs 1. The host sees his name fine, but his opponents name as "Player", while opponents name is Matei (as in the default configuration.). The opponent sees his and host's name fine.

#221 fixed Resource counters went negative Jan Wassenberg
Description

In an 1v1 game of Oasis, the stone resource counter was observed to be -1. After starting at 100 and building two houses (50 stone each), it should have been zero (and probably was). After a while of further play - without any harvesting of stone - the resource counter was shown as "-1". Failed to duplicate this in SP, so it's probably related to network transmission of the value.

#224 fixed Set up autobuilder Philip Taylor Philip Taylor
Description

Need to set up a new autobuilder, so that the code can be compiled and the binaries committed to SVN from a stable consistent build environment.

Some discussion in this thread.

Details on the planned setup: BuildServerSetup.

#225 fixed It is possible to place multiple unbuilt building foundations ontop of each other. Michael D. Hafer
Description

How to duplicate bug: Start a game. Select a citizen-soldier. Cycle through the construction list in the GUI. Select House. Begin placing house foundations by clicking rapidly twice in one spot. When construction is complete you can see two houses overlapping in the same spot (as long as both house variations have been randomized).

#228 fixed Building Construction Limits should be dictated in the Entitiy XMLs. Michael D. Hafer
Description

Building limits "per territory" and other building limit attributes should be dictated in the entity code rather than in a script.

Example: The Hellenes have 3 Special Buildings. Each one could have a different building limit criteria. Same for any other faction and any other building type (for instance, what if we want the Romans to be able to build 3 Barracks per territory instead of the 2 dictated in the script? The Persians are supposed to be able to only build one "Kahk" Special Building per map, not per territory as is dictated in the script).

#230 fixed Remove DCDT from OS release Philip Taylor
Description

The DCDT code's license says

  Permission to use this software for educational, research and non-
  profit purposes, without fee, and without a written agreement is
  hereby granted, provided that the above notice and the following
  three paragraphs appear in all copies.

which means it is incompatible with the GPL, so it can't be distributed as part of the GPL release. So it has to be removed from that release, or removed from our repository entirely, or we have to get permission to use under GPL-compatible terms.

#232 fixed Buildings rotated 135 degrees counterclockwise when constructed in-game. Michael D. Hafer
Description

In Atlas buildings have their proper orientation (the "front" of the building should usually face towards the lower right hand side of the screen - there are some exceptions that face towards the lower left corner of the screen, but the point is, they should face at a 45 degree angle, like a diamond, from the default viewing angle), but when constructed in-game, structures face 135 degrees the wrong direction so that the "fronts" of the buildings now face the exact opposite direction from the camera.

This occurs with every Faction's buildings, no matter if they are PMD meshes or DAE Collada meshes.

#236 fixed Player can control enemy's buildings Erik Johansson
Description

Similar to the bug which made it possible to move around an enemy players units ( http://trac.wildfiregames.com/ticket/212 ) I've found that it's possible to control an enemy's buildings. After having had the building within LOS of one of my units I can control the building, and create units. On Latium I just get a message telling me that I cannot build since there aren't enough housing, since the enemy doesn't have any houses but just the CC, but on other maps with enough housing for the enemy player it's possible to build units.

#237 fixed svn_revision.txt is not built Jan Wassenberg Philip Taylor
Description

svn_revision.cpp relies on svn_revision.txt, but that latter file is never actually generated, which breaks the build.

One possible solution: add an svn_revision.txt to SVN which just says "unknown". Don't ever update it for normal developers, because they can work out what they're doing themselves. Then just modify the autobuilder script to run svn_revision.bat and overwrite that file, so the automated builds will identity the revision correctly.

Another possible solution: make svn_revision.bat get called automatically by the VS project. But if it's called for every build, it needs to be careful to avoid triggering a load of unnecessary linking every time. Also it needs to be added on Linux too.

(I'd be happy to help with this, particularly any autobuilder or Linux stuff, depending on what the desired solution is.)

#238 fixed wnuma compilation sometimes fails Jan Wassenberg Philip Taylor
Description

Travis and Brian reported errors in wnuma.cpp like:

'valid' : is not a member of '_PSAPI_WORKING_SET_EX_BLOCK'
'LargePageSize': identifier not found
'node' : is not a member of '_PSAPI_WORKING_SET_EX_BLOCK'

That code is inside an #if WINVER >= 0x600. It compiles fine for me in VS2008 on Vista; I guess it's a problem with an older version of the Platform SDK or something.

(I suggested to them that they just changed the code to #if 0 to get it to compile.)

#239 fixed Sort out OS SVN access permissions Philip Taylor Philip Taylor
Description

Set up the access permissions so anonymous users can access the public files.

#240 fixed Sort out Trac access permissions Philip Taylor
Description

Work out which parts of Trac should be available to normal users, and make them available.

#241 fixed Construct a list of everyone who has written code for the game Philip Taylor Philip Taylor
Description

For the purposes of relicensing as open source, it'd be good to know exactly what code was written by who, so those people can be contacted to make sure they're okay with it.

#242 fixed Collada prop point "root" cannot hand more than one prop at a time. Philip Taylor Michael D. Hafer
Description

Collada prop point "root" cannot hand more than one prop at a time. It is essential that collada prop points be able to hand more than one prop at a time, just like the old pmd files.

#243 fixed "Non boned" Collada meshes should support multiple prop/attachment points historic_bruno Michael D. Hafer
Description

It is imperative to the game as designed that the game engine supports "static" "non-boned" Collada files, such as those created for ships and buildings, that include multiple prop-points. This is mainly for unit garrisoning purposes (units garrisoned on walls, battlements, towers, and on the decks of ships).

I am slating this for Beta, because for Alpha we could conceivably get by with just simple garrisoning capability without the propping. But for any public beta this feature should be implemented, as it is a major stated feature of the project.

#245 fixed [PATCH] Support XML validation leper Philip Taylor
Description

It'd be nice to use proper validator tools to report errors in XML tools. So:

  • Write RelaxNG Compact schemas for all the XML formats. (See existing DTDs for GUI and terrain files.)
  • Add a script to convert them to RelaxNG XML.
  • Change the CXeromyces API to accept a schema argument.
  • Use that schema as part of the file hash, and use it to validate the document.
  • Possibly refuse to load invalid documents? Or just report the error (and cache the error message in the XMB)? Currently we report an error.
  • Write an external tool that validates all the XML files at once.
#246 fixed Start using user-specific config files Philip Taylor
Description

Editing system.cfg is nasty, because you get merge conflicts and accidental commits etc. So people should always use user-specific configuration, which looks like it's already implemented in data/profiles/default/settings/user.cfg. So: make sure that actually works, delete the non-default profiles because they're confusing and unneccessary, and update all the relevant documentation (and add a comment in system.cfg) to say to edit user.cfg.

#247 fixed Simplify the logger Philip Taylor
Description

CLogger is unnecessarily complex. Get rid of the LOG_CATEGORY and user-configurable interestingness stuff, and simplify the macros to LOG_ERROR("whatever") etc.

#250 fixed Non-ranged units appear away from the place where their actions are taking place Erik Johansson
Description

I first saw this when constructing a building, but had trouble reproducing it so I thought I'd wait until I saw it again, but then I saw that the same thing occurred when enemy units were attacking my units. The enemy unit were on the opposite side of a building from my units, but still hitpoints were subtracted from one of my units. It wasn't a ranged unit, and there were no other units nearby, so for some reason the animation/model wasn't "at the place where the simulation occurred" or how I should say.

The same thing with the units constructing a building. As you can see on the screenshot I attached the units that are constructing the building are at a distance from it, though using the proper animation and everything else works.

In both cases it's a building that's between the unit (or rather the animation/model) and the action/simulation that's actually taking place. Not sure if that's just a coincidence, but I thought it was worth mentioning.

Also as it's not interrupting the gameplay or anything it shouldn't be on this milestone, but I don't know on which it fits best, so someone who knows that better should move it, please.

#251 fixed Config parser doesn't ignore comments Quentin Pradet Philip Taylor
Description

When a config file says something like

key = value ; comment

the config parser thinks the key is associated with two values, "value" and " ; comment". (See mainlog.html, where it reports all the config values that were loaded.)

This needs to be fixed, so legitimate (comma-separated) values are kept but comments are discarded.

#254 fixed trac tickets are not readable Florian Ludwig
Description

you can view a list of all tickets but cant actually read the content of tickets if you're not registered / logged in.

It would help to check for more information if you got a problem to be able to check what problems and possible solution and workarounds other people reported.

#258 fixed [FreeBSD compat] add some missing includes Dmitry Marakasov
Description

There were some missing include errors while I was building 0 a.d. on FreeBSD. Maybe that's because I was building with precompiled headers (doesn't seem to work nice with ccache), but I guess it's better to add them.

#259 fixed [FreeBSD compat] portability fixes Dmitry Marakasov
Description

build/premake/src/Src/os.h: check for FreeBSD correctly source/tools/atlas/AtlasScript/ScriptInterface.cpp: use valgrind only on Linux and MacOS X (not on FreeBSD) source/ps/DllLoader.cpp: add missing const build/workspaces/update-workspaces.sh: use plain sh instead of bash (no bash-specific features are used and bash is not available on FreeBSD by default). Also substitute positional parameters correctly

#260 fixed [FreeBSD compat] collada: don't try to load plugins from nowhere Dmitry Marakasov
Description

Collada tries to load plugins from applicationFolderName without checking whether it is empty first, which leads to crash on FreeBSD, where it is empty. While actually there should be FreeBSD version of FUFileManager::GetApplicationFolderName implemented, here where we don't need to load any plugins (do we?) this fix should go.

#261 fixed Redefinition errors on linux justme
Description

in libraries/cxxtest/include/cxxtest/ValueTraits.h:281

#ifndef __APPLE__ // avoid redefinition errors on mac
    CXXTEST_COPY_TRAITS( size_t, const unsigned int ); // avoid /Wp64 warnings in MSVC
#endif

There is a check to make sure redefinition errors do not happen on mac. The check also needs to apply on linux.

#262 fixed Linux and SpiderMonkey justme
Description

In the help page for building on linux (http://trac.wildfiregames.com/wiki/BuildInstructions#Installingthread-safeSpiderMonkey) The recommended version of spider monkey causes build errors with 0AD. I installed the latest version of spider monkey (changeset: 30318) from https://developer.mozilla.org/En/SpiderMonkey/Getting_SpiderMonkey_source_code#Getting_the_latest_SpiderMonkey_source_code

And copied header files 0AD wanted (jsosdep.h and jsconfig.h) that were not present in the latest Spider Monkey revision from an older version to /usr/include/js

0AD then compiled successfully. There was an error (which seemed to have no effect) when launching a single player game but I don't know if it is related to Spider Monkey or what effects the error had on the game.

#263 fixed Inconsistent file encoding breaks spidermonkey on Mac OS X espes
Description
exe name before realpath: /Volumes/Data/Development/Compiling/0AD/trunk/binaries/system/./pyrogenesis_dbg
exe name after realpath: /Volumes/Data/Development/Compiling/0AD/trunk/binaries/system/./pyrogenesis_dbg
returning exe name: /Volumes/Data/Development/Compiling/0AD/trunk/binaries/system/pyrogenesis_dbg
TIMER| InitVfs: 1.603 ms
TIMER| InitScripting: 7.995 ms
TIMER| CONFIG_Init: 8.452 ms
TIMER| write_sys_info: 1.098 ms
TIMER| ps_console: 17.498 ms
TIMER| ps_lang_hotkeys: 6.716 ms
TIMER| ps_gui_init: 187 us
TIMER| ps_gui_setup_xml: 4.976 ms
TIMER| ps_gui_styles_xml: 2.096 ms
TIMER| ps_gui_sprite1_xml: 61.773 ms
(current document)(0): malformed UTF-8 character sequence at offset 25199
ERROR: JavaScript Error ((current document), line 0): malformed UTF-8 character sequence at offset 25199
terminate called after throwing an instance of 'PSERROR_Scripting_LoadFile_EvalErrors'
  what():  Scripting_LoadFile_EvalErrors
Abort trap

I eventually tracked this down to gui/test/functions_page_session_status_commands.js, which was in some ISO-* encoding, instead of UTF-8. This problem exists for quite a few other files as well. Spidermonkey fails to parse them, and dies.

#264 fixed ReferenceError: addGlobalHandler is not defined on Linux cd311
Description

hi

i was building the game on a kubuntu 9.04 using the instructions on http://trac.wildfiregames.com/wiki/BuildInstructions however if i start the ./pyrogenesis_dbg all i get is

TIMER| InitVfs: 1.64816 ms TIMER| InitScripting: 55.6995 ms TIMER| CONFIG_Init: 30.1024 ms TIMER| write_sys_info: 1.48977 ms TIMER| ps_console: 12.7604 ms TIMER| ps_lang_hotkeys: 11.0896 ms TIMER| ps_gui_init: 45.814 us TIMER| ps_gui_setup_xml: 30.3468 ms TIMER| ps_gui_styles_xml: 4.25142 ms TIMER| ps_gui_sprite1_xml: 220.275 ms gui/test/functions_page_session.js(280): ReferenceError: addGlobalHandler is not defined ERROR: JavaScript Error (gui/test/functions_page_session.js, line 280): ReferenceError: addGlobalHandler is not defined terminate called after throwing an instance of 'PSERROR_Scripting_LoadFile_EvalErrors'

what(): Scripting_LoadFile_EvalErrors

Aborted

a windows pops up for a second and closes again.

did i do anything wrong? i even built the spidermonkey lib threadsafe for my system

cd311

#265 fixed [Mac OS X] premake fails to include libxml2 with threadding enabled espes
Description

libxml2 checks for thread support by not only checking if it was compiled in, but also by checking whether "_REENTRANT" or "MT" is set. Usually, AFAIK, these are set on *nix when pthread is included, but since on OS X GNU threads are included in libSystem, this does not happen.

I propose the attached fix, but if anyone has a better idea, feel free.

#266 fixed [Mac OS X] tests fail to compile espes
Description

"lib.tests/test_secure_crt.h" fails to compile on Mac OS X, as Mac OS X does not have a included "strnlen".

A crappy fix is attached, because I fail at C.

#268 fixed OpenAL string specifications are identified incorrectly Simon Brenner espes
Description

from lib/external_libraries/openal.h, line 34:

// ALC strings (e.g. device and extension names) are typed differently
// between platforms *sigh*
#if OS_MACOSX
typedef ALCubyte* alcString;
#else
typedef ALCchar* alcString;
#endif

This is incorrect, and creates compilation errors. It is not platform dependent - using ALCubyte was changed to using ALCchar in the 1.1 spec of OpenAL. It should be identified through AL_VERSION_1_1 (Unless you can think of a better way, it's not 100% accurate)

A fix is attached.

#269 fixed Compile warnings: printf formats, unsigned/signed comparisons, etc Simon Brenner
Description

Basically this:

NetClient.cpp
../../../source/network/NetClient.cpp: In static member function 'static bool CNetClient::OnError(void*, CFsmEvent*)':
../../../source/network/NetClient.cpp:253: warning: comparison between signed and unsigned integer expressions
../../../source/network/NetClient.cpp: In static member function 'static bool CNetClient::OnAuthenticate(void*, CFsmEvent*)':
../../../source/network/NetClient.cpp:367: warning: comparison between signed and unsigned integer expressions
NetServer.cpp
../../../source/network/NetServer.cpp: In static member function 'static bool CNetServer::OnError(void*, CFsmEvent*)':
../../../source/network/NetServer.cpp:395: warning: comparison between signed and unsigned integer expressions
Util.cpp
../../../source/ps/Util.cpp: In function 'void WriteSystemInfo()':
../../../source/ps/Util.cpp:96: warning: format '%d' expects type 'int', but argument 5 has type 'size_t'
../../../source/ps/Util.cpp:96: warning: format '%d' expects type 'int', but argument 6 has type 'size_t'
../../../source/ps/Util.cpp:96: warning: format '%d' expects type 'int', but argument 7 has type 'size_t'
../../../source/ps/Util.cpp:109: warning: format '%u' expects type 'unsigned int', but argument 3 has type 'size_t'
../../../source/ps/Util.cpp:109: warning: format '%u' expects type 'unsigned int', but argument 4 has type 'size_t'
CLogger.cpp
../../../source/ps/CLogger.cpp:171: warning: unused parameter 'category'
../../../source/ps/CLogger.cpp:188: warning: unused parameter 'category'
Parser.cpp
../../../source/ps/Parser.cpp: In member function 'bool CParserLine::ParseString(const CParser&, const std::string&)':
../../../source/ps/Parser.cpp:557: warning: comparison between signed and unsigned integer expressions
../../../source/ps/Parser.cpp:605: warning: comparison between signed and unsigned integer expressions
../../../source/ps/Parser.cpp:657: warning: comparison between signed and unsigned integer expressions
../../../source/ps/Parser.cpp:793: warning: comparison between signed and unsigned integer expressions
EntityManager.cpp
../../../source/simulation/EntityManager.cpp: In member function 'HEntity CEntityManager::Create(CEntityTemplate*, CVector3D, float, const std::set<CStr8, std::less<CStr8>, std::allocator<CStr8> >&, const CStrW*)':
../../../source/simulation/EntityManager.cpp:225: warning: comparison between signed and unsigned integer expressions
ScriptGlue.cpp
../../../source/scripting/ScriptGlue.cpp: In function 'void InitJsTimers()':
../../../source/scripting/ScriptGlue.cpp:648: warning: format '%d' expects type 'int', but argument 3 has type 'size_t'
Terrain.cpp
../../../source/graphics/Terrain.cpp: In member function 'void CTerrain::Resize(ssize_t)':
../../../source/graphics/Terrain.cpp:368: warning: comparison between signed and unsigned integer expressions
Renderer.cpp
../../../source/renderer/Renderer.cpp: In member function 'virtual CStr8 CRendererStatsTable::GetCellText(size_t, size_t)':
../../../source/renderer/Renderer.cpp:152: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
../../../source/renderer/Renderer.cpp:152: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
../../../source/renderer/Renderer.cpp:158: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
../../../source/renderer/Renderer.cpp:158: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
../../../source/renderer/Renderer.cpp:164: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
../../../source/renderer/Renderer.cpp:164: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
../../../source/renderer/Renderer.cpp:170: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
../../../source/renderer/Renderer.cpp:170: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
../../../source/renderer/Renderer.cpp:176: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
../../../source/renderer/Renderer.cpp:176: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
WaterManager.cpp
../../../source/renderer/WaterManager.cpp: In member function 'int WaterManager::LoadWaterTextures()':
../../../source/renderer/WaterManager.cpp:114: warning: format '%02d' expects type 'int', but argument 5 has type 'size_t'
../../../source/renderer/WaterManager.cpp:114: warning: format '%02d' expects type 'int', but argument 5 has type 'size_t'
../../../source/renderer/WaterManager.cpp:131: warning: format '%02d' expects type 'int', but argument 5 has type 'size_t'
../../../source/renderer/WaterManager.cpp:131: warning: format '%02d' expects type 'int', but argument 5 has type 'size_t'
MessagePasserImpl.cpp
../../../source/tools/atlas/GameInterface/MessagePasserImpl.cpp: In constructor 'MessagePasserImpl::MessagePasserImpl()':
../../../source/tools/atlas/GameInterface/MessagePasserImpl.cpp:37: warning: format '%d' expects type 'int', but argument 3 has type 'size_t'
ldbg.cpp
../../../source/lib/sysdep/os/linux/ldbg.cpp: In function 'void* debug_GetCaller(void*, const char*)':
../../../source/lib/sysdep/os/linux/ldbg.cpp:87: warning: unused variable 'bt_size'
../../../source/lib/sysdep/os/linux/ldbg.cpp: In function 'LibError debug_resolve_symbol_dladdr(void*, char*, char*, int*)':
../../../source/lib/sysdep/os/linux/ldbg.cpp:303: warning: format '%08x' expects type 'unsigned int', but argument 4 has type 'size_t'
../../../source/lib/sysdep/os/linux/ldbg.cpp:303: warning: format '%08x' expects type 'unsigned int', but argument 4 has type 'size_t'
item.cpp
../../../source/tools/atlas/wxJS/gui/control/item.cpp: In static member function 'static bool wxjs::gui::ControlItem::GetProperty(wxjs::Index*, JSContext*, JSObject*, int, jsval*)':
../../../source/tools/atlas/wxJS/gui/control/item.cpp:84: warning: comparison between signed and unsigned integer expressions
../../../source/tools/atlas/wxJS/gui/control/item.cpp: In static member function 'static bool wxjs::gui::ControlItem::SetProperty(wxjs::Index*, JSContext*, JSObject*, int, jsval*)':
../../../source/tools/atlas/wxJS/gui/control/item.cpp:108: warning: comparison between signed and unsigned integer expressions
../../../source/tools/atlas/wxJS/gui/control/item.cpp: In static member function 'static JSBool wxjs::gui::ControlItem::remove(JSContext*, JSObject*, uintN, jsval*, jsval*)':
../../../source/tools/atlas/wxJS/gui/control/item.cpp:145: warning: comparison between signed and unsigned integer expressions
../../../source/tools/atlas/wxJS/gui/control/item.cpp: In static member function 'static JSBool wxjs::gui::ControlItem::select(JSContext*, JSObject*, uintN, jsval*, jsval*)':
../../../source/tools/atlas/wxJS/gui/control/item.cpp:172: warning: comparison between signed and unsigned integer expressions
radioboxit.cpp
../../../source/tools/atlas/wxJS/gui/control/radioboxit.cpp: In static member function 'static bool wxjs::gui::RadioBoxItem::GetProperty(wxjs::Index*, JSContext*, JSObject*, int, jsval*)':
../../../source/tools/atlas/wxJS/gui/control/radioboxit.cpp:68: warning: comparison between signed and unsigned integer expressions
../../../source/tools/atlas/wxJS/gui/control/radioboxit.cpp:79: warning: comparison between signed and unsigned integer expressions
../../../source/tools/atlas/wxJS/gui/control/radioboxit.cpp: In static member function 'static bool wxjs::gui::RadioBoxItem::SetProperty(wxjs::Index*, JSContext*, JSObject*, int, jsval*)':
../../../source/tools/atlas/wxJS/gui/control/radioboxit.cpp:109: warning: comparison between signed and unsigned integer expressions
rect.cpp
../../../source/tools/atlas/wxJS/gui/misc/rect.cpp: In static member function 'static JSBool wxjs::gui::Rect::inside(JSContext*, JSObject*, uintN, jsval*, jsval*)':
../../../source/tools/atlas/wxJS/gui/misc/rect.cpp:464: warning: 'bool wxRect::Inside(int, int) const' is deprecated (declared at /usr/include/wx-2.8/wx/gdicmn.h:490)
../../../source/tools/atlas/wxJS/gui/misc/rect.cpp:477: warning: 'bool wxRect::Inside(const wxPoint&) const' is deprecated (declared at /usr/include/wx-2.8/wx/gdicmn.h:491)
sizer.cpp
../../../source/tools/atlas/wxJS/gui/misc/sizer.cpp: In static member function 'static JSBool wxjs::gui::Sizer::remove(JSContext*, JSObject*, uintN, jsval*, jsval*)':
../../../source/tools/atlas/wxJS/gui/misc/sizer.cpp:534: warning: 'virtual bool wxSizer::Remove(wxWindow*)' is deprecated (declared at /usr/include/wx-2.8/wx/sizer.h:513)
textline.cpp
../../../source/tools/atlas/wxJS/io/textline.cpp: In static member function 'static bool wxjs::io::TextLine::GetProperty(wxjs::Index*, JSContext*, JSObject*, int, jsval*)':
../../../source/tools/atlas/wxJS/io/textline.cpp:102: warning: comparison between signed and unsigned integer expressions
../../../source/tools/atlas/wxJS/io/textline.cpp: In static member function 'static bool wxjs::io::TextLine::SetProperty(wxjs::Index*, JSContext*, JSObject*, int, jsval*)':
../../../source/tools/atlas/wxJS/io/textline.cpp:134: warning: comparison between signed and unsigned integer expressions
../../../source/tools/atlas/wxJS/io/textline.cpp: In static member function 'static bool wxjs::io::TextLine::Enumerate(wxjs::Index*, JSContext*, JSObject*, JSIterateOp, jsval*, jsid*)':
../../../source/tools/atlas/wxJS/io/textline.cpp:186: warning: comparison between signed and unsigned integer expressions
DLLInterface.cpp
In file included from /usr/include/libxml2/libxml/parser.h:15,
from ../../../source/tools/atlas/AtlasUI/Misc/DLLInterface.cpp:42:
/usr/include/libxml2/libxml/xmlversion.h:429:1: warning: "ATTRIBUTE_PRINTF" redefined
In file included from /usr/include/wx-2.8/wx/wxprec.h:13,
from ../../../source/tools/atlas/AtlasUI/Misc/precompiled.h:43,
from ../../../source/tools/atlas/AtlasUI/Misc/precompiled.cpp:18:
/usr/include/wx-2.8/wx/defs.h:501:1: warning: this is the location of the previous definition
Trigger.cpp
../../../source/tools/atlas/AtlasUI/ScenarioEditor/Sections/Trigger/Trigger.cpp:1049: warning: unused parameter 'label'
DLL.cpp
../../../source/collada/DLL.cpp: In member function 'virtual void BufferedOutputCallback::operator()(const char*, unsigned int)':
../../../source/collada/DLL.cpp:78: warning: comparison between signed and unsigned integer expressions
../../../source/collada/DLL.cpp:84: warning: comparison between signed and unsigned integer expressions
test_byte_order.cpp
In file included from ../../../source/lib/self_test.h:190,
from ../../../source/pch/test/precompiled.h:24,
from ../../../source/pch/test/precompiled.cpp:25:
../../../libraries/cxxtest/include/cxxtest/TestSuite.h: In function 'bool CxxTest::equals(X, Y) [with X = long int, Y = long long unsigned int]':
../../../libraries/cxxtest/include/cxxtest/TestSuite.h:56: instantiated from 'void CxxTest::doAssertEquals(const char*, unsigned int, const char*, X, const char*, Y, const char*) [with X = long int, Y = long long unsigned int]'
../../../source/lib/tests/../../../source/lib/tests/test_byte_order.h:83: instantiated from here
../../../libraries/cxxtest/include/cxxtest/TestSuite.h:47: warning: comparison between signed and unsigned integer expressions
test_allocators.cpp
In file included from ../../../source/lib/self_test.h:190,
from ../../../source/pch/test/precompiled.h:24,
from ../../../source/pch/test/precompiled.cpp:25:
../../../libraries/cxxtest/include/cxxtest/TestSuite.h: In function 'bool CxxTest::equals(X, Y) [with X = unsigned int, Y = int]':
../../../libraries/cxxtest/include/cxxtest/TestSuite.h:56: instantiated from 'void CxxTest::doAssertEquals(const char*, unsigned int, const char*, X, const char*, Y, const char*) [with X = unsigned int, Y = int]'
../../../source/pch/test/../../../source/lib/allocators/tests/test_allocators.h:42: instantiated from here
../../../libraries/cxxtest/include/cxxtest/TestSuite.h:47: warning: comparison between signed and unsigned integer expressions
#270 fixed Crash rendering water shaders when GL_ARB_shader_objects not supported Aviv
Description

Game crashed on startup. I have a pretty crappy graphics card - Mobile Intel 945 Express Chipset Family - so that might be the cause.

#272 fixed Citizens should auto-gather from Fields after finishing construction. sidharth Zervox
Description

-Fixing so that when Villager/builder woman has built a farm they will automatically start farming on it, like when a villager has finished chopping a tree they move to the next possible one.

#273 fixed Atlas not working under Vista or Windows 7 beta. (tested both) Zervox
Description

-It only show a blue screen where the map is supposed to be.

http://zyk-production.com/contributions/atlas.jpg

#276 fixed Renderer Enhancement: Distance Fog myconid Michael D. Hafer
Description

Would like the renderer to have distance fog implemented and able to be enabled on a map through the Atlas map editor. Some variables would include:

  • Thickness
  • Tint
  • Distance (the distance that the background becomes 100% obscured by the fog)
  • anything else?

This would be a good way to visually mask the fact that we don't have other whiz-bang graphical features like normal maps and suchness.

#277 fixed [PATCH]Unit selections gerbilOFdoom Zervox
Description

-When dragging the selection box over screen, only select military units if there are any, if not, then make it only choose villagers, and only let 1 building get selected at once instead of(lets say) 10, currently if you drag you get villagers,buildings and military units in one selection

#278 fixed Queuing unit production should be made faster Zervox
Description

-The way it is now, you have to wait a certain time before you can click the create "any unit here" or else it doesnt stack the order, making it painfully slow when a player have to build 1+ unit, it should register per click and not have what seems to be a wait function between each possible click.

-0.5 sec to 1 sec before able to queue another unit into production queue everytime is very slow.

#279 fixed vfs_Lookup does mkdir incorrectly Jan Wassenberg Philip Taylor
Description

On Linux: Delete binaries/data/cache. Run the game. Get an error:

/usr/include/boost/shared_ptr.hpp:375: T* boost::shared_ptr<T>::operator->() const [with T = RealDirectory]: Assertion `px != 0' failed.

vfs_lookup.cpp attempts to create the directory with mkdir. Two problems:

First: It appears to call mkdir("/.../binaries/data/") with subdirectoryName == "cache". Then it calls mkdir("/.../binaries/data/cache/mods") with subdirectoryName == "mods". It never actually creates cache, so it fails.

Second: If mkdir fails, then no error is reported, and the shared_ptr assertion occurs arbitrarily later. If it returns -1 and errno != EEXIST then the error should probably be reported immediately.

#281 fixed Build error in AtlasUI Philip Taylor bugmenot
Description

Hello, I try to compile wildfire on ubuntu jaunty following your build instructions.

Now there is an error while compiling the AtlasUI. The output is:

==== Building AtlasUI ====
precompiled.cpp
ActorEditor.cpp
AnimListEditor.cpp
ActorEditorListCtrl.cpp
PropListEditor.cpp
ActorViewer.cpp
ColourTesterFileCtrl.cpp
ColourTester.cpp
ColourTesterColourCtrl.cpp
ColourTesterImageCtrl.cpp
ActionButton.cpp
ToolButton.cpp
Canvas.cpp
ColourDialog.cpp
DraggableListCtrl.cpp
DraggableListCtrlCommands.cpp
ListCtrlValidator.cpp
QuickComboBox.cpp
QuickTextCtrl.cpp
EditableListCtrl.cpp
FieldEditCtrl.cpp
QuickFileCtrl.cpp
EditableListCtrlCommands.cpp
FileHistory.cpp
HighResTimer.cpp
SnapSplitterWindow.cpp
virtualdirtreectrl.cpp
AtlasWindow.cpp
AtlasDialog.cpp
ErrorReporter.cpp
Observable.cpp
AtlasClipboard.cpp
AtlasEventLoop.cpp
Datafile.cpp
AtlasWindowCommand.cpp
AtlasWindowCommandProc.cpp
FFmpeg.cpp
VideoRecorder.cpp
DLLInterface.cpp
SectionLayout.cpp
ScenarioEditor.cpp
Sidebar.cpp
Cinematic.cpp
LightControl.cpp
Environment.cpp
Terrain.cpp
Trigger.cpp
../../../source/tools/atlas/AtlasUI/ScenarioEditor/Sections/Trigger/Trigger.cpp:1050: warning: unused parameter 'label'
ScriptedTool.cpp
AlterElevation.cpp
PlaceObject.cpp
FlattenElevation.cpp
PaintTerrain.cpp
TransformObject.cpp
ObjectSettings.cpp
MiscState.cpp
Brushes.cpp
Tools.cpp
Linking AtlasUI
obj/AtlasUI_Debug/ColourTesterColourCtrl.o: In function `CustomColourButton::OnButton(wxCommandEvent&)':
ColourTesterColourCtrl.cpp:(.text._ZN18CustomColourButton8OnButtonER14wxCommandEvent[CustomColourButton::OnButton(wxCommandEvent&)]+0x92): undefined reference to `wxColour::IsOk() const'
obj/AtlasUI_Debug/FieldEditCtrl.o: In function `wxColour::Ok() const':
/usr/include/wx-2.8/wx/gtk/colour.h:30: undefined reference to `wxColour::IsOk() const'
/usr/bin/ld: ../../../binaries/system/libAtlasUI_dbg.so: hidden symbol `wxColour::IsOk() const' isn't defined
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: ld returned 1 exit status
make[2]: *** [../../../binaries/system/libAtlasUI_dbg.so] Error 1
make[1]: *** [AtlasUI] Error 2
make[1]: Leaving directory `/build/korn-wildfire_0svn7029-1~getdeb1-amd64-L8XWbo/wildfire-0svn7029-1~getdeb1/build/workspaces/gcc'
make: *** [build-stamp] Error 2
dpkg-buildpackage: failure: debian/rules build gave error exit status 2
#282 fixed Infinite recursion when crashlog.txt can't be written Jan Wassenberg Philip Taylor
Description

In debug.cpp, debug_WriteCrashlog tries to open crashlog.txt for writing. If it fails (e.g. it doesn't have write permission to that directory), it resets isBusy and then does WARN_RETURN, which calls debug_DisplayError, which calls debug_WriteCrashlog, and isBusy is false so it loops forever.

See http://ruby.pastebin.com/m53d88e4a for an example of this.

#283 fixed Duplicate LibError codes 110200, 110201 Jan Wassenberg Philip Taylor
Description

lib/file/path.h:

    const LibError PATH_ROOT_DIR_ALREADY_SET = -110200;
    const LibError PATH_NOT_IN_ROOT_DIR      = -110201;

lib/file/file.h:

    const LibError FILE_ACCESS = -110200;
    const LibError IO          = -110201;

Confusion ensues.

#284 fixed crash on vista heroine
Description

I use a laptop with vista OS to open the pyrogenesis.exe, then it crash.

#285 fixed Crash when loading single player game stefano
Description

Much to our regret we must report the program has encountered an error.

Details: unhandled exception (Access violation writing 0x00000000)

Location: unknown:0 (?)

Call stack:

(error while dumping stack: No stack frames found) errno = 0 (?) OS error = Accesso a posizione di memoria non valido.

#287 fixed dock placement valakas46
Description

when placing a dock if location is invalid you get this error

gui/test/functions_sim_entity.js(254): Index out of bounds. ERROR: JavaScript Error (gui/test/functions_sim_entity.js, line 254): Index out of bounds. gui/test/functions_sim_entity.js(254): Invalid parameter(s) or count ERROR: JavaScript Error (gui/test/functions_sim_entity.js, line 254): Invalid parameter(s) or count

but are still allowed to build dock even if its underwater also it changes the land around build location and the land doesnt fix its self if you delete the building

#288 fixed libCollada not found by game when executed outside system directory Philip Taylor
Description

On Linux, if the game is run from outside the 'system' directory, it can't find ./libCollada_dbg.so and dies. It should probably look in the game executable's path to find the library (perhaps using sys_get_executable_name).

#291 fixed Many compiling errors Frederick Wrigley
Description

This is the result I got from following the instructions on the wiki om my Ubuntu 8.10 laptop

oldrocker99@oldrocker99-laptop:~/games/stargus-0.2/trunk/build/workspaces$ cd gcc oldrocker99@oldrocker99-laptop:~/games/stargus-0.2/trunk/build/workspaces/gcc$ make -j2

Building network

Building engine

precompiled.cpp NetClient.cpp In file included from ../../../source/pch/engine/precompiled.h:30,

from ../../../source/pch/engine/precompiled.cpp:18:

../../../source/scripting/SpiderMonkey.h:45:22: error: js/jsapi.h: No such file or directory ../../../source/scripting/SpiderMonkey.h:49:26: error: js/jsdbgapi.h: No such file or directory In file included from ../../../source/scripting/ScriptingHost.h:42,

from ../../../source/scripting/JSConversions.h:23, from ../../../source/scripting/JSSerialization.h:23, from ../../../source/network/NetMessages.h:31, from ../../../source/network/NetMessage.h:38, from ../../../source/network/Network.h:68, from ../../../source/network/NetSession.h:30, from ../../../source/network/NetClient.h:30, from ../../../source/network/NetClient.cpp:28:

../../../source/scripting/SpiderMonkey.h:45:22: error: js/jsapi.h: No such file or directory ../../../source/scripting/SpiderMonkey.h:49:26: error: js/jsdbgapi.h: No such file or directory In file included from ../../../source/scripting/SpiderMonkey.h:54,

from ../../../source/scripting/ScriptingHost.h:42, from ../../../source/scripting/JSConversions.h:23, from ../../../source/scripting/JSSerialization.h:23, from ../../../source/network/NetMessages.h:31, from ../../../source/network/NetMessage.h:38, from ../../../source/network/Network.h:68, from ../../../source/network/NetSession.h:30, from ../../../source/network/NetClient.h:30, from ../../../source/network/NetClient.cpp:28:

../../../source/scripting/JSUtil.h:20: error: ‘jsval’ does not name a type In file included from ../../../source/scripting/JSConversions.h:23,

from ../../../source/scripting/JSSerialization.h:23, from ../../../source/network/NetMessages.h:31, from ../../../source/network/NetMessage.h:38, from ../../../source/network/Network.h:68, from ../../../source/network/NetSession.h:30, from ../../../source/network/NetClient.h:30, from ../../../source/network/NetClient.cpp:28:

../../../source/scripting/ScriptingHost.h:72: error: ISO C++ forbids declaration of ‘JSObject’ with no type ../../../source/scripting/ScriptingHost.h:72: error: expected ‘;’ before ‘*’ token ../../../source/scripting/ScriptingHost.h:73: error: ISO C++ forbids declaration of ‘JSClass’ with no type ../../../source/scripting/ScriptingHost.h:73: error: expected ‘;’ before ‘*’ token ../../../source/scripting/ScriptingHost.h:79: error: ISO C++ forbids declaration of ‘JSRuntime’ with no type ../../../source/scripting/ScriptingHost.h:79: error: expected ‘;’ before ‘*’ token ../../../source/scripting/ScriptingHost.h:80: error: ISO C++ forbids declaration of ‘JSContext’ with no type ../../../source/scripting/ScriptingHost.h:80: error: expected ‘;’ before ‘*’ token ../../../source/scripting/ScriptingHost.h:81: error: ISO C++ forbids declaration of ‘JSObject’ with no type ../../../source/scripting/ScriptingHost.h:81: error: expected ‘;’ before ‘*’ token ../../../source/scripting/ScriptingHost.h:83: error: ‘JSErrorReport’ does not name a type ../../../source/scripting/ScriptingHost.h:89: error: expected ‘;’ before ‘(’ token ../../../source/scripting/ScriptingHost.h:91: error: expected ‘;’ before ‘(’ token ../../../source/scripting/ScriptingHost.h:103: error: ISO C++ forbids declaration of ‘JSContext’ with no type ../../../source/scripting/ScriptingHost.h:103: error: ‘JSContext’ declared as an ‘inline’ field ../../../source/scripting/ScriptingHost.h:103: error: expected ‘;’ before ‘*’ token ../../../source/scripting/ScriptingHost.h:104: error: expected `;' before ‘inline’ ../../../source/scripting/ScriptingHost.h:104: error: ISO C++ forbids declaration of ‘JSContext’ with no type ../../../source/scripting/ScriptingHost.h:104: error: ‘JSContext’ declared as an ‘inline’ field ../../../source/scripting/ScriptingHost.h:104: error: expected ‘;’ before ‘*’ token ../../../source/scripting/ScriptingHost.h:105: error: expected `;' before ‘inline’ ../../../source/scripting/ScriptingHost.h:105: error: ISO C++ forbids declaration of ‘JSObject’ with no type ../../../source/scripting/ScriptingHost.h:105: error: ‘JSObject’ declared as an ‘inline’ field ../../../source/scripting/ScriptingHost.h:105: error: expected ‘;’ before ‘*’ token ../../../source/scripting/ScriptingHost.h:107: error: expected `;' before ‘void’ ../../../source/scripting/ScriptingHost.h:107: error: ‘JSObject’ has not been declared ../../../source/scripting/ScriptingHost.h:108: error: ‘JSObject’ has not been declared ../../../source/scripting/ScriptingHost.h:111: error: ‘jsval’ does not name a type ../../../source/scripting/ScriptingHost.h:113: error: ‘jsval’ does not name a type ../../../source/scripting/ScriptingHost.h:115: error: ‘JSNative’ has not been declared ../../../source/scripting/ScriptingHost.h:120: error: ‘JSClass’ has not been declared ../../../source/scripting/ScriptingHost.h:120: error: ‘JSNative’ has not been declared ../../../source/scripting/ScriptingHost.h:120: error: ‘uintN’ has not been declared ../../../source/scripting/ScriptingHost.h:120: error: ‘JSPropertySpec’ has not been declared ../../../source/scripting/ScriptingHost.h:120: error: ‘JSFunctionSpec’ has not been declared ../../../source/scripting/ScriptingHost.h:120: error: ‘JSPropertySpec’ has not been declared ../../../source/scripting/ScriptingHost.h:120: error: ‘JSFunctionSpec’ has not been declared ../../../source/scripting/ScriptingHost.h:122: error: ISO C++ forbids declaration of ‘JSObject’ with no type ../../../source/scripting/ScriptingHost.h:122: error: expected ‘;’ before ‘*’ token ../../../source/scripting/ScriptingHost.h:124: error: ‘JSObject’ has not been declared ../../../source/scripting/ScriptingHost.h:124: error: ‘jsval’ has not been declared ../../../source/scripting/ScriptingHost.h:125: error: ‘jsval’ does not name a type ../../../source/scripting/ScriptingHost.h:127: error: ‘JSObject’ has not been declared ../../../source/scripting/ScriptingHost.h:128: error: ‘JSObject’ has not been declared ../../../source/scripting/ScriptingHost.h:130: error: ‘jsval’ has not been declared ../../../source/scripting/ScriptingHost.h:131: error: ‘jsval’ does not name a type ../../../source/scripting/ScriptingHost.h:133: error: expected ‘,’ or ‘...’ before ‘value’ ../../../source/scripting/ScriptingHost.h:133: error: ISO C++ forbids declaration of ‘jsval’ with no type ../../../source/scripting/ScriptingHost.h:134: error: expected ‘,’ or ‘...’ before ‘value’ ../../../source/scripting/ScriptingHost.h:134: error: ISO C++ forbids declaration of ‘jsval’ with no type ../../../source/scripting/ScriptingHost.h:135: error: expected ‘,’ or ‘...’ before ‘value’ ../../../source/scripting/ScriptingHost.h:135: error: ISO C++ forbids declaration of ‘jsval’ with no type ../../../source/scripting/ScriptingHost.h:136: error: expected ‘,’ or ‘...’ before ‘value’ ../../../source/scripting/ScriptingHost.h:136: error: ISO C++ forbids declaration of ‘jsval’ with no type ../../../source/scripting/ScriptingHost.h:137: error: expected ‘,’ or ‘...’ before ‘value’ ../../../source/scripting/ScriptingHost.h:137: error: ISO C++ forbids declaration of ‘jsval’ with no type ../../../source/scripting/ScriptingHost.h:138: error: expected ‘,’ or ‘...’ before ‘value’ ../../../source/scripting/ScriptingHost.h:138: error: ISO C++ forbids declaration of ‘jsval’ with no type ../../../source/scripting/ScriptingHost.h:140: error: ‘jsval’ does not name a type ../../../source/scripting/ScriptingHost.h:141: error: ‘jsval’ does not name a type ../../../source/scripting/ScriptingHost.h:143: error: ‘JSContext’ has not been declared ../../../source/scripting/ScriptingHost.h:143: error: ‘JSErrorReport’ has not been declared In file included from ../../../source/scripting/JSSerialization.h:23,

from ../../../source/network/NetMessages.h:31, from ../../../source/network/NetMessage.h:38, from ../../../source/network/Network.h:68, from ../../../source/network/NetSession.h:30, from ../../../source/network/NetClient.h:30, from ../../../source/network/NetClient.cpp:28:

../../../source/scripting/JSConversions.h:40: error: template declaration of ‘T* ToNative’ ../../../source/scripting/JSConversions.h:40: error: ‘JSContext’ was not declared in this scope ../../../source/scripting/JSConversions.h:40: error: ‘cx’ was not declared in this scope ../../../source/scripting/JSConversions.h:40: error: ‘JSObject’ was not declared in this scope ../../../source/scripting/JSConversions.h:40: error: ‘obj’ was not declared in this scope ../../../source/scripting/JSConversions.h:45: error: expected constructor, destructor, or type conversion before ‘*’ token ../../../source/scripting/JSConversions.h:52: error: template declaration of ‘T* ToNative’ ../../../source/scripting/JSConversions.h:52: error: ‘jsval’ was not declared in this scope ../../../source/scripting/JSConversions.h:59: error: template declaration of ‘bool ToPrimitive’ ../../../source/scripting/JSConversions.h:59: error: ‘JSContext’ was not declared in this scope ../../../source/scripting/JSConversions.h:59: error: expected primary-expression before ‘,’ token ../../../source/scripting/JSConversions.h:59: error: ‘jsval’ was not declared in this scope ../../../source/scripting/JSConversions.h:59: error: expected primary-expression before ‘&’ token ../../../source/scripting/JSConversions.h:59: error: ‘Storage’ was not declared in this scope ../../../source/scripting/JSConversions.h:68: error: template declaration of ‘bool ToPrimitive’ ../../../source/scripting/JSConversions.h:68: error: ‘JSContext’ was not declared in this scope ../../../source/scripting/JSConversions.h:68: error: expected primary-expression before ‘,’ token ../../../source/scripting/JSConversions.h:68: error: ‘jsval’ was not declared in this scope ../../../source/scripting/JSConversions.h:68: error: expected primary-expression before ‘*’ token ../../../source/scripting/JSConversions.h:68: error: ‘Storage’ was not declared in this scope ../../../source/scripting/JSConversions.h:77: error: ‘ToPrimitive’ declared as an ‘inline’ variable ../../../source/scripting/JSConversions.h:77: error: template declaration of ‘T ToPrimitive’ ../../../source/scripting/JSConversions.h:77: error: ‘JSContext’ was not declared in this scope ../../../source/scripting/JSConversions.h:77: error: ‘cx’ was not declared in this scope ../../../source/scripting/JSConversions.h:77: error: ‘jsval’ was not declared in this scope ../../../source/scripting/JSConversions.h:86: error: ‘ToPrimitive’ declared as an ‘inline’ variable ../../../source/scripting/JSConversions.h:86: error: template declaration of ‘T ToPrimitive’ ../../../source/scripting/JSConversions.h:86: error: ‘jsval’ was not declared in this scope ../../../source/scripting/JSConversions.h:91: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:96: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:101: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:110: error: expected initializer before ‘<’ token ../../../source/scripting/JSConversions.h:111: error: expected constructor, destructor, or type conversion before ‘*’ token ../../../source/scripting/JSConversions.h:112: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:115: error: expected initializer before ‘<’ token ../../../source/scripting/JSConversions.h:116: error: expected constructor, destructor, or type conversion before ‘*’ token ../../../source/scripting/JSConversions.h:119: error: expected initializer before ‘<’ token ../../../source/scripting/JSConversions.h:120: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:123: error: expected initializer before ‘<’ token ../../../source/scripting/JSConversions.h:124: error: expected constructor, destructor, or type conversion before ‘*’ token ../../../source/scripting/JSConversions.h:127: error: expected initializer before ‘<’ token ../../../source/scripting/JSConversions.h:128: error: expected constructor, destructor, or type conversion before ‘*’ token ../../../source/scripting/JSConversions.h:131: error: expected initializer before ‘<’ token ../../../source/scripting/JSConversions.h:132: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:135: error: expected initializer before ‘<’ token ../../../source/scripting/JSConversions.h:136: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:137: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:140: error: expected initializer before ‘<’ token ../../../source/scripting/JSConversions.h:141: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:142: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:145: error: expected initializer before ‘<’ token ../../../source/scripting/JSConversions.h:146: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:147: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:150: error: expected initializer before ‘<’ token ../../../source/scripting/JSConversions.h:151: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:152: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:173: error: expected initializer before ‘<’ token ../../../source/scripting/JSConversions.h:174: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:175: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:178: error: expected initializer before ‘<’ token ../../../source/scripting/JSConversions.h:179: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:180: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:183: error: expected initializer before ‘<’ token ../../../source/scripting/JSConversions.h:184: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:185: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:195: error: expected initializer before ‘<’ token ../../../source/scripting/JSConversions.h:196: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:197: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:200: error: expected initializer before ‘<’ token ../../../source/scripting/JSConversions.h:201: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:202: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:211: error: ‘jsval’ does not name a type ../../../source/scripting/JSConversions.h:212: error: expected `)' before ‘v’ ../../../source/scripting/JSConversions.h:214: error: expected constructor, destructor, or type conversion before ‘ToJSVal’ ../../../source/scripting/JSConversions.h:218: error: ‘jsval’ does not name a type In file included from ../../../source/network/NetMessages.h:31,

from ../../../source/network/NetMessage.h:38, from ../../../source/network/Network.h:68, from ../../../source/network/NetSession.h:30, from ../../../source/network/NetClient.h:30, from ../../../source/network/NetClient.cpp:28:

../../../source/scripting/JSSerialization.h:37: error: ‘jsval’ does not name a type ../../../source/scripting/JSSerialization.h:42: error: expected `)' before ‘data’ ../../../source/scripting/JSSerialization.h:56: error: expected type-specifier before ‘jsval’ ../../../source/scripting/JSSerialization.h: In member function ‘jsval_ser::operator CStr8() const’: ../../../source/scripting/JSSerialization.h:62: error: ‘ToPrimitive’ was not declared in this scope ../../../source/scripting/JSSerialization.h:62: error: expected primary-expression before ‘>’ token ../../../source/scripting/JSSerialization.h:62: error: ‘m_data’ was not declared in this scope ../../../source/scripting/JSSerialization.h: In member function ‘virtual size_t jsval_ser::GetSerializedLength() const’: ../../../source/scripting/JSSerialization.h:76: error: ‘ToPrimitive’ was not declared in this scope ../../../source/scripting/JSSerialization.h:76: error: expected primary-expression before ‘>’ token ../../../source/scripting/JSSerialization.h:76: error: ‘m_data’ was not declared in this scope ../../../source/scripting/JSSerialization.h: In member function ‘virtual uint8_t* jsval_ser::Serialize(uint8_t*) const’: ../../../source/scripting/JSSerialization.h:92: error: ‘m_data’ was not declared in this scope ../../../source/scripting/JSSerialization.h:92: error: ‘JSVAL_TO_INT’ was not declared in this scope ../../../source/scripting/JSSerialization.h:103: error: ‘m_data’ was not declared in this scope ../../../source/scripting/JSSerialization.h:103: error: ‘JSVAL_TO_DOUBLE’ was not declared in this scope ../../../source/scripting/JSSerialization.h:108: error: ‘ToPrimitive’ was not declared in this scope ../../../source/scripting/JSSerialization.h:108: error: expected primary-expression before ‘>’ token ../../../source/scripting/JSSerialization.h:108: error: ‘m_data’ was not declared in this scope ../../../source/scripting/JSSerialization.h: In member function ‘virtual const uint8_t* jsval_ser::Deserialize(const uint8_t*, const uint8_t*)’: ../../../source/scripting/JSSerialization.h:122: error: ‘m_data’ was not declared in this scope ../../../source/scripting/JSSerialization.h:122: error: ‘JSVAL_FALSE’ was not declared in this scope ../../../source/scripting/JSSerialization.h:125: error: ‘JSVAL_TRUE’ was not declared in this scope ../../../source/scripting/JSSerialization.h:131: error: ‘INT_TO_JSVAL’ was not declared in this scope ../../../source/scripting/JSSerialization.h:141: error: ‘uint32’ was not declared in this scope ../../../source/scripting/JSSerialization.h:141: error: expected `;' before ‘_v1’ ../../../source/scripting/JSSerialization.h:141: error: expected `;' before ‘_v2’ ../../../source/scripting/JSSerialization.h:141: error: ‘_v1’ was not declared in this scope ../../../source/scripting/JSSerialization.h:141: error: ‘_v1’ was not declared in this scope ../../../source/scripting/JSSerialization.h:141: error: ‘_v1’ was not declared in this scope ../../../source/scripting/JSSerialization.h:141: error: ‘_v1’ was not declared in this scope ../../../source/scripting/JSSerialization.h:141: error: ‘_v2’ was not declared in this scope ../../../source/scripting/JSSerialization.h:141: error: ‘_v2’ was not declared in this scope ../../../source/scripting/JSSerialization.h:141: error: ‘_v2’ was not declared in this scope ../../../source/scripting/JSSerialization.h:141: error: ‘_v2’ was not declared in this scope ../../../source/scripting/JSSerialization.h:141: error: ‘_v1’ was not declared in this scope ../../../source/scripting/JSSerialization.h:141: error: ‘_v2’ was not declared in this scope ../../../source/scripting/JSSerialization.h:142: error: ‘class ScriptingHost’ has no member named ‘GetContext’ ../../../source/scripting/JSSerialization.h:142: error: ‘JS_NewDoubleValue’ was not declared in this scope ../../../source/scripting/JSSerialization.h:149: error: ‘ToJSVal’ was not declared in this scope ../../../source/scripting/JSSerialization.h:149: error: expected primary-expression before ‘>’ token In file included from ../../../source/network/Network.h:68,

from ../../../source/network/NetSession.h:30, from ../../../source/network/NetClient.h:30, from ../../../source/network/NetClient.cpp:28:

../../../source/network/NetMessage.h: At global scope: ../../../source/network/NetMessage.h:165: error: ‘JSContext’ has not been declared ../../../source/network/NetMessage.h:166: error: ‘uintN’ has not been declared ../../../source/network/NetMessage.h:167: error: ‘jsval’ has not been declared In file included from ../../../source/scripting/SynchedJSObject.h:54,

from ../../../source/ps/Player.h:22, from ../../../source/ps/GameAttributes.h:21, from ../../../source/network/NetSession.h:32, from ../../../source/network/NetClient.h:30, from ../../../source/network/NetClient.cpp:28:

../../../source/scripting/ScriptableObject.h:37: error: ‘jsval’ does not name a type ../../../source/scripting/ScriptableObject.h:38: error: ‘JSContext’ has not been declared ../../../source/scripting/ScriptableObject.h:38: error: ‘jsval’ has not been declared ../../../source/scripting/ScriptableObject.h:47: error: expected identifier before ‘*’ token ../../../source/scripting/ScriptableObject.h:47: error: ‘JSContext’ has not been declared ../../../source/scripting/ScriptableObject.h:47: error: ISO C++ forbids declaration of ‘jsval’ with no type ../../../source/scripting/ScriptableObject.h:47: error: ‘jsval’ declared as function returning a function ../../../source/scripting/ScriptableObject.h:48: error: ‘JSContext’ has not been declared ../../../source/scripting/ScriptableObject.h:54: error: ‘JSContext’ has not been declared ../../../source/scripting/ScriptableObject.h:74: error: ‘jsval’ does not name a type ../../../source/scripting/ScriptableObject.h:78: error: ‘JSContext’ has not been declared ../../../source/scripting/ScriptableObject.h:78: error: ‘jsval’ has not been declared ../../../source/scripting/ScriptableObject.h:96: error: ‘jsval’ does not name a type ../../../source/scripting/ScriptableObject.h:100: error: ‘JSContext’ has not been declared ../../../source/scripting/ScriptableObject.h:100: error: ‘jsval’ has not been declared ../../../source/scripting/ScriptableObject.h:112: error: ‘GetFn’ in class ‘IJSObject’ does not name a type ../../../source/scripting/ScriptableObject.h:118: error: expected `)' before ‘Getter’ ../../../source/network/NetClient.cpp:699: error: expected `}' at end of input ../../../source/network/NetClient.cpp:699: error: expected unqualified-id at end of input make[1]: * [obj/network_Debug/NetClient.o] Error 1 make: * [network] Error 2 make: * Waiting for unfinished jobs.... In file included from ../../../source/scripting/SpiderMonkey.h:54,

from ../../../source/pch/engine/precompiled.h:30, from ../../../source/pch/engine/precompiled.cpp:18:

../../../source/scripting/JSUtil.h:20: error: ‘jsval’ does not name a type make[1]: * [obj/engine_Debug/precompiled.h.gch] Error 1 make: * [engine] Error 2

I am not a coder, but I've compiled a number of programs successfully. If there's a simple thing I'm doing wrong, let me know.

#292 fixed Handle model-loading failures gracefully Philip Taylor
Description

If a model fails to load (e.g. the Collada library wasn't compiled), the code currently prints an error message and returns null and then the game crashes a bit later. It should be handled better, e.g. not crashing and not rendering the unit, or (preferably) replacing the model with some kind of 'error' mesh so the problem is clearly visible.

#293 fixed Lots of printf format string errors Quentin Pradet Philip Taylor
Description

From the annotations added in r7072:

../../../source/ps/Interact.cpp: In function ‘LibError LoadUnitUIThunk(const VfsPath&, const FileInfo&, uintptr_t)’:                                               
../../../source/ps/Interact.cpp:985: warning: too many arguments for format                                                                                        
../../../source/ps/Filesystem.cpp: In member function ‘PSRETURN CVFSFile::Load(const VfsPath&)’:                                                                   
../../../source/ps/Filesystem.cpp:60: warning: format ‘%d’ expects type ‘int’, but argument 6 has type ‘LibError’                                                  
../../../source/ps/ConfigDB.cpp: In member function ‘bool CConfigDB::Reload(EConfigNamespace)’:                                                                    
../../../source/ps/ConfigDB.cpp:287: warning: format ‘%lld’ expects type ‘long long int’, but argument 6 has type ‘LibError’                                       
../../../source/ps/XML/XMLWriter.cpp: In member function ‘bool XMLWriter_File::StoreVFS(const char*)’:
../../../source/ps/XML/XMLWriter.cpp:92: warning: format ‘%d’ expects type ‘int’, but argument 5 has type ‘LibError’
../../../source/simulation/EntityTemplate.cpp: In member function ‘bool CEntityTemplate::LoadXml(const CStr8&)’:
../../../source/simulation/EntityTemplate.cpp:320: warning: use of ‘h’ length modifier with ‘s’ type character
../../../source/renderer/Renderer.cpp: In static member function ‘static CRenderer::RenderPath CRenderer::GetRenderPathByName(const CStr8&)’:
../../../source/renderer/Renderer.cpp:713: warning: use of ‘h’ length modifier with ‘s’ type character
../../../source/simulation/Technology.cpp: In member function ‘bool CTechnology::LoadElEffect(XMBElement, CXeromyces&, const CStr8&)’:
../../../source/simulation/Technology.cpp:300: warning: use of ‘h’ length modifier with ‘s’ type character
../../../source/gui/CGUI.cpp: In member function ‘void CGUI::LoadXmlFile(const std::string&)’:
../../../source/gui/CGUI.cpp:1111: warning: format ‘%s’ expects type ‘char*’, but argument 6 has type ‘PSRETURN’
../../../source/gui/CGUI.cpp: In member function ‘void CGUI::Xeromyces_ReadObject(XMBElement, CXeromyces*, IGUIObject*)’:
../../../source/gui/CGUI.cpp:1398: warning: too few arguments for format
../../../source/lib/ogl.cpp: In function ‘void dump_gl_error(GLenum)’:
../../../source/lib/ogl.cpp:276: warning: format ‘%04f’ expects type ‘double’, but argument 2 has type ‘GLenum’
../../../source/scripting/ScriptGlue.cpp: In function ‘JSBool GetBuildTimestamp(JSContext*, JSObject*, uintN, jsval*, jsval*)’:
../../../source/scripting/ScriptGlue.cpp:1070: warning: unknown conversion type character ‘w’ in format
../../../source/scripting/ScriptGlue.cpp:1070: warning: too many arguments for format
../../../source/scripting/ScriptGlue.cpp:1079: warning: unknown conversion type character ‘w’ in format
../../../source/scripting/ScriptGlue.cpp:1079: warning: too many arguments for format
../../../source/scripting/ScriptGlue.cpp: In function ‘JSBool GetTrigger(JSContext*, JSObject*, uintN, jsval*, jsval*)’:
../../../source/scripting/ScriptGlue.cpp:1381: warning: unknown conversion type character ‘w’ in format
../../../source/scripting/ScriptGlue.cpp:1381: warning: too many arguments for format
../../../source/lib/res/graphics/ogl_shader.cpp: In function ‘LibError Ogl_Shader_reload(Ogl_Shader*, const VfsPath&, Handle)’:
../../../source/lib/res/graphics/ogl_shader.cpp:157: warning: use of ‘h’ length modifier with ‘s’ type character
../../../source/lib/res/graphics/ogl_shader.cpp:173: warning: use of ‘h’ length modifier with ‘s’ type character
../../../source/lib/res/graphics/ogl_shader.cpp: In function ‘LibError do_load_shader(Ogl_Program*, const VfsPath&, Handle, const CXeromyces&, const XMBElement&)’:
../../../source/lib/res/graphics/ogl_shader.cpp:279: warning: use of ‘h’ length modifier with ‘s’ type character
../../../source/lib/res/graphics/ogl_shader.cpp:287: warning: use of ‘h’ length modifier with ‘s’ type character
../../../source/lib/res/graphics/ogl_shader.cpp:295: warning: use of ‘h’ length modifier with ‘s’ type character
../../../source/lib/res/graphics/ogl_shader.cpp: In function ‘LibError Ogl_Program_reload(Ogl_Program*, const VfsPath&, Handle)’:
../../../source/lib/res/graphics/ogl_shader.cpp:348: warning: use of ‘h’ length modifier with ‘s’ type character
../../../source/lib/res/graphics/ogl_shader.cpp:369: warning: use of ‘h’ length modifier with ‘s’ type character
../../../source/lib/res/graphics/ogl_shader.cpp:378: warning: use of ‘h’ length modifier with ‘s’ type character
../../../source/lib/res/graphics/ogl_shader.cpp:394: warning: use of ‘h’ length modifier with ‘s’ type character
../../../source/lib/res/graphics/ogl_shader.cpp:400: warning: use of ‘h’ length modifier with ‘s’ type character
../../../source/lib/sysdep/os/unix/x/x.cpp: In function ‘wchar_t* sys_clipboard_get()’:
../../../source/lib/sysdep/os/unix/x/x.cpp:173: warning: format ‘%d’ expects type ‘int’, but argument 4 has type ‘long unsigned int’
../../../source/lib/sysdep/os/unix/x/x.cpp:173: warning: format ‘%d’ expects type ‘int’, but argument 6 has type ‘long unsigned int’
../../../source/lib/sysdep/os/unix/x/x.cpp:184: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘Atom’
../../../source/lib/sysdep/os/unix/x/x.cpp:184: warning: format ‘%d’ expects type ‘int’, but argument 4 has type ‘Atom’
#294 fixed EMULATE_SECURE_CRT sprintf_s doesn't match spec Philip Taylor
Description

secure_crt.cpp emulates sprintf_s, vsprintf_s, swprintf_s, vswprintf_s using the snprintf functions. These have the wrong behaviour when the buffer is too short (based on MSDN's documentation), and ought to be made consistent.

#295 fixed Picking units doesn't work as expected due to incorrect bounding box Jan Wassenberg
Description

Problem: 'picking' (selecting via cursor) units doesn't work as expected because the bounding box is calculated from the primary geometry of the entity and doesn't include props. Example: celt trader; clicking on either horse or rider should select the unit but currently doesn't.

(Jason's brief explanation of actor and props:) The way most of our actors in the game works is... there is geometry and there are various 'nodes' that are throughout the model - they can be parented to a bone, or in the cases of most static meshes - parented to the 0,0,0 coordinate. These nodes have a name and in the actor xml file it says.. associate this prop point (node) to display this actor (then it points to another actor) Example: <prop actor="props/units/heads/rome_monte_a.xml" attachpoint="helmet"/> The prop actor also has a model; for example.. within that prop actor it defines: <mesh>props/helmet/rome_helmet_d.pmd</mesh>

To solve this, I'd first recommend using Atlas to create an otherwise empty map with a celt trader to serve as a test. The picking/selection code itself is ok, what we need to do is change the bounding box to include props and then the selection will be as desired.

"props" are in turn actors containing a CModel, which again can have props. In this case (trader) I think the rider is a prop.

CModel has a CalcBounds which constructs bounds from all model vertices (possibly also looping over the animation). What we need to do is also recurse over m_Props and expand the parent's bounds to that of the child prop. these "bounds" (m_ObjectBounds) are CBound objects, which are expanded via operator+= (allowing both bounds or a vector as argument). suggestion for what to do: 1) make CalcObjectBounds and CalcAnimatedObjectBound take a parameter of the bounding box to calculate (or expand.. in that case, no longer do SetEmpty there) 2) CalcBounds (the master function that dispatches to one of the above impl functions) must be recursive, expanding the bounds for each prop's bound (m_Props[i].m_Model->ObjectBounds)

#296 fixed Infinite Field munky
Description

http://img30.imageshack.us/img30/2858/infintefield.jpg

The amount of the field went to 588.9999 which made it infinite. It was just this one and the others around it was working fine.

  • cant seem to change priority from major.
#297 fixed alSourceUnqueueBuffers fails with "invalid value" Jan Wassenberg
Description

This has been reported on two Linux systems, both running OpenALsoft. To narrow down the cause, I added some printfs [source ID, is it a valid source name, #processed buffers]:

ade7938 1 0
ade7938 1 0
ade7938 1 0
ade7938 1 0
ade7938 1 0
ade7938 1 0
ade7938 1 0
ade7938 1 0
ade7938 1 0
ade7938 1 0
adcede0 1 1

so the first time it's actually wanting to unqueue a buffer, OpenAL reports an error. After continuing from the error, it doesn't come up again during the program run.

alSourceUnqueueBuffers fails with "invalid value" iff a buffer cannot be unqueued because it's still playing. However what we do is ask how many buffers have finished before removing exactly that many. I have no idea what could be causing this, especially because the Windows OpenAL implementation does not raise this error. Help is very welcome.

#298 fixed Batch Training (Training queue) Michael D. Hafer
Description

The concept of "Batch" training:

Essentially training many units (of a same entity type) at once. This would be in multiples of 5. So basically a player can train anywhere from 5-30 units at once and once the batch is done training, ideally when the formations have been implemented, all the units in that batch (say: 20 hoplites) should march to the rally point as a pre-grouped battalion in formation.

We were thinking there could be an economy of scale applied as well, akin to gaining a discount in either unit training cost or training time (or both) the more that you queue into one batch.

So, the task can be broken down into multiple components:

A.) Implementing the batching itself. The player procedure to queue a batch should be the shift-click the unit icon, each shift-click adding 5 units to the batch up to 30 units. If the shift key is let go at any time that batch is done queuing. Any further shift-clicking would create a new batch.

B.) The economy of scale discount. The formula for the discount could follow a simple bell curve, so that 15-unit batches would be ideal, but the player can continue to queue more units into the batch, up to 30, and still get a discount, but not as lucrative. Whether the discount is in train time or cost (or both) should be made available to do based upon testing.

C.) Grouped into a Formation. This is contingent upon formations being implemented first. The newly created batch, once it is done training, should proceed to the rally point as a grouped formation of units.

#305 fixed Naval battle system Matthijs de Rijk
Description

Every faction except the Iberians has combat ships. there are three types of ships:

  • Bireme This is the smallest battle ship in the game. It's slow, and has not much ramming power, altough they can damage a trireme critical. The manouvrebility is quite high.
  • Trireme The most common ship in use. It's the fastest type of all ships, wich makes an ultimate ramming power. A trireme can hunt down another trireme when at highest attack speed.
  • Quinquireme The biggest ship in the game. This massive ship is as fast as the bireme. But due their mass they crack other smaller ships like planks. they turn very slow and have a low acceleration. Only the Romans and the Carthaginians have this giant.

The Punic(Carthaginian), Hellenes, Roman and Phoenican(Persian) ships in the game will be able to ram each other. The celtic "trireme" can only use range, but they have a high armor level.

#307 fixed Program received signal SIGABRT, Aborted. BadassTester
Description

Hello! I was playing the "Badlands" map. crashed after sending units to an unclaimed settlement

pyrogenesis_dbg: /usr/include/boost/shared_ptr.hpp:315: T* boost::shared_ptr<T>::operator->() const [with T = CTerrainProperties]: Assertion `px != 0' failed.

Program received signal SIGABRT, Aborted.


(gdb) backtrace
#0  0xb7f7a410 in __kernel_vsyscall ()
#1  0xb7788085 in raise () from /lib/tls/i686/cmov/libc.so.6
#2  0xb7789a01 in abort () from /lib/tls/i686/cmov/libc.so.6
#3  0xb778110e in __assert_fail () from /lib/tls/i686/cmov/libc.so.6
#4  0x083747c9 in boost::shared_ptr<CTerrainProperties>::operator-> (this=0xbf9b305c) at /usr/include/boost/shared_ptr.hpp:315
#5  0x08374647 in CTerrain::IsPassable (this=0x9584120, loc=@0xbf9b3130, entity=@0xbf9b30f2) at ../../../source/graphics/Terrain.cpp:117
#6  0x0834c316 in AStarGoalLowLevel::IsPassable (this=0x8cf4558, loc=@0xbf9b3130, entity=@0xbf9b3140) at ../../../source/simulation/AStarEngine.cpp:508
#7  0x0834c1f1 in AStarGoalLowLevel::GetNeighbors (this=0x8cf4558, loc=@0xb549760, entity=@0xbf9b31ba) at ../../../source/simulation/AStarEngine.cpp:543
#8  0x0834cf4a in CAStarEngine::FindPath (this=0x8cf4438, src=@0xbf9b3278, dest=@0xbf9b32e4, entity=@0xbf9b328c, radius=0)
    at ../../../source/simulation/AStarEngine.cpp:234
#9  0x082f5f57 in CPathfindEngine::RequestLowLevelPath (this=0x8cf4438, entity=@0xbf9b3302, destination=@0xbf9b32e4, contact=false, radius=0, 
    orderSource=CEntityOrder::SOURCE_PLAYER) at ../../../source/simulation/PathfindEngine.cpp:533
#10 0x083478ab in CEntity::ProcessGotoWaypoint (this=0xa840808, current=0x8cf7a70, contact=false)
    at ../../../source/simulation/EntityStateProcessing.cpp:732
#11 0x082cc2d7 in CEntity::UpdateOrders (this=0xa840808, timestep=300) at ../../../source/simulation/Entity.cpp:582
#12 0x082cc940 in CEntity::Update (this=0xa840808, timestep=300) at ../../../source/simulation/Entity.cpp:457
#13 0x082b65cc in CEntityManager::UpdateAll (this=0x9588b80, timestep=300) at ../../../source/simulation/EntityManager.cpp:450
#14 0x083162f2 in CSimulation::Simulate (this=0x9561030) at ../../../source/simulation/Simulation.cpp:179
#15 0x083166e3 in CSimulation::Update (this=0x9561030, frameTime=0.033608004450798035) at ../../../source/simulation/Simulation.cpp:106
#16 0x0829f6a5 in CGame::Update (this=0x9588898, deltaTime=0.033608004450798035, doInterpolate=true) at ../../../source/ps/Game.cpp:230
#17 0x0820f421 in Frame () at ../../../source/main.cpp:271
#18 0x0820f882 in RunGameOrAtlas (argc=1, argv=0xbf9b3774) at ../../../source/main.cpp:397
#19 0x0820f906 in main (argc=1, argv=0xbf9b3774) at ../../../source/main.cpp:410
#308 fixed (testing the keyword seach feature) Jan Wassenberg
Description

Please ignore.

#311 fixed Program received signal SIGSEGV, Segmentation fault. BadassTester
Description

Hello again.. I was playing the "Latinum" map. Crashed after trying to build a building (dock) on the very border of the map.

#0  0x08374786 in CRenderableObject::SetDirty (this=0x0, dirtyflags=2)
    at ../../../source/graphics/RenderableObject.h:82
#1  0x083732e7 in CTerrain::FlattenArea (this=0x9578708, x0=62.6870041, 
    x1=80.6870041, z0=564.263, z1=582.263)
    at ../../../source/graphics/Terrain.cpp:467
#2  0x082dc932 in CEntity::FlattenTerrain (this=0xc102d98)
    at ../../../source/simulation/EntityScriptInterface.cpp:932
#3  0x082e84ea in CNativeComplexFunction<CEntity, false, jsval_t, &(CEntity::FlattenTerrain(JSContext*, unsigned int, int*))>::JSFunction (cx=0x8723558, 
    obj=0xc0f8c50, argc=0, argv=0xc1d5860, rval=0xbfa566b0)
    at ../../../source/scripting/ScriptableComplex.inl:468
#4  0x085277cd in js_Invoke (cx=0x8723558, argc=0, flags=0) at jsinterp.c:1187
#5  0x0853838e in js_Interpret (cx=0x8723558, pc=0xa385fd0 ":", 
    result=0xbfa573d8) at jsinterp.c:3586
#6  0x08527843 in js_Invoke (cx=0x8723558, argc=1, flags=2) at jsinterp.c:1207
#7  0x08527b9e in js_InternalInvoke (cx=0x8723558, obj=0xb24e780, 
    fval=156876080, flags=0, argc=1, argv=0xbfa5750c, rval=0xbfa57510)
    at jsinterp.c:1284
#8  0x084f0c98 in JS_CallFunction (cx=0x8723558, obj=0xb24e780, fun=0x8a54860, 
    argc=1, argv=0xbfa5750c, rval=0xbfa57510) at jsapi.c:4146
#9  0x082c0707 in CScriptObject::DispatchEvent (this=0xa344f2c, 
    Context=0xb24e780, evt=0xbfa57a5c)
    at ../../../source/simulation/ScriptObject.cpp:126
---Type <return> to continue, or q <return> to quit---
#10 0x0832803c in IEventTarget::_DispatchEvent (this=0xa344cf0, 
    evt=0xbfa57a5c, target=0xaebbff8)
    at ../../../source/scripting/DOMEvent.cpp:49
#11 0x083281b9 in IEventTarget::_DispatchEvent (this=0xa5792e8, 
    evt=0xbfa57a5c, target=0xaebbff8)
    at ../../../source/scripting/DOMEvent.cpp:66
#12 0x083281b9 in IEventTarget::_DispatchEvent (this=0xa6ee1d8, 
    evt=0xbfa57a5c, target=0xaebbff8)
    at ../../../source/scripting/DOMEvent.cpp:66
#13 0x083281b9 in IEventTarget::_DispatchEvent (this=0xa6ed0f8, 
    evt=0xbfa57a5c, target=0xaebbff8)
    at ../../../source/scripting/DOMEvent.cpp:66
#14 0x083281b9 in IEventTarget::_DispatchEvent (this=0xa6ec3e0, 
    evt=0xbfa57a5c, target=0xaebbff8)
    at ../../../source/scripting/DOMEvent.cpp:66
#15 0x083281b9 in IEventTarget::_DispatchEvent (this=0xa6eb648, 
    evt=0xbfa57a5c, target=0xaebbff8)
    at ../../../source/scripting/DOMEvent.cpp:66
#16 0x083281b9 in IEventTarget::_DispatchEvent (this=0xa6ea918, 
    evt=0xbfa57a5c, target=0xaebbff8)
    at ../../../source/scripting/DOMEvent.cpp:66
#17 0x083281b9 in IEventTarget::_DispatchEvent (this=0xa6e9c78, 
    evt=0xbfa57a5c, target=0xaebbff8)
---Type <return> to continue, or q <return> to quit---
    at ../../../source/scripting/DOMEvent.cpp:66
#18 0x083281b9 in IEventTarget::_DispatchEvent (this=0xaebbff8, 
    evt=0xbfa57a5c, target=0xaebbff8)
    at ../../../source/scripting/DOMEvent.cpp:66
#19 0x08328339 in IEventTarget::DispatchEvent (this=0xaebbff8, evt=0xbfa57a5c)
    at ../../../source/scripting/DOMEvent.cpp:86
#20 0x0834868f in CEntity::ProcessContactActionNoPathing (this=0xaebbf90, 
    current=0xc1749c8, timestep_millis=300)
    at ../../../source/simulation/EntityStateProcessing.cpp:516
#21 0x082cc2bc in CEntity::UpdateOrders (this=0xaebbf90, timestep=300)
    at ../../../source/simulation/Entity.cpp:577
#22 0x082cc968 in CEntity::Update (this=0xaebbf90, timestep=300)
    at ../../../source/simulation/Entity.cpp:457
#23 0x082b65cc in CEntityManager::UpdateAll (this=0x95ab9e0, timestep=300)
    at ../../../source/simulation/EntityManager.cpp:450
#24 0x0831631a in CSimulation::Simulate (this=0x9581140)
    at ../../../source/simulation/Simulation.cpp:179
#25 0x0831670b in CSimulation::Update (this=0x9581140, 
    frameTime=0.023770732805132866)
    at ../../../source/simulation/Simulation.cpp:106
#26 0x0829f6a5 in CGame::Update (this=0x95aab10, 
    deltaTime=0.023770732805132866, doInterpolate=true)
    at ../../../source/ps/Game.cpp:230
---Type <return> to continue, or q <return> to quit---
#27 0x0820f421 in Frame () at ../../../source/main.cpp:271
#28 0x0820f882 in RunGameOrAtlas (argc=1, argv=0xbfa58014)
    at ../../../source/main.cpp:397
#29 0x0820f906 in main (argc=1, argv=0xbfa58014)
    at ../../../source/main.cpp:410



#313 fixed Handle unsupported S3TC texture compression more gracefully Philip Taylor
Description

Currently, non-support of S3TC causes ugly unhelpful output like in #306. (This particularly matters on Linux, where (I think) non-support is the default for non-proprietary drivers.)

The message should be displayed in a much more user-friendly way (perhaps a dialog box? or perhaps it should carry on loading the game and display a warning on the menu screen?).

Also, the message should help people resolve the problem - on Linux, it should tell them to run driconf and enable the "enable S3TC texture compression" option. (That option makes the driver lie that it fully supports S3TC, when actually it only supports decompression (which is all we need).)

Also, maybe we could detect the situation where we're running on Linux and the driver really does support decompression even though it doesn't claim to fully support S3TC, since the game should actually run fine with S3TC in that case and we don't need to tell the user to do anything.

#314 fixed GUI - fix all settings in components sluzky sluzky
Description

There are some GUI components that get called for some missing settings, this could be a result of couple of reasons:

  • Actual settings that are missing from the component
  • Faulty calling to those settings

Another thing could be that the call to the settings is OK.
Meaning, the code is trying to probe the component for the wanted setting, and if it doesn't find it, then it just doesn't use that feature for that component.

To find the faulty settings run the program, open the main log (mainlog.html), and follow the warnings.

#320 fixed Crackling Fire Sam Assoum Matt Sherman
Description

Universal Fire Crackling Sound SDD# 177

Specifications

MONO
5 Seconds
Non-Looping

5 sounds req'd

#341 fixed Siege Unit Select Matt Sherman Matt Sherman
Description

Seige Unit Select SDD# 295

Specifications

MONO
2-Seconds
Non-Looping

5 Sounds Req'd

#342 fixed Seige Unit Destruction - Generic Andy Matt Sherman
Description

Onager Destruction SDD# 296

Specifications

MONO
2-Seconds
Non-Looping

5 Sounds Req'd

#352 fixed Destruction - Generic open Matt Sherman
Description

Destruction - Gate SDD# 399

Specifications

MONO
2-Seconds
Non-Looping

5 Sounds Req'd

#400 fixed CStr should use wchar.h Philip Taylor
Description

ps/CStr.cpp has its own UTF-8 encoding/decoding logic in ToUTF8/FromUTF8. The implementation should be changed to use the functions in lib/wchar.h, to remove the duplication of functionality. (The CStr API ought to remain unchanged.)

#402 fixed Clean up GUItypes.h Lars Kemmann Philip Taylor
Description

gui/GUItypes.h does some stupid trick with Perl (which I used to think was clever) to automatically regenerate its own code. It should be simplified by removing all the Perl and just leaving the TYPE(...) macro lines, and leaving the GUITYPE_IGNORE_CGUISpriteInstance bit (which is used in GUIutil.cpp; but get rid of the other IGNOREs).

#403 fixed crashlog.txt goes in non-writable directory Philip Taylor
Description

On Linux, crashlog.txt by default seems to get put in binaries/system/ which is often not a writable directory. It should probably go in ~/.config/0ad/logs/ (and print a message telling the user where it is).

#404 fixed Makefile build system should have pyrogenesis/test targets depend on Collada Itms Philip Taylor
Description

The Collada target is a run-time dependency for pyrogenesis and test, so it ought to get built automatically when people run make pyrogenesis and make test. Currently it doesn't.

It's not a build-time dependency for the executables, and shouldn't be used when linking, so Premake's package.links does not seem to be a suitable place to put it. Is there another way? or maybe Premake needs to be patched to support non-linking dependencies?

#405 fixed LOS manager is slow Philip Taylor
Description

Profiler indicates the game is spending ~14% of its process's cycles in CLOSManager::GetStatus and CLOSManager::GetUnitStatus, when sitting idle in the default map, which is far too much.

#406 fixed Serialization of standard JS object types historic_bruno Philip Taylor
Description

To avoid unnecessarily restricting script code, it should be possible for script components to use new Number(42), new String("foo"), etc, and have them correctly (de)serialized with no information loss. MDC has a list of the standard classes, and the simple common ones should be supported.

The code for this is currently in CBinarySerializer::HandleScriptVal

#407 fixed Serialization of script class objects historic_bruno Philip Taylor
Description

It should be possible for scripts to create and use classes (function Thing(x) { this.x = x; }; Thing.prototype.foo = ...; y = new Thing(1); etc), and have them correctly (de)serialized.

This is probably infeasible in the general case, but it would be useful to support the simple case: classes are defined as top-level functions (not defined or changed at run-time inside other functions), no prototype chains, etc, so the code can simply serialize the object like a plain Object plus a class name that gets looked up in the appropriate script's scope when deserializing.

#409 fixed Simplify C++ QueryInterface syntax Philip Taylor Philip Taylor
Description

Currently C++ components have to say:

ICmpPosition* cmpPosition = static_cast<ICmpPosition*>
  (context.GetComponentManager().QueryInterface(GetEntityId(), IID_Position));

which is horrid.

JS just says

var cmpPosition = Engine.QueryInterface(this.entity, IID_Position);

which is nicer. C++ has got to have more type declarations, and there's tradeoffs with other desirable features of the code, but it should be possible to do better than the current syntax.

#411 fixed Support creation of entities in Atlas Philip Taylor Philip Taylor
Description

Atlas needs to be updated to support the new entity system. In particular, the object creation listbox needs to be populated with entities from the new system, and it needs to create them properly (along with the static preview before the object is placed, possibly by extracting just its Visual component somehow?)

#412 fixed Saving/loading maps Philip Taylor Philip Taylor
Description

The map saving/loading code needs to deal with the new entity system. It should just save the template, position, orientation, player ID, and random variation selections, for each entity.

#413 fixed Automatic validation of entity templates Philip Taylor Philip Taylor
Description

Entity templates are a kind of tree structure, defined by a series of XML files (each inheriting from a parent file and overriding some parts). To save component code from having to worry about detecting and reporting invalid input (missing fields, incorrect data types, etc) there should be a centralised validation system. Each component reports its requirements, and the validator checks each template against them.

It would probably be sensible to use libxml2's RelaxNG support for this, since it provides a reasonable schema language for checking the structure and data types. The entity template can be serialised into XML (after applying all the inheritance rules etc) and then validated. If validation fails then the entity won't be loaded. It'd be particularly nice to use the RelaxNG Compact syntax, but libxml2 doesn't support that (it just has a half-finished RNC->RNG converter in its source control repository that is of unknown quality), so I don't know how feasible that is.

For efficiency (if it turns out that it matters), the validation status of entity templates could perhaps be cached at the same time as they're converted to XMB.

#414 fixed wcscasecmp does not exist on OS X Philip Taylor
Description

We use wcscasecmp but it does not exist on OS X, causing errors. We should either define that function ourselves on OS X (possibly a bad idea since it might conflict with a system version in the future, and we would not bother with the locale support that the standard expects), or define a similar function with a new name (probably in lib/wchar.cpp, just doing ASCII-case-insensitive comparisons) and use that on all platforms.

#415 fixed Script component testing framework Philip Taylor Philip Taylor
Description

There needs to be an easy way to do unit testing of script components.

The tests themselves should be written as scripts. Each component should be tested in isolation, with all engine functionality and other components probably implemented in the script as mock objects, so that the test cases don't require complex scene setups.

It should be integrated with the current CxxTest system, but maybe it would also be useful to be able to run the tests as part of the normal executable, so they can be used by non-C++ programmers and integrated with the debugger (#410).

#416 fixed Native component testing framework Philip Taylor Philip Taylor
Description

Similar to #415, except for native (C++) components. The tests will need to be written in C++ themselves. Mock objects might be much more painful to do; not sure what the best solution is.

#421 fixed Add a review request flag to Trac Philip Taylor
Description

Add a review request flag to Trac

#423 fixed Switch from CppDoc to Doxygen Philip Taylor
Description

CppDoc is old and unmaintained and has bugs and sometimes crashes and doesn't support JS. Doxygen seems to work better, and is more common, and accepts a similar comment style to CppDoc. So we should probably move to Doxygen.

#424 fixed Check threading compilation on OS X Philip Taylor
Description

r7193 changed how we link with pthreads. First thing to check (by testing the build): does the -pthread option work on OS X? Second thing: premake.lua defines _REENTRANT explicitly on OS X (because it wasn't defined by the included headers); is that unnecessary now that we use -pthread?

#425 fixed CParamNode should not return NULL pointers André Puel Philip Taylor
Description

CParamNode::GetChild returns pointers which could be NULL (if the child doesn't exist). In theory that should never happen (template validation ought to catch the errors first), but it's fragile and crash-prone.

Instead, it should return a dummy CParamNode object (by reference) with a bool Ok() method to allow explicit checking of whether the child really existed. GetChild should return another dummy object, ToInt/ToString/etc should log an error message and return 0/""/etc.

#426 fixed Implement Position component Philip Taylor Philip Taylor
Description

Position is critical to a lot of things, and needs to be implemented. (This includes orientation, and some of these features, and needs to be designed with garrisoning in mind.)

#427 fixed Deadlock in Atlas Philip Taylor Philip Taylor
Description

(Haven't tried to reproduce.)

Did something to get a crash in the game, while loading a map, triggered by the MRU file list in editor. The GUI froze completely.

(thread 1)
#0  0x00007f227c59adc9 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0     
#1  0x00007f22752d6c7d in g_main_context_wait () from /usr/lib/libglib-2.0.so.0           
#2  0x00007f22752d8ee1 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0               
#3  0x00007f2276f96a07 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0                   
#4  0x00007f22780af478 in wxEventLoop::Run () from /usr/lib/libwx_gtk2u_core-2.8.so.0     
#5  0x00007f22781008e4 in wxDialog::ShowModal () from /usr/lib/libwx_gtk2u_core-2.8.so.0  
#6  0x00007f2278a9ca9b in wxDebugReportPreviewStd::Show () from /usr/lib/libwx_gtk2u_qa-2.8.so.0
#7  0x00007f22797adfb5 in AtlasDLLApp::OnFatalException (this=0x2da95f0) at ../../../source/tools/atlas/AtlasUI/Misc/DLLInterface.cpp:254
#8  0x00007f2277a1fe4c in wxFatalSignalHandler () from /usr/lib/libwx_baseu-2.8.so.0                                                     
#9  <signal handler called>                                                               

(thread 3)
#0  0x00007f227c59cc81 in sem_wait () from /lib/libpthread.so.0                                                          
#1  0x00000000008e0d9d in MessagePasserImpl::Query (this=0xf1fc20, qry=0x7f2272c75530) at ../../../source/tools/atlas/GameInterface/MessagePasserImpl.cpp:166
#2  0x00007f22797af050 in AtlasMessage::QueryMessage::Post (this=0x7f2272c75530) at ../../../source/tools/atlas/AtlasUI/ScenarioEditor/ScenarioEditor.cpp:796
#3  0x00007f22797b17a9 in ScenarioEditor::OpenFile (this=0x2ec5530, name=@0x7f2272c755d0) at ../../../source/tools/atlas/AtlasUI/ScenarioEditor/ScenarioEditor.cpp:581
#4  0x00007f22797b1943 in ScenarioEditor::OnMRUFile (this=0x2ec5530, event=@0x7f2272c756d0) at ../../../source/tools/atlas/AtlasUI/ScenarioEditor/ScenarioEditor.cpp:611
#5  0x00007f2277a1b7b9 in wxEvtHandler::ProcessEventIfMatches () from /usr/lib/libwx_baseu-2.8.so.0                                                                     
#6  0x00007f2277a1c993 in wxEventHashTable::HandleEvent () from /usr/lib/libwx_baseu-2.8.so.0                                                                           
#7  0x00007f2277a1ca87 in wxEvtHandler::ProcessEvent () from /usr/lib/libwx_baseu-2.8.so.0       
#428 fixed Generated Makefiles should not try to run wrong premake Philip Taylor
Description

The Makefiles generated by Premake try to detect when the .lua file changed, and re-run premake. That doesn't work because it's not the right path (and it might try to run an incorrect version of Premake instead). Maybe it could be changed to use the right relative path, but it would probably be safer to just print a message telling the user to run update-workspaces.sh again.

(We already use a custom fork of Premake so it'd be adequate to just hard-code these changes into Premake's source.)

#429 fixed Documentation and tests for new serialization, CParamNode code Philip Taylor Philip Taylor
Description

The new serialization and CParamNode code needs tests and documentation.

#431 fixed GUI integration Philip Taylor
Description

Need to have some integration between the GUI and simulation. Rather than try to get the 'real' GUI working, just concentrate for now on getting a rough approximation of the right data being shown and updated, and messages passing from the GUI back to the simulation.

#432 fixed Make error [2] Sylvain
Description

I got an error while compilation with AtlasUi in "obj/AtlasUI_Debug/DLLInterface.o"

Debug/precompiled.h ../../../source/tools/atlas/AtlasUI/Misc/DLLInterface.cpp ../../../source/tools/atlas/AtlasUI/Misc/DLLInterface.cpp:48:2: error: #error libxml2 must have threading support enabled make[1]: * [obj/AtlasUI_Debug/DLLInterface.o] Erreur 1 make: * [AtlasUI] Erreur 2

I'm on Ubuntu Karmic 9.10 tell me if you need more information this is my first report and my english sucks !

#434 fixed [PATCH] Don't render transparent objects twice philip Philip Taylor
Description

CRenderer::RenderSubmissions() calls RenderTransparentModels() twice, once before drawing water and once after, so that underwater transparent models will blend properly.

That seems like a terrible idea. We have lots of transparent objects (trees) so it will kill performance; and the overdraw makes transparent objects look different, so when we fix the performance bug all the art will be wrongly calibrated.

Possible temporary solution: don't support transparent objects underwater. Possible better solution: do the overdraw only on models which intersect the water plane. Ideal solution: render transparent objects correctly always (but I don't know how that'd be implemented).

#435 fixed Unit selection in GUI Philip Taylor Philip Taylor
Description

The new simulation system should let you select entities properly. Inputs should be similar to the old system - click to select, double-click to select all of type on screen, triple-click to select all of type in world, drag to select in area, shift to add to current selection, plus predefined groups, or something like that. Also it should handle own vs enemy units sensibly. See ps/Interact.cpp and gui/session_new/input.js.

#436 fixed Entity commands Philip Taylor Philip Taylor
Description

It needs to be possible for the GUI to push commands onto a command queue, which (eventually) will be network-synchronised, and then entities need to respond to the commands.

Also it needs some kind of security checking, so you can't move other players' units around.

Also it'd be nice if it could do things like play sounds immediately when the command is pushed, rather than after the network turn latency.

#437 fixed Document the process of writing components Philip Taylor Philip Taylor
Description

See SimulationSyntax. Need to extend it to cover writing script wrappers for interfaces, defining components in C++, and defining components in JS. Also need to cover all the simulation-specific things you might want to do inside a component (CmpPtr etc).

#438 fixed Add a jsval wrapper type Philip Taylor Philip Taylor
Description

Some of the code uses jsval as a template type parameter, particularly in ToJSVal/FromJSVal. Since jsval is a typedef of unsigned long (or something like that), it conflicts with the normal integer type and things will break. (The current code doesn't even compile on 32-bit Linux).

So there should be a special type (maybe a ScriptVal or something) which just wraps a jsval, and can be used as a distinct type for templates.

#441 fixed Run the GC occasionally Yves Philip Taylor
Description

JS won't automatically run the GC until it's run out of memory, which might be an inconvenient time to freeze the simulation. We should probably call it manually at regular intervals, when it's least likely to cause disruption (e.g. during a frame when it's not also busy doing all the simulation computation), to make it more predictable.

#442 fixed gui/common/functions_page_session.js(174): Error: Size only accepts strings or GUISize objects Andrei
Description

When I start a new game, it doesn't matter the map I get only a huge circle: here's a screenshot and a video with the bug. And the output of pyrogenesis_dbg:

TIMER| InitVfs: 6.28272 ms
TIMER| InitScripting: 2.62648 ms
TIMER| CONFIG_Init: 10.9219 ms
TIMER| write_sys_info: 1.12136 ms
TIMER| ps_console: 5.00708 ms
TIMER| ps_lang_hotkeys: 4.32716 ms
TIMER| common/setup.xml: 13.6533 ms
TIMER| common/styles.xml: 1.8468 ms
TIMER| common/sprite1.xml: 41.6079 ms
TIMER| common/init.xml: 14.132 ms
TIMER| pregame/mainmenu.xml: 75.108 ms
TIMER| common/global.xml: 1.93192 ms
TIMER| InitRenderer: 32.0211 ms
TIMER| SimulationInit: 2.881 ms
TIMER| Init_miscgamesection: 26.0635 ms
SND| alc_init: success, using ALSA Software
TIMER| common/setup.xml: 1.759 ms
TIMER| common/styles.xml: 2.11024 ms
TIMER| common/sprite1.xml: 81.4024 ms
TIMER| common/init.xml: 18.9571 ms
TIMER| loading/loading.xml: 3.22424 ms
TIMER| common/global.xml: 1.27692 ms
TIMER| common/setup.xml: 2.15872 ms
TIMER| common/styles.xml: 2.22512 ms
TIMER| common/sprite1.xml: 77.4852 ms
TIMER| common/init.xml: 23.1116 ms
TIMER| session/session.xml: 68.2606 ms
TIMER| session/manual.xml: 3.00416 ms
TIMER| common/global.xml: 10.2518 ms
ERROR: GUI page 'page_session.xml': Failed to call init() function
GAME STARTED, ALL INIT COMPLETE
gui/common/functions_page_session.js(174): Error: Size only accepts strings or GUISize objects
ERROR: JavaScript Error (gui/common/functions_page_session.js, line 174): Error: Size only accepts strings or GUISize objects
TIMER| shutdown Scheduler: 7.92 us
TIMER| shutdown mouse stuff: 49.04 us
TIMER| shutdown Pathfinder: 180.919 us
TIMER| shutdown game scripting stuff: 14.8534 ms
TIMER| shutdown actor stuff: 11.28 us
TIMER| shutdown TexMan: 5.6 us
TIMER| shutdown Renderer: 582.64 us
TIMER| shutdown ScriptingHost: 7.24432 ms
TIMER| shutdown ConfigDB: 2.08 us
TIMER| shutdown CSocketBase: 229.68 us
TIMER| shutdown CNetLogManager: 45.999 us
TIMER| shutdown I18N: 7.72 us
TIMER| resource modules: 38.0077 ms
TIMER TOTALS (25 clients)
-----------------------------------------------------
  js_timer 19: 0 c (0x)
  js_timer 18: 0 c (0x)
  js_timer 17: 0 c (0x)
  js_timer 16: 0 c (0x)
  js_timer 15: 0 c (0x)
  js_timer 14: 0 c (0x)
  js_timer 13: 0 c (0x)
  js_timer 12: 0 c (0x)
  js_timer 11: 0 c (0x)
  js_timer 10: 0 c (0x)
  js_timer 9: 0 c (0x)
  js_timer 8: 0 c (0x)
  js_timer 7: 99.6559 Mc (598x)
  js_timer 6: 226.475 Mc (598x)
  js_timer 5: 190.2 Mc (106x)
  js_timer 4: 54.9052 Mc (106x)
  js_timer 3: 74.5003 Mc (106x)
  js_timer 2: 128.114 Mc (106x)
  js_timer 1: 1.84467e+10 Gc (106x)
  js_timer 0: 0 c (2x)
  tc_2: 0 c (0x)
  tc_1: 0 c (0x)
  tc_transform: 2108.03 kc (14x)
  tc_plain_transform: 3394.96 kc (14x)
  tc_png_decode: 0 c (0x)
-----------------------------------------------------
TIMER| shutdown misc: 638.841 us

I am building 0ad on Slackware Linux 13 x86_64 from subversion with Revision: 7232

#443 fixed Add GPL header Philip Taylor Philip Taylor
Description

Need to remember to add the GPL header block to all the new source files.

#444 fixed Merge simulation code into SVN Philip Taylor Philip Taylor
Description

Need to merge the code currently in the Hg branch into SVN. (Now seems as good a time as any.)

#448 fixed Building construction placement UI Philip Taylor Philip Taylor
Description

When the player chooses to build a building, they need some way to pick a location for it.

The implementation should be somewhat similar to the Atlas entity preview feature. Probable approach is: GuiInterface.js should provide some functions ShowEntityPreview(templateName, x, z, angle, player) and HideEntityPreview(). Those functions would construct a local entity with the preview|templateName magic template, and move it around, and delete it when it's hidden. Show would return a flag indicating if that's a valid build location (based on terrain, obstructions, etc). (Also it'd have to change the colour to indicate obstruction, and deal with FOW etc). The GUI input-handling scripts would just call those functions to show the previews, and then send the parameters to a 'construct' command when the player clicks.

#449 fixed Crash when starting a new game Erik Johansson
Description

When starting a new game Pyrogenesis crashes. It seems to be loading the map and all as I get ~ a second before the game crashes when I can see the game, and hear the music, it's at most a second though as the game crashes almost immediately and the music start to repeat the first < second or so. See below for call stack + output from VC++

Call stack:

 	wrap_oal.dll!0b641d5a() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for wrap_oal.dll]	
 	winmm.dll!76b454e3() 	
 	winmm.dll!76b5adfe() 	
 	winmm.dll!76b5aee9() 	
 	winmm.dll!76b5af02() 	
 	kernel32.dll!7c80b729() 	
>	pyrogenesis_dbg.exe!CreateDirectories(const boost::filesystem::basic_path<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >,boost::filesystem::wpath_traits> & path={...}, unsigned int mode=0)  Line 116 + 0x13 bytes	C++

Output from VC++:

TIMER| common/global.xml: 17.62 ms
GAME STARTED, ALL INIT COMPLETE
First-chance exception at 0x0b641d5a in pyrogenesis_dbg.exe: 0xC0000094: Integer division by zero.
Unhandled exception at 0x0b641d5a in pyrogenesis_dbg.exe: 0xC0000094: Integer division by zero.
The program '[116860] pyrogenesis_dbg.exe: Native' has exited with code 0 (0x0).

Please tell me if there's anything else you want to know. I've attached my system_info.txt.

#450 fixed Incorrect local.cfg search path Philip Taylor
Description

As in this post, the game doesn't look in the per-user path for local.cfg, and it should do.

(Adding to Trac because I'd forgotten about it entirely and someone mentioned it, and I don't think it's been fixed yet.)

#451 fixed CParamNode::GetChild should return CParamNode& instead of CParamNode* André Puel André Puel
Description

Ideally, GetChild would return a CParamNode& instead of a CParamNode* (now that it will never return NULL), to simplify the usage syntax (GetChild("x").GetChild("y") instead of GetChild("x")->GetChild("y")).

#452 fixed Extended Latin characters show up as question marks in diamonds on loading screen Art Department Aviv
#453 fixed "Assertion failed: "hModule" Location: wdlfcn.cpp:55 (dlopen)" when trying to start Atlas Philip Taylor Erik Johansson
Description
Assertion failed: "hModule"
Location: wdlfcn.cpp:55 (dlopen)

Call stack:

dlopen (wdlfcn.cpp:50)
    so_name = 0xCCCCCCCC
    flags = 1244820 (0x0012FE94)
    hModule = 0xCCCCCCCC
    pathname = 
        m_path = (error -100500 while analyzing string<﻾td::char_traits<char> >)


DllLoader::LoadDLL (dllloader.cpp:70)
    this = 0x00BAD56B -> 
        m_Name = 0x0824548B -> (unavailable - internal error)

        m_Handle = 0x8B0C428D


ATLAS_Run (atlas.cpp:41)
    args = 0x0012FEC8 -> 
        m_Args = (error -100500 while analyzing vector<pair<CStr8,CStr8> >)
        m_Arg0 = { (error -100500 while analyzing string<﻾td::char_traits<char> >) }

    flags = 3017173665 (0xB3D66AA1)

ATLAS_RunIfOnCmdLine (atlas.cpp:70)
    args = 0x00000002

RunGameOrAtlas (main.cpp:379)
    argc = 2 (0x00000002)
    argv = 0x01F17690 -> 0x01F1769C -> "h:\0ad\binaries\system\pyrogenesis_dbg.exe"
    ran_atlas = true 
    args = 
        m_Args = (error -100500 while analyzing vector<pair<CStr8,CStr8> >)
        m_Arg0 = { (error -100500 while analyzing string<﻾td::char_traits<char> >) }

    res = 2.63516e-299 (0x01F1A5C0CCCCCCCC)

main (main.cpp:416)
    argc = 1245112 (0x0012FFB8)
    argv = 0x00506C74 -> 0xC7E04589 -> (unavailable - internal error)


__tmainCRTStartup (crtexe.c:410)

mainCRTStartup (crtexe.c:393)

CallStartupWithinTryBlock (wseh.cpp:352)
    ret = 1245060 (0x0012FF84)

00000000
    ret = 2147328000 (0x7FFDA000)


errno = 0 (?)
OS error = 0 (no error code was set)

After I click continue I get the following error message:

The Atlas UI was not successfully loaded and therefore cannot be started as requested.
Location: Atlas.cpp:46 (ATLAS_Run)

Call stack:

ATLAS_Run (atlas.cpp:41)
    args = 0x0012FEC8 -> 
        m_Args = (error -100500 while analyzing vector<pair<CStr8,CStr8> >)
        m_Arg0 = { (error -100500 while analyzing string<﻾td::char_traits<char> >) }

    flags = 3017173665 (0xB3D66AA1)

ATLAS_RunIfOnCmdLine (atlas.cpp:70)
    args = 0x00000002

RunGameOrAtlas (main.cpp:379)
    argc = 2 (0x00000002)
    argv = 0x01F17690 -> 0x01F1769C -> "h:\0ad\binaries\system\pyrogenesis_dbg.exe"
    ran_atlas = true 
    args = 
        m_Args = (error -100500 while analyzing vector<pair<CStr8,CStr8> >)
        m_Arg0 = { (error -100500 while analyzing string<﻾td::char_traits<char> >) }

    res = 2.63516e-299 (0x01F1A5C0CCCCCCCC)

main (main.cpp:416)
    argc = 1245112 (0x0012FFB8)
    argv = 0x00506C74 -> 0xC7E04589 -> (unavailable - internal error)


__tmainCRTStartup (crtexe.c:410)

mainCRTStartup (crtexe.c:393)

CallStartupWithinTryBlock (wseh.cpp:352)
    ret = 1245060 (0x0012FF84)

00000000
    ret = 2147328000 (0x7FFDA000)


errno = 0 (?)
OS error = 0 (no error code was set)

And if it's useful here's the output, perhaps it can provide some clues{{{ 'pyrogenesis_dbg.exe': Loaded 'H:\0ad\binaries\system\pyrogenesis_dbg.exe', Symbols loaded. 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\kernel32.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\opengl32.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\msvcrt.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\advapi32.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\rpcrt4.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\secur32.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\gdi32.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\user32.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\glu32.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\ddraw.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\dciman32.dll' 'pyrogenesis_dbg.exe': Loaded 'H:\0ad\binaries\system\libxml2.dll', Binary was not built with debug information. 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\wsock32.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\ws2_32.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\ws2help.dll' 'pyrogenesis_dbg.exe': Loaded 'H:\0ad\binaries\system\iconv.dll', Binary was not built with debug information. 'pyrogenesis_dbg.exe': Loaded 'H:\0ad\binaries\system\zlib1.dll', Binary was not built with debug information. 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_e6967989\msvcr80.dll' 'pyrogenesis_dbg.exe': Loaded 'H:\0ad\binaries\system\OpenAL32.dll', Binary was not built with debug information. 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\shell32.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\shlwapi.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\winmm.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\ole32.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\oleaut32.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_f863c71f\msvcp90d.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_f863c71f\msvcr90d.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\dsound.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\version.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\setupapi.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\wintrust.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\crypt32.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\msasn1.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\imagehlp.dll' 'pyrogenesis_dbg.exe': Unloaded 'C:\WINDOWS\system32\setupapi.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\setupapi.dll' 'pyrogenesis_dbg.exe': Unloaded 'C:\WINDOWS\system32\setupapi.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\wdmaud.drv' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\setupapi.dll' 'pyrogenesis_dbg.exe': Unloaded 'C:\WINDOWS\system32\setupapi.dll' 'pyrogenesis_dbg.exe': Unloaded 'C:\WINDOWS\system32\wdmaud.drv' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\wdmaud.drv' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\setupapi.dll' 'pyrogenesis_dbg.exe': Unloaded 'C:\WINDOWS\system32\setupapi.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\msacm32.drv' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\msacm32.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\midimap.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\setupapi.dll' 'pyrogenesis_dbg.exe': Unloaded 'C:\WINDOWS\system32\setupapi.dll' HPET: rev=1 vendor=8086 bits=64 period=429B17F freq=1.43182e+007 wdlfcn.cpp(55): Assertion failed: "hModule" 'pyrogenesis_dbg.exe': Loaded 'H:\0ad\binaries\system\dbghelp.dll' First-chance exception at 0x0052471b in pyrogenesis_dbg.exe: 0xC0000005: Access violation reading location 0x0824548b. First-chance exception at 0x0052471b in pyrogenesis_dbg.exe: 0xC0000005: Access violation reading location 0xc7e04589. 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\uxtheme.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\Program Files\RocketDock\RocketDock.dll', Binary was not built with debug information. 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\psapi.dll' 'pyrogenesis_dbg.exe': Loaded 'C:\WINDOWS\system32\MSCTF.dll' Atlas.cpp(46): The Atlas UI was not successfully loaded and therefore cannot be started as requested. First-chance exception at 0x0052471b in pyrogenesis_dbg.exe: 0xC0000005: Access violation reading location 0xc7e04589. The thread 'whrt_UpdateThread' (0x2be7c) has exited with code 0 (0x0). The thread 'Win32 Thread' (0x2c1d0) has exited with code 0 (0x0). The program '[180652] pyrogenesis_dbg.exe: Native' has exited with code 0 (0x0).

}}} mainlog.html is not updated, I've attached system_info.txt

#454 fixed "Debug Assertion Failed!" in VC++ Express 2008 when clicking on "Copy" button in pyrogenesis error dialog box Erik Johansson
Description

When pressing the Copy button in the Program Error window when running the game (with -editor) in VC++ Express 2008, I get an error message from VC++:

Debug Assertion Failed! Program: h:\0ad\binaries\system\pyrogenesis_dbg.exe File: f:\dd\vctools\crt_bld\self_x86\crt\src\tcscpy_s.inl Line: 30 Expression: (L"Buffer is too small" && 0) For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts. (Press Retry to debug the application)

So I do, another dialog box:

pyrogenesis_dbg.exe has triggered a breakpoint [Break][Continue]

I press break, and below is the call stack:

>	pyrogenesis_dbg.exe!SetClipboardText(const wchar_t * text=0x02e90068, void * * hMem=0x0012f400)  Line 35 + 0x14 bytes	C++ 

	pyrogenesis_dbg.exe!sys_clipboard_set(const wchar_t * text=0x02e90068)  Line 55 + 0xd bytes	C++ 

	pyrogenesis_dbg.exe!error_dialog_proc(HWND__ * hDlg=0x00090978, unsigned int msg=273, unsigned int wParam=1002, long lParam=395626)  Line 183 + 0x9 bytes	C++

 	user32.dll!7e418734() 	

 	user32.dll!7e423ce4() 	

 	user32.dll!7e423b30() 	 

	user32.dll!7e43e577() 	 

	user32.dll!7e418734() 	

 	user32.dll!7e418734() 	

 	user32.dll!7e43e577() 	 

	user32.dll!7e43e577() 	

 	user32.dll!7e43e18a() 	

 	MSCTF.dll!747313d4() 	

 	MSCTF.dll!747313d9() 	

 	MSCTF.dll!7473057a() 	

 	user32.dll!7e418734() 	

 	user32.dll!7e418816() 	

 	user32.dll!7e4189cd() 	

 	user32.dll!7e4193e9() 	 

	user32.dll!7e4193a8() 	

 	user32.dll!7e431b7c() 	

 	user32.dll!7e4249c4() 	

 	user32.dll!7e424a06() 	

 	user32.dll!7e43b190() 	

 	pyrogenesis_dbg.exe!sys_display_error(const wchar_t * text=0x02040000, unsigned int flags=6)  Line 265 + 0x1d bytes	C++

 	pyrogenesis_dbg.exe!CallDisplayError(const wchar_t * text=0x02040000, unsigned int flags=6)  Line 405 + 0xd bytes	C++

 	pyrogenesis_dbg.exe!debug_DisplayError(const wchar_t * description=0x0012f9bc, unsigned int flags=6, void * context=0x00000000, const wchar_t * lastFuncToSkip=0x01f1a640, const wchar_t * pathname=0x00c1b0a0, int line=55, const char * func=0x00c1b098, unsigned char * suppress=0x00d48993)  Line 480 + 0xd bytes	C++

 	pyrogenesis_dbg.exe!debug_OnAssertionFailure(const wchar_t * expr=0x00c1b108, unsigned char * suppress=0x00d48993, const wchar_t * file=0x00c1b0a0, int line=55, const char * func=0x00c1b098)  Line 565 + 0x35 bytes	C++

 	pyrogenesis_dbg.exe!dlopen(const char * so_name=0x0012fe48, int flags=10)  Line 55 + 0x21 bytes	C++

 	pyrogenesis_dbg.exe!DllLoader::LoadDLL()  Line 82 + 0x10 bytes	C++

 	pyrogenesis_dbg.exe!ATLAS_Run(const CmdLineArgs & args={...}, int flags=1)  Line 43 + 0xa bytes	C++

 	pyrogenesis_dbg.exe!ATLAS_RunIfOnCmdLine(const CmdLineArgs & args={...})  Line 73 + 0xb bytes	C++

 	pyrogenesis_dbg.exe!RunGameOrAtlas(int argc=2, const char * * argv=0x01f17690)  Line 393 + 0x9 bytes	C++

 	pyrogenesis_dbg.exe!main(int argc=2, char * * argv=0x01f17690)  Line 419 + 0xd bytes	C++

 	pyrogenesis_dbg.exe!__tmainCRTStartup()  Line 586 + 0x19 bytes	C

 	pyrogenesis_dbg.exe!mainCRTStartup()  Line 403	C

 	pyrogenesis_dbg.exe!CallStartupWithinTryBlock()  Line 356 + 0x5 bytes	C++

 	pyrogenesis_dbg.exe!wseh_EntryPoint()  Line 384	C++

 	kernel32.dll!7c817077() 	

 	pyrogenesis_dbg.exe!std::_Tree<std::_Tmap_traits<void const *,CModelDefRPrivate *,std::less<void const *>,std::allocator<std::pair<void const * const,CModelDefRPrivate *> >,0> >::insert(std::_Tree<std::_Tmap_traits<void const *,CModelDefRPrivate *,std::less<void const *>,std::allocator<std::pair<void const * const,CModelDefRPrivate *> >,0> >::const_iterator _Where=(...,..., const std::pair<void const * const,CModelDefRPrivate *> & _Val=(...,...)  Line 691 + 0x1f bytes	C++

 	e04d8d52()

The output seems to be the same as the other error (and I assume at least some of the above information is at least as much related to that error as this error :P If nothing else it was that error that caused the error box to appear in the first place.) http://trac.wildfiregames.com/attachment/ticket/453 <-- the other error, am getting too tired to make nicer link =) Please tell me if I've missed some information and I'll try to include it.

#456 fixed DllLoader should handle missing files better Evans Philip Taylor
Description

DllLoader is used to load the Atlas and Collada libraries at run-time. In a Debug build, it tries to load AtlasUI_dbg.dll (./libAtlasUI_dbg.so on Linux). In a Release build, it loads AtlasUI.dll (./libAtlasUI.so).

(Ignore the comment in DllLoader saying "it is critical that compiler options are the same between app and SO" - that is untrue, since the libraries are designed to be safely mixed with different compiler options. We just want to use the Debug library with Debug builds in order to help debugging and error-detection.)

Because Atlas is a bit awkward and slow to compile, it's disabled by default on Windows, so AtlasUI_dbg.dll won't be created. But AtlasUI.dll will exist, because we put a pre-compiled binary in SVN (for non-programmers to use). Rather than fail to load Atlas in Debug builds because there's no matching library, it should fall back on AtlasUI.dll and load that one instead.

So in Debug builds on Windows, DllLoader needs to look for the Debug library then the Release library; in all other cases it should just look for the single appropriate library.

In all cases, it shouldn't trigger internal error messages in dlopen: it should check that the file exists before trying to open it, and give a nice friendly error message if it can't find anything. (Or maybe it should try to open it first, and change the Windows emulation of dlopen in wdlfcn.cpp to silently return a failure code that the caller can check.)

#458 fixed Game tries to create mods/internal/ directory Philip Taylor
Description

When running the public build, the game still tries to mount the internal directory and expects it to fail silently, but it looks like it actually mkdirs the internal directory if it didn't already exist. That breaks when the game is installed in a read-only location - it shouldn't try to create any directories there.

#459 fixed vfs_Lookup tries to create bogus directories Philip Taylor
Description

When I run the game on Linux (with no non-standard directories, and with a read-only root), g_VFS->Mount(L"screenshots/", paths.Data()/L"screenshots/") ends up calling vfs_Lookup which calls wmkdir("screenshots") which fails because that's relative to the cwd (the system directory) and read-only.

The ~/.local/share/0ad/screenshots/ directory is created before this happens, and it tries creating the bogus screenshots directory even if that proper one exists.

#460 fixed Integrate new random maps with Atlas historic_bruno Erik Johansson
Description

After the new simulation system new reasons why this doesn't work were added, I don't know enough about them to explain it, but I thought I should at least update the description to reflect that the reason it is broken have changed.

At least that's what I assume. I don't know enough of the inner workings of the engine to tell if it's something different, but I think the first time I saw it was pretty soon after the change.

In any case, as far as I can tell most things work (at least the maps I've tried don't display any error during the creation phase, i.e. the time while the "command" window is displayed), however the textures don't show up on cantabrian_highlands.j, and I get errors after the map creation has finished on other maps, so it should preferably be looked into by someone with more knowledge of the system than me.

#461 fixed [ATTACHED] .pmd/.dae converter historic_bruno Robert Schultz
Description

Many of the models are in the PMD format and are not editable by most 3d editing programs. A converter would be needed to ensure high modability in this game, as well to make edits to models.

An alternate solution is for someone to just convert all PMD to DAE.

#462 fixed Switch to new SpiderMonkey as default Philip Taylor
Description

Make --with-spidermonkey-tip the default.

Make update-workspaces.sh run the new SM build script.

Compile the new version for Windows.

#463 fixed Set up source/data snapshots Philip Taylor
Description

Rather than forcing everyone to download from SVN, there should be a few downloadable-over-HTTP snapshots provided:

  • Linux/OSX SVN working copy, so people can run svn up.
  • Windows SVN working copy, so people can run TortoiseSVN update.
    • (These differ because of line endings. Also, we should ideally have a separate Linux SVN URL that excludes the Windows binaries, but that's not critical.)
    • (These need to be done for a sufficiently old version of the SVN client, so it'll work for users with those old versions.)
  • Linux/OSX data files (just the binaries/data/ directory), to be used by most distro packages.
  • Linux/OSX build files (everything that's not binaries/data/), to be used by people who are creating packages and by source-based distros.
  • Windows data files plus executables (like Linux data plus binaries/system/, and with Windows line endings), to be used by non-developers on Windows.

These don't all need to be updated constantly, but hopefully it'll be fairly frequent and so it should be automated as much as possible. Maybe use Wine to generate the Windows working copies.

In the non-SVN distributions, svn_revision.txt should be set to something appropriate.

Windows files should be .7z (because .zip is far too inefficient). Linux files should be .tar.gz or maybe .7z/.tar.lzma (if it's efficient enough to be worthwhile).

Put the files on releases.wildfiregames.com so we can move the hosting around easily.

#464 fixed addendum to changeset [7341] Julien Pivotto
Description

addendum to [7341]

you forgot some files..

#467 fixed Make Math.random() network-synchronised Philip Taylor
Description

In the simulation code, Math.random() needs to be replaced with an implementation that is network-synchronised and gets serialized.

#470 fixed Use correct projectile actor Philip Taylor Philip Taylor
Description

Projectiles need to be created with the correct actor (probably just coming from the attacker's actor's relevant prop point, not from the entity template, since that's easier with the current data files).

#472 fixed Fixed-point CTerrain::GetExactGroundLevel nobody Philip Taylor
Description

Need to reimplement CTerrain::GetExactGroundLevel using fixed-point instead of floating-point, so it can be safely used by CCmpTerrain::GetGroundLevel.

#473 fixed not able to update svn from ubuntu asl
Description

I am always getting the following error:

svn: OPTIONS of 'http://svn.wildfiregames.com/public/ps/trunk': timed out waiting for server (http://svn.wildfiregames.com)

subversion client details:

svn, version 1.6.6 (r40053)

compiled Mar 20 2010, 18:04:14

Copyright (C) 2000-2009 CollabNet. Subversion is open source software, see http://subversion.tigris.org/ This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository access (RA) modules are available:

  • ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
    • handles 'http' scheme
    • handles 'https' scheme
  • ra_svn : Module for accessing a repository using the svn network protocol.
    • with Cyrus SASL authentication
    • handles 'svn' scheme
  • ra_local : Module for accessing a repository on local disk.
    • handles 'file' scheme
#474 fixed Find and fix reliance on run-time S3TC compression Philip Taylor
Description

When I run on Linux with force_s3tc_enable (without libtxc_dxtn which implements S3TC compression, so I've only got decompression), there's a number of rendering errors that I assume are caused by us attempting to use run-time compression. Need to look in more detail to work out the full list of problems and the exact causes, but I see:

  • Some textures are bogus when zoomed out (probably the .dds files are missing mipmaps, and they can't be created dynamically - we ought to ensure all texture files have mipmaps).
  • The minimap is entirely black.
  • Terrain texture previews in the terrain-picker in Atlas are black.
#475 fixed Graphic settings system Philip Taylor
Description

Currently the graphics settings are determined by the defaults in system.cfg, modified by hand-written local.cfg, modified by what the hardware supports (based on GL extensions).

It ought to be based partly on performance, e.g. don't enable fancywater and pretty shadows by default on rubbish slow Intel devices (perhaps based on some benchmarking on first run, or a hardcoded list of common known devices?), and the user should be able to configure things in the UI and preferably see the changes dynamically and then save their settings.

#476 fixed Use JS_New for ScriptInterface::CallConstructor Philip Taylor
Description

The new JS_New function looks like it does what ScriptInterface::CallConstructor attempts to emulate. We should update to a SpiderMonkey version that includes that function, and then use it (and make sure it doesn't change the behaviour in a way that breaks anything).

#479 fixed Make water animate again Philip Taylor
Description

Water doesn't animate with the new simulation system. It should. (Probably just forgetting to send update messages to it.)

#480 fixed Fix gamma warning Philip Taylor
Description
Assertion failed: "SDL_SetGamma failed"
Location: GameSetup.cpp:142 (SetVideoMode)
18:01 <@Philip-> janwas: Should the warning about gamma be disabled, because it's a bit annoying and doesn't seem to be useful?
18:03 < janwas> Philip-: hm, that check has failed (in the intervening years, no one was able to find the underlying problem), so it can probably be commented out :) (preferably with a note that it sometimes fails, usually on multimon systems)
#481 fixed Make Atlas work from non-binaries/system/ location Philip Taylor
Description

If Atlas isn't run from binaries/system/ then it fails to find files. Fix it.

#482 fixed Fix building on Windows in paths containing space characters Philip Taylor
Description

When located in a path containing spaces, the Windows builds fail with some error message. If I remember correctly, the problem is we pass an absolute path to the cxxtestgen.exe tool but don't correctly put quotes around it. It should perhaps be fixed by modifying our patched copy of Premake, so that it emits correct .vcproj files with the necessary quotes.

Someone should verify that this is really the cause of the errors, and fix it.

#483 fixed Fix actor viewer Philip Taylor Philip Taylor
Description

The actor viewer (the one that's integrated into Atlas) doesn't work with the new simulation system. It needs to be substantially changed so it renders entity previews, not actors, and does all the necessary bookkeeping to interact with the sim components.

#484 fixed unhandled exception 0xC06D007E in wdll_delay_load.cpp:358 (__delayLoadHelper2) Philip Taylor
Description

Somebody just got the error:

Details: unhandled exception (Unknown (0xC06D007E))
Location: wdll_delay_load.cpp:358 (__delayLoadHelper2)

when running on 64-bit Windows 7. This looks like it's probably the same error as somebody else (whose name I forget) reported a while ago, where I think we discovered that the delay-loader was failing to load version.dll. But I don't think we ever found or solved the cause of that problem, and it appears it's affecting more people now.

#486 fixed Audio integration Philip Taylor
Description

Need to work out how to integrate audio with the new simulation code.

#487 fixed Use 'use strict' Philip Taylor
Description

Automatically prepend simulation scripts with "use strict"; so they run under ES5's tighter rules, to discourage bad code and potentially allow more efficient execution.

#489 fixed Clean up unix-build tarball Philip Taylor
Description

http://www.wildfiregames.com/forum/index.php?showtopic=12996&hl=

I noticed that the 0ad-unix-build.tar contains some .bat/.dll/.exe/.lib/.vcproj files and win-specific directories that could be removed reducing tar size from 37 to 25 MB, adding to the source/tools/dist/build.sh script some --exclude options:

tar cf $PREFIX-unix-build-temp.tar --exclude='*.bat' --exclude='*.dll' --exclude='*.exe' --exclude='*.lib' --exclude='*.vcproj' --exlude='win' --exclude='win32' --exclude='include-win32' ${PREFIX}/{source,build,libraries/{cxxtest,fcollada,spidermonkey-tip,valgrind},binaries/system/readme.txt,*.txt}

I don't know if this is exactly the correct list to exclude; should double-check exactly which files are getting included and remove the unused ones from SVN or from the tar.

#490 fixed Try splitting test data files into build tarball Philip Taylor
Description

See https://bugs.launchpad.net/getdeb.net/+bug/556356 comment 4. It'd probably be nice if the build tarball was sufficient for compiling and running all the tests, and if the data tarball only included game data and not test data, assuming we can actually split them cleanly in that way.

#491 fixed Generate entity XML documentation Philip Taylor
Description

We should have some documentation along the lines of XML.Entity for the new simulation system, aimed at people who are writing XML by hand (not writing scripts or C++) or who want an overview of the features supported by entities.

This is probably a precursor to (and obsoleted by) #422 - it's good to have readable offline documentation even if it's duplicated in a cleverer editing tool, and also it's easier than implementing the cleverer editing tool. The documentation should be generated from annotations in the RelaxNG schema so it can be kept up to date and reused. Maybe we also want some extra higher-level documentation for components, derived from the Doxygen or something? The output should probably just be plain HTML files, which can be uploaded somewhere and linked from the wiki.

#492 fixed packaging resources fabio
Description

I am attaching some files from debian package that may be useful to other distributions and that could eventually included in the 0ad source:

  • 0ad.desktop : desktop file for menu (it assumes the executable is in /usr/lib/games/0ad/system/pyrogenesis )
  • 0ad.png : png icon file (converted from upstream ps.ico and optimized with optipng and advdef)
  • 0ad : script that call /usr/lib/games/0ad/system/pyrogenesis to easily run the game from terminal
  • 0ad.6 : man page with options taken from upstream readme.txt

Update (2012-04-10):

#493 fixed Add proper square intersection code Philip Taylor Philip Taylor
Description

CCmpObstructionManager deals with line/circle/square intersections, for use with pathfinding and building placement etc. Currently squares aren't implemented at all (it pretends they're circles) - they should be added.

"Squares" are non-axis-aligned rectangles, so I think it's just some slightly ugly but straightforward geometry. Everything needs to be done with fixed-point maths (to get reliably repeatable results), so care needs to be taken with overflow, which makes it a bit trickier.

There ought to be some test cases for the code (see e.g. test_Position.h for the general framework for testing simulation components).

#495 fixed Warn when locale is bogus Sergio Fabian Vier Philip Taylor
Description

What currently happens:

$ LANG=bogus ./pyrogenesis_dbg
terminate called after throwing an instance of 'std::runtime_error'
  what():  locale::facet::_S_create_c_locale name not valid
Aborted

This can happen on misconfigured systems where the locales aren't set up correctly. It would be better to give a much more informative warning and fall back to a default - e.g. perl says:

$ LANG=bogus perl
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = "",
        LC_ALL = (unset),
        LANG = "bogus"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

which is more helpful.

We need to do this fairly early (before any attempts to access the filesystem), so maybe in EarlyInit in GameSetup.cpp.

#496 fixed Make code documentation available online and kept updated Philip Taylor
Description

Need to get the CppDoc and Doxygen output and the entity XML documentation uploaded somewhere and linked from the wiki, with an easy way to keep them updated.

CppDoc and Doxygen can probably just be run on the web server itself, given an SVN checkout. The entity XML stuff requires the .rng file which comes from compiling and running the game, which a pain so that'll probably have to be done offline and uploaded.

#497 fixed Make square unit outlines match the ground better Evans Philip Taylor
Description

See ConstructSquareOnGround in simulation2/helpers/Render.cpp (used to render the outlines of selected units). Currently it constructs a 4-point square, and moves each point vertically to match the terrain. That looks a bit rubbish if a unit with a large square outline is on bumpy land.

The straight edges ought to be split into smaller segments, each of which is fitted to the terrain, so that the whole shape fits better. Rather than a fixed number of segments, I guess they should be split so each segment is slightly smaller than a tile (4 units), or whatever looks reasonable without wasting lots of vertexes.

#498 fixed Fix building footprints / obstruction shapes Philip Taylor
Description

Trained units spawn around the footprint, but some buildings have a larger obstruction shape so the units are unable to spawn. Need to fix either the code or the data files.

#499 fixed Automatically move units away from construction sites Philip Taylor
Description

Currently you can't place a new building if there's any unit in the way, and it immediately blocks all movement through its area.

From here:

what ought to happen ![...] - units are ignored when placing the foundation, then it tells friendly units to get out of the way and blocks them from walking over the foundation any more, and a builder can get the building to above 0% build progress once there's no units in the way (including enemy units), and after that point the foundation blocks enemy units walking over it too. (That avoids your own units blocking the building, but also avoids the exploitation of foundations to block enemies).

#500 fixed [PATCH] Make Atlas work on OS X historic_bruno Philip Taylor
Description

When running ./pyrogenesis_dbg -editor on OS X, it starts up the editor window and then the window freezes (though all the code threads continue running).

In the current design, pyrogenesis_dbg starts up first, via SDL's main function, which calls [NSApplication run] and eventually ends up in our main (source/main.cpp).

We then detect the -editor flag, load libAtlasUI_dbg.dll, start up a new thread, and run Atlas_StartWindow (source/tools/atlas/AtlasUI/Misc/DLLInterface.cpp) in the new thread, which calls wxEntry to start the wxWidgets event loop.

As far as I can tell, the problem is that we have two Cocoa event loops, one in SDL and one in wxWidgets, and the GUI thread doesn't get the input events it needs. (See here etc for some stuff about Cocoa threading.)

If that's true, we need to do, uh, something to fix it. (I have no idea what, but it might involve a redesign of the game/editor startup process). If that's not true (I'm not an OS X developer so I may easily be mistaken), we need to work out what the problem really is and then do something to fix it.

#502 fixed Convert all entity template data to new format Philip Taylor
Description

Need to convert all the XML, and probably implement dummy components to contain the new data, and have some way to verify that there's no accidental data loss.

#503 fixed Invalid UTF-8 sequence when running in Unicode paths Philip Taylor
Description

Running from E:\0ad-test-é\, argv[0] is something like win1252, not utf8:

Function call failed: return value was -100703 (Invalid UTF-8 sequence)
Location: utf8.cpp:81 (RaiseError)

Call stack:

RaiseError (utf8.cpp:74)
    err = 3272664 (0x0031EFD8)
    perr = 0x02FACFB9 -> 3452816640 (0xCDCDCD00)

UTF8Codec::Decode (utf8.cpp:120)
    srcPos = 0x0031F1D8 -> 0xCCCCCCCC
    srcEnd = 0x0031F1F8 -> [8] { 0 (0x00), 0 (0x00), 0 (0x00), 0 (0x00), 204 (0xCC), 204 (0xCC), 204 (0xCC), 204 (0xCC) }
    err = 0x00000000
    size = 1 (0x00000001)
    offsets = [5] { 0 (0x00000000), 0 (0x00000000), 12416 (0x00003080), 925824 (0x000E2080), 63447168 (0x03C82080) }
    u = 23346901 (0x01643ED5)

wstring_from_utf8 (utf8.cpp:217)
    src = 0x6F8CB5CA -> (error -100500 while analyzing string<﻾td::char_traits<char> >)
    err = 0x0031FCD0 -> 3276112 (0x0031FD50)
    srcEnd = 0x00000031
    srcPos = 0xCCCCCCCC
    dst = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)

Paths::Paths (paths.cpp:31)
    this = 0xCCCCCCCC
    args = 0x0031FD14 -> 
        m_Args = (error -100500 while analyzing vector<pair<CStr8,CStr8> >)
        m_Arg0 = { (error -100500 while analyzing string<﻾td::char_traits<char> >) }

    subdirectoryName = 0xCCCCCCCC

InitVfs (gamesetup.cpp:506)
    args = 0x0031FD14 (see above)
    hooks = 
        override_gl_upload_caps = 0xCCCCCCCC
        get_log_dir = 0xCCCCCCCC
        bundle_logs = 0xCCCCCCCC
        translate = 0xCCCCCCCC
        translate_free = 0xCCCCCCCC
        log = 0xCCCCCCCC
        display_error = 0xCCCCCCCC

    readonlyConfig = 
        m_path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)

    mods = (error -100500 while analyzing vector<CStr8 >)
    LINE_507_ = 
        m_t0 = -3689348814741910324 (0xCCCCCCCCCCCCCCCC)
        m_description = 0xCCCCCCCC

    logs = 
        m_path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)

    modLoosePath = 
        m_path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)

    modArchivePath = 
        m_path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)

    paths = 
        m_root = 
            m_path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)

        m_rdata = 
            m_path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)

        m_data = 
            m_path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)

        m_config = 
            m_path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)

        m_cache = 
            m_path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)

        m_logs = 
            m_path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)


    cacheSize = 3435973836 (0xCCCCCCCC)

Init (gamesetup.cpp:855)
    args = 0x00000001
    flags = 49970672 (0x02FA7DF0)
    setup_vmode = 204 (0xCC)
    hooks = 
        override_gl_upload_caps = 0xCCCCCCCC
        get_log_dir = 0xCCCCCCCC
        bundle_logs = 0xCCCCCCCC
        translate = 0xCCCCCCCC
        translate_free = 0xCCCCCCCC
        log = 0xCCCCCCCC
        display_error = 0xCCCCCCCC

    setup_gui = 204 (0xCC)
    quality = 3435973836 (0xCCCCCCCC)
    missing = 0xCCCCCCCC
    windowed = 204 (0xCC)

RunGameOrAtlas (main.cpp:384)
    argc = 1 (0x00000001)
    argv = 0x02FA7DF0 -> 0x02FA7DF8 -> "E:\0ad-test-é\binaries\system\pyrogenesis_dbg.exe"
    ran_atlas = false
    args = 
        m_Args = (error -100500 while analyzing vector<pair<CStr8,CStr8> >)
        m_Arg0 = { (error -100500 while analyzing string<﻾td::char_traits<char> >) }

    res = 1.6976e-314 (0x00000000CCCCCCCC)

main (main.cpp:421)
    argc = 3276292 (0x0031FE04)
    argv = 0x00FAD184 -> 0xC7E04589 -> (unavailable - internal error)


__tmainCRTStartup (crtexe.c:410)

mainCRTStartup (crtexe.c:393)

CallStartupWithinTryBlock (wseh.cpp:357)
    ret = 3276240 (0x0031FDD0)

00000000
    ret = 23186032 (0x0161CA70)

00000000
    ret = 0 (0x00000000)

RtlInitializeExceptionChain (:0)


errno = 0 (?)
OS error = 50 (The request is not supported.
)
#504 fixed Shadows popping in/out at edges of screen philip Xin
Description

Currently, shadows and geometry have a visible pop in/out at the edges of the screen due to culling too early.

I'm not sure what the previous comment is referring to with shadow maps becoming too low-detail with a larger culling frustum, but one way to fix shadows popping in at the edge of the screen is to widen the culling frustum so that objects aren't culled as early. The downside is that objects will get rendered even though they appear off screen, which is somewhat inefficient. A better solution would be to decouple shadow map rendering from model rendering; as it is now, a shadow map is only rendered if its associated model is to be rendered (I think).

#505 fixed Improve multiplayer session handling Philip Taylor
Description

Needs more testing, plus various fixes like:

  • Map selections should be reflected to other players
  • Chat should work, to some extent
  • Players should have persistent configurable names
  • Display "waiting for other players" dialog after loading
  • Notify players about disconnections
  • Notify players about lag

and probably more - it doesn't need to be perfect at all, it just needs to be vaguely understandable and usable and needs to tell people what's going on.

#506 fixed Crash when selecting host game then cancel then join game Philip Taylor
Description
18:32 < janwas> booom in CNetSession::SetPlayerSlot
18:32 < janwas> because m_psession == 0
18:33 < janwas> oops, that happened because i fat-fingered "host", aborted that, then did join
#507 fixed Optimise state hashing Philip Taylor
Description

The state hashing is very useful for detecting OOS, but very slow (especially in debug builds) which makes it hard to use when testing. It should be faster.

#508 fixed Cursor should be restricted to the game window when fullscreen on Win32 Jay Weisskopf Philip Taylor
Description

When running fullscreen on a multi-monitor system, the mouse can easily leave the game window and move onto the other screen, which breaks edge-of-screen scrolling, and if you accidentally click outside then the game minimises which is quite irritating.

When fullscreen, the mouse ought to be restricted to the window (presumably via ClipCursor).

#509 fixed Network: Should call enet_initialize Philip Taylor
Description

Documentation for enet_initialize says:

Must be called prior to using any functions in ENet.

We don't call it at all. We probably should. (It does nothing on Unix, but calls WSAStartup and timeBeginPeriod on Windows; need to make sure that doesn't interfere with our own wsock or timer code.)

#510 fixed libpng fails to load Philip Taylor
Description

jd823592 on IRC reports problems, having compiled the game in Debug mode on MSVS2008 9.0.30729.1 SP on WinXP SP2 (and having run update-workspaces and 'clean'):

'pyrogenesis_dbg.exe': Loaded 'C:\0ad\binaries\system\libpng14d.dll'
LDR: LdrpWalkImportDescriptor() failed to probe c:\0ad\binaries\system\libpng14d.dll for its manifest, ntstatus 0xc0150002
'pyrogenesis_dbg.exe': Unloaded 'C:\0ad\binaries\system\libpng14d.dll'
First-chance exception at 0x7c812a6b in pyrogenesis_dbg.exe: 0xC06D007E: Module not found.
Unhandled exception at 0x7c812a6b in pyrogenesis_dbg.exe: 0xC06D007E: Module not found.

failing in tex_png.cpp:209 (a call to a libpng function).

#511 fixed [PATCH] Make Ctrl+Backspace/Delete remove entire words in input controls Kenny Long Erik Johansson
Description

Currently ctrl+backspace/delete is ignored completely, which is better than how some programs react to it (i.e. placing an "unknown character" box instead of removing the entire word - I'm looking at you Photoshop =) ). It would be nice to have it working like this: Ctrl+Backspace = remove the word to the left of the cursor (i.e. the entire word left of the cursor, nothing to the right of the cursors), Ctrl+Delete the same but on the right side of the cursor.

As you can see by the priority it's not something too important, but it would be nice to have it working, and it can be a good relatively simple task for someone wanting to get more familiar with the engine.

#512 fixed Unable to run debug exe compiled with VC2008, Solution Attached Aaron Shumate
Description

I've got an updated repository and workspace. I've successfully build both the release and debug executables in a fully patched VC2008 (9.0.21022.8 RTM) under Windows 7. I am able to run the release executable, but unable to run the debug executable -- either from within VC++ or outside.

Solution: Since there is no VC90 version DebugCRT.manifest, the program picks up the VC80 version which has the wrong assemblyIdentity/version (recently and correctly changed in ticket #510). The fix is easy, just add a Microsoft.VC90.DebugCRT.manifest to the binaries\system directory. I've attached the file which is based on the existing non-debug version, Microsoft.VC90.CRT.manifest.

#514 fixed [PATCH] Implement dir_watch on OS X stwf Philip Taylor
Description

See source/lib/sysdep/dir_watch.h and source/lib/sysdep/os/osx/dir_watch.cpp. The interface needs to be implemented on OS X, so we can automatically reload changed files (for quick testing during development).

See linux/dir_watch_fam.cpp and win/wdir_watch.cpp for possible inspiration.

#515 fixed Doubleclicking a unit should select all similar units on screen Evans Christoph Seipel
Description

When doubleclicking a unit, you should select all units of the same type which are visible at once. This behavior was described in input.js comments, but not yet implemented.

With this ticket I supply a patch, implementing this feature.

#516 fixed Terrain smoothing tool Philip Taylor
Description

See this suggestion for a blur/smooth tool.

I expect it can be implemented like:

  • Copy source/tools/atlas/AtlasUI/ScenarioEditor/Tools/AlterElevation.cpp to SmoothElevation.cpp, and make the necessary name changes.
  • See binaries/data/tools/atlas/scripts/section/terrain.js and add the new tool to the list in there.
  • See source/tools/atlas/GameInterface/Messages.h and add the new one (like where it has AlterElevation)
  • See source/tools/atlas/GameInterface/Handlers/ElevationHandlers.cpp and add the new one.

As for actually implementing the smooth functionality, it'll probably need some thinking and experimenting to discover what's a good smoothing algorithm that behaves usefully and intuitively.

Ideally the same tool would roughen too (when right-clicking), as basically the exact opposite of smoothing.

#518 fixed Sort out Linux packages Philip Taylor
Description

There's a few things which it'd be good to do:

  • Test these packages on all (or at least most) of the various platforms. (Can we easily get VMs for testing?)
  • Use PPAs to build Ubuntu packages, so we can keep them regularly updated ourselves.
  • Update Gentoo ebuilds to install into proper locations (not /opt).
  • Add installation instructions for all these packages.
#519 fixed Windows installer Philip Taylor
Description

Self-extracting archives are not ideal - we should probably have a (very basic) NSIS-based installer. Select an install location, choose whether to install source code, create a start menu entry and uninstaller (which should probably clean up the cache etc files too).

#520 fixed Vsync is not implemented in Linux Lubosz
Description

I use glXSwapIntervalSGI to activate vsync in Linux. This is found in GL/glxext.h. Which needs GL/glx.h. I put those inlcudes to the according places where i found the wgl.h and wglext.h Windows ones.

More information about this extension: http://www.opengl.org/registry/specs/SGI/swap_control.txt

The problem is that glx.h inludes X11/X.h which defines Cursor. So i replaced the Cursor stuff in cursor.cpp with GameCursor... I have no other idea how to solve this. Maybe using namespaces?

The other mystery is that ogl_HaveExtension("GLX_SGI_swap_control") returns false. Do I have to register it somewhere? I did not get the magic of ogl_HaveExtension in ogl.cpp. But it runs without checking for me. This should be temporary.

The ifdefs are confusing with OS_WIN, OS_MACOSX and OS_MAC. Is there OS_UNIX or OS_LINUX? So I could ensure a better separation. Maybe this extension could be usefull in OS X too, but I can't test it.

#521 fixed Rally Points for Buildings Evans Evans
Description

The ability to create Rally Points for buildings by right clicking on the ground after selecting a building. All newly created units from that building will walk towards the rally point soon after creation.

#522 fixed Latest 0ad SVN source is running slow Kieran P
Description

I tried 0ad pre alpha 3. Despite my fairly modern computer (3 years old, 2gb ram, 256-512mb graphics card), it was running slow (moving mouse had about a second's delay). So I've checked out the latest source and tried to run it, with no change. It gave the follow message:

Your graphics drivers do not support S3TC compressed textures. ...[snip]...
Installing the libtxc_dxtn library will fix these problems.

So I followed the link in the message, compiled and installed the library, and things got FAR WORSE!! Moving the mouse had a 5 second delay, and for only 1/4 of the distance I moved the mouse (non-technical term would be jumpy). I couldn't even reach the exit button, so had to force quit the game and uninstall the dxtn library.

I've already taken advice to disable water and shading etc etc. But with no change, because... this slowness is happening on the main menu, not even within the game where most of the effects are.

It's not just this computer. Another computer, with a different OS, different specs, has the same speed issues. I love the concept of an AOE like game, and looking forward to when multiplayer is actually possible, but at it's current state, I'd be lucky to find anyone with a computer fast enough to show me what the game is like.

What am I doing wrong? What information can I provide you with to help get this speed up? I'm very keen to be of any help to get this sorted, so please demand anything from me :-P I am a web developer, and I have slightly dabbled in C before, so if you want any small source changes on my end to gather debug data, let me know what they are.

Keep up the great work, and look forward to solving this speed issue.

#523 fixed Implement SDL_GL_SWAP_CONTROL on Windows janwas Philip Taylor
Description

ps/VideoMode.cpp does SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, ...) to set vsync.

On Windows we emulate the SDL API, and don't support that attribute. ps/GameSetup/GameSetup.cpp uses WGL_EXT_swap_control instead. That OS-specific code ought to be moved into lib/sysdep/os/win/wsdl.cpp to implement the standard SDL attribute.

#524 fixed [PATCH] Render marker line between building and rally point vts Philip Taylor
Description

When a building's rally point is a long way away, it's easy to lose the little flag marker. It'd probably be nice if we could display some kind of line between the building and rally point once you select the building, so you can follow it visually to find the end.

I don't know what the line should look like. It shouldn't be too distracting (people will often select buildings for other reasons and not care about the rally point), but it shouldn't be too subtle to notice.

#525 fixed ApicIds deadlock Philip Taylor
Description

See call stack (from Brian), particularly:

        pyrogenesis_dbg.exe!_ia32_asm_CAS()  + 0x10 bytes       
>       pyrogenesis_dbg.exe!ModuleInit(volatile int * initState=0x00c55a7c, long (void)* init=0x004b4ff0)  Line 44 + 0x10 bytes C++
        pyrogenesis_dbg.exe!ApicIds()  Line 172 + 0xf bytes     C++
        pyrogenesis_dbg.exe!VerifyRunningOnCorrectProcessors(unsigned long affinity=1)  Line 252 + 0x5 bytes    C++
        pyrogenesis_dbg.exe!os_cpu_SetThreadAffinityMask(unsigned int processorMask=1)  Line 275 + 0x9 bytes    C++
        pyrogenesis_dbg.exe!os_cpu_CallByEachCPU(void (unsigned int, unsigned int)* cb=0x00414380, unsigned int cbData=12933656)  Line 293 + 0xb bytes  C++
        pyrogenesis_dbg.exe!InitApicIds()  Line 160 + 0xf bytes C++
        pyrogenesis_dbg.exe!ModuleInit(volatile int * initState=0x00c55a7c, long (void)* init=0x004b4ff0)  Line 46 + 0x5 bytes  C++
        pyrogenesis_dbg.exe!ApicIds()  Line 172 + 0xf bytes     C++

The first ModuleInit call locks the state while calling init() which then tries to lock the state itself.

#526 fixed Rename and add descriptions to all maps Philip Taylor
Description

Need some basic descriptions of the maps in public/maps/scenarios. Also need to give them better names.

#527 fixed Display correct player names historic_bruno Philip Taylor
Description

Currently, players in the game are shown as "Player 1", "Player 2", etc. The names ought to match the names given in the (multiplayer) game setup screen.

Possibly the names should be entirely a GUI thing - the simulation code will only care about player ID numbers and will never know the names.

#530 fixed Improve camera handling Philip Taylor
Description

The maximum zoom should perhaps be the current default. Shift+wheel should rotate the camera. Q, E should rotate. Simplify the other rotation controls. Fix the jerky zoom. Add a dev command to unlock the camera movement.

#531 fixed Enforce Population Limit Evans Evans
Description

Enforce Population Limit when training units. Units can be queued up for training past the population limit, but training will start only when there are enough population slots available.

#532 fixed [PATCH] GUI resolution incorrect when screen smaller than requested window size Sergio Fabian Vier Philip Taylor
Description

Steps to reproduce:

  • Optionally set up a .cfg file to start the game in windowed mode with a certain xres/yres (else the default is 1024x768).
  • Set display resolution to smaller than that size.
  • Start the game.

The initial window is shrunk to fit on the screen, but the game renders everything at the configured size instead (so the menu screen is partially off the side of the screen). It should detect this kind of situation and update things to fit.

(ps/VideoMode.cpp is probably a relevant place to look for this.)

#533 fixed Fishing ships for Hellenes Art Department brian
Description

Because we don't want to allow military or merchant ships to fish, we should have dedicated fishing ships. The first we will need will be for the Hellenes. The history department might have relevant information and images. If not, then research will need to be done first. It will require a new model and texture. It might be possible to reuse an existing rigging set from another ship; otherwise that will need to be made also.

#534 fixed Need to implement non-obstruction mode for entities brian
Description

Some entities (farms and fish) should not obstruct other entities. They must still register collisions, so that they can be gathered from. This means that their size cannot simply be set to zero. Some possibly relevant files are:

CCmpObstruction.cpp, CCmpObstructionManager.cpp

There may be other files that need to be modified.

#535 fixed Build errors on OS X 10.6 Philip Taylor
Description

Kimball reports messages like:

../../../source/lib/sysdep/cpu.cpp:38: error: invalid conversion from ‘volatile int64_t*’ to ‘volatile intptr_t*’
../../../source/lib/sysdep/cpu.cpp:38: error:   initializing argument 1 of ‘bool cpu_CAS(volatile intptr_t*, intptr_t, intptr_t)’
../../../source/lib/timer.h: In member function ‘void TimerUnit::AddDifferenceAtomic(TimerUnit, TimerUnit)’:
../../../source/lib/timer.h:180: warning: dereferencing type-punned pointer will break strict-aliasing rules

which looks like it's perhaps using the ARCH_AMD64 branch on a 32-bit target. (Maybe we should add cassert(sizeof(void*) == 8) etc to verify the arch selection earlier?)

Reportedly:

$ g++ -v
Target: i686-apple-darwin10
Configured with: /var/tmp/gcc/gcc-5664~38/src/configure --disable-checking --enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin10 --program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10 --target=i686-apple-darwin10 --with-gxx-include-dir=/include/c++/4.2.1
Thread model: posix
gcc version 4.2.1 (Apple Inc. build 5664)

$ gcc -dumpmachine
i686-apple-darwin10

$ echo $HOSTTYPE
x86_64 

Changing premake.lua to correctly use x86 doesn't seem to change much (the ARCH_AMD64 comes from the source code, not the build system).

I'm not sure what we need to do to help debug this.

#537 fixed Repair functionality for damaged buildings Evans
Description

Give builders the ability to repair damaged buildings.

#538 fixed Atlas has wrong icon in Start menu Philip Taylor
Description

See source/tools/dist/0ad.nsi (NSIS installer script). It adds the map editor to the Start menu, and attempts to use AtlasUI.dll's icon, but that file has no icon. We need to somehow get it to use the right icon (currently found in binaries/data/tools/atlas/icons/ScenarioEditor.ico), either by associating that icon with the DLL or by using that icon by itself.

#541 fixed Strange shape of camera view on minimap lubos
Description

My patch ignore height of terrain.

#543 fixed Replace skybox with black background Jay Weisskopf Philip Taylor
Description

Per discussion here, it would be good to try disabling the skybox and rendering flat black when looking outside the terrain.

Water reflections should still use the skybox as normal.

See CRenderer's calls to RenderSky. I think the background colour is set by Render in GameSetup.cpp, so that should probably be changed to always set it to black.

#544 fixed Fall back to windowed mode if fullscreen fails Philip Taylor
Description

Someone reports startup errors:

ERROR: SetVideoMode failed: 2960x1050:24 1 ("No video mode large enough for 2960x1050")
ERROR: SetVideoMode failed: 2960x1050:24 1 ("No video mode large enough for 2960x1050")
terminate called after throwing an instance of 'PSERROR_System_VmodeFailed'
  what():  System_VmodeFailed

Probably CVideoMode should determine when fullscreen mode fails, then try windowed mode instead of giving up entirely.

#545 fixed Grab mouse in fullscreen Jay Weisskopf
Description

When the game is running in fullscreen, the mouse should be grabbed so it cannot move outside the game. I have multiple monitors, so when I try to pan the camera by putting the cursor along the edges, it moves right into the next monitor, which is a major annoyance.

Attached is a patch to fix the issue.

The ideal functionality for mouse grabbing would probably be to have it always grabbed in fullscreen, and optionally grabbed during gameplay in windowed mode (but not on menus, dev console, text entry, etc). I can also implement this if desired (it'd be a good way for me to start getting my feet wet).

#546 fixed Water continues to flow during pause Jay Weisskopf
Description

When the game is paused, water still appears to flow. I've noticed this in games before and it always bugs me. Fix attached.

#547 fixed lib/sysdep/os/linux/lcpu.cpp sched_getaffinity fails with errno 22 (EINVAL) Sergey
Description

PROBLEM: after compiling and running test_dbg stack call trace lead us to the problem in lib/sysdep/os/linux/lcpu.cpp file while calling to sched_getaffinity function which fails with errno 22 (EINVAL) if you choose Launch debug and test errno after calling to this function.

DESCRIPTION: problem comes not from the game, but from incompatibility of the Linux kernel with NUMA support and glibc. The whole description with solution you may find by the link in the section below.

SOLUTION: http://sourceware.org/ml/libc-help/2009-10/msg00017.html

#548 fixed GUI should give feedback when training queue entry is blocked Philip Taylor
Description

When a training queue contains a item at the front that hasn't started yet, and the player doesn't have a high enough population limit to start training it, it won't start training. Currently the player is never notified about that - the queue looks normal, with no indication the player needs more houses (or more corpses). We need some kind of notification (I don't know what - maybe a message in the tooltip in the training queue? and/or a message sent to the player's screen? and/or make the population counter flash red? etc).

#549 fixed Allow units to be moved by right-clicking on the mini-map Evans
Description

Units can be ordered to move to a certain place by right clicking on the mini-map.

#550 fixed Error loading maps in Atlas pownerus
Description

When I start Atlas in Ubuntu 10.04 it doesn't load maps, when I try to load someone it shows "Failed to run rmgen (error code: 255)".

#552 fixed compile with new boost (1.44+) Karol Trzcionka
Description

At now users with new boost library are not able to build 0ad because of error like:

../../../source/lib/file/vfs/vfs_path.h:68: error: ‘is_basic_path’ is not a template
../../../source/lib/file/vfs/vfs_path.h:69: error: explicit specialization of non-template ‘boost::filesystem::is_basic_path’

http://www.wildfiregames.com/forum/index.php?showtopic=13327

I think it might be a bug in boost but the default api will be changed soon: http://live.boost.org/doc/libs/1_44_0/libs/filesystem/v3/doc/index.htm "Version 3 is a major revision with many new and improved features. It breaks some Version 2 code.

Version 2 is the default version for Boost release 1.44 only. Version 3 will become the default starting with release 1.45."

The problem is the renaming of namespaces (unfortunatelly I haven't found any official info about it) and the compiler can't find "is_basic_path".

I think the attached patch will not break building with older boost (I've tested it only with 1.44).

#553 fixed build crash due to system config header Karol Trzcionka
Description

I've got an error while building 0ad:

../../../source/tools/atlas/AtlasUI/Misc/DLLInterface.cpp: In member function ‘virtual bool AtlasDLLApp::OnInit()’:
../../../source/tools/atlas/AtlasUI/Misc/DLLInterface.cpp:191:28: error: ‘wxHandleFatalExceptions’ was not declared in this scope

It is because the wxHandleFatalExceptions' declaration in wx-2.8/wx/utils.h depend on config in wx/setup.h where I have "#define wxUSE_ON_FATAL_EXCEPTION 0". I can see in utils.h:

#if wxUSE_ON_FATAL_EXCEPTION

// should wxApp::OnFatalException() be called?
WXDLLIMPEXP_BASE bool wxHandleFatalExceptions(bool doit = true);

#endif // wxUSE_ON_FATAL_EXCEPTION

I've disabled debugger's checking locally like in attached patch but I think it is not the best solution.

#554 fixed camera should be always inside the terrain Sergey Sergey
Description

When camera is being moved either by mouse or by keyboard it can be placed outside the terrain, so that the user will see only a black ambient. The right camera handling should never move its position outside the terrain.

#555 fixed Automatic texture compression Philip Taylor Philip Taylor
Description

See discussion.

  • Create a metadata format for expressing DDS compression options.
  • Create sensible metadata for each texture currently in the game.
  • Create a basic tool for visually testing the compression options.
  • Make the engine read the metadata when loading a non-DDS texture, and automatically compress and cache the file on first load.
  • Make the release packager perform the compression in advance.
  • Make the release packager do XMB and Collada conversions too, and make this conversion pipeline less ad-hoc, and pack everything into a zip.
#556 fixed Minimap camera outline clips incorrectly Jay Weisskopf Jay Weisskopf
Description

The camera outline clips correctly on the left, overlaps the borders on the bottom and right, and clips prematurely on the top. glScissor is being passed incorrect values. Attached is a patch which fixes the issue.

#557 fixed review: Minor improvements to non-fancy water fresnel effect Robin Lee
Description

This patch pertains to the water rendering when 'fancy' mode is not enabled, and is purely aesthetic.

Currently, in non-fancy water mode a single fresnel value approximation is being calculated based on camera orientation and applied to the whole map. This is incorrect behaviour, as at low angles near water should be largely transparent (low fresnel) while distant water should appear opaque (high fresnel). Attached is a replacement that calculates fresnel per-vertex and addresses other water lighting issues in low-detail mode.

Thank-you for your time,

Robin

#558 fixed Need a "return to menu" button on the map selection screen Darrell_L
Description

There is no user friendly way to return to the main menu from the map selection screen, other than to select a map to be loaded and then cancel from there. There needs to be a "Cancel" or "Return to Main Menu" or equivalent button.

#560 fixed Need an "exit game" button or graphic on the main menu Darrell_L
Description

The main menu suffers from the same problem as identified in ticket # 558. There needs to be an easily identifiable "Exit Game" button or similar parchment mouse-over graphic button, not just a small close button positioned out of the way. Running fullscreen on a 1080p display, this button is not even within the user's field of view.

#561 fixed Main menu tooltips pop up at inappropriate places Darrell_L
Description

The tooltips for the main menu mouse-over parchment graphics pop up at inappropriate places. For example, pointing at or around the "zero" to the left of the A.D. will popup either the single player, multi-player, or options tooltip.

The appropriate gui/pregame/sprites.xml and mainmenu.xml values need to be adjusted.

For the options graphic, make the following changes:

  • sprites.xml
    • pgOptionsOver and pgOptionsDisabled
      • real_texture_placement="58 87 220 251"
  • mainmenu.xml
    • pgOptionsBt
      • size="80.5664063% 53.6458333% 95.99609375% 74.609375%"
#563 fixed [PATCH] Improve Animal AI Badmadblacksad
Description

We have passive, idle, and skittish.

Add violent, aggressive and defensive behaviors to animalAI.js

Possibly generalize the code so it can be applied to opponent AI (#707)

#564 fixed GetRealPath doesn't Jan Wassenberg Philip Taylor
Description

IVFS::GetRealPath claims to "retrieve the real (POSIX) pathname underlying a VFS file", but it seems to work incorrectly with mods. In particular, it always returns a path like .../data/mods/public/... (or always internal if that mod is loaded), even when the VFS file comes from a different mod.

CXeromyces::GetXMBPath tries to get the mod name from this, which doesn't work since it always returns public (or always internal).

Getting the mod name seems like useful functionality - by separating caches per mod, we can avoid one mod maliciously polluting the cache with a file with the same size/timestamp as another mod's but with different content (which would probably cause OOS errors after the first mod is disabled).

I don't know what GetRealPath should return if the file is in an archive. (It probably doesn't matter here, since archives ought to already contain cached files and we won't need to dynamically generate them.)

#565 fixed Victory conditions fcxSanya fcxSanya
Description

I implemented basic logic for checking victory conditions (only "conquest" for now). There is:

  • new code in player class for buildings count tracking;
  • EndGameManager javascript component, which check defeat/victory conditions by timer and changes player states;
  • new code in session.js, which check state of current player and ends the game if player have been defeated/won:
  • mockup gui page for game summary.
#566 fixed tests fail since #8086 jave
Description

the commit changed something in population counts, one of the tests didnt like that.

#567 fixed Rewrite Hotkey's Implementation Philip Taylor Sergey
Description

Hotkey system needs to be totally reviewed. The main thing to correct is to reduce confusing things like defining hotkeys in Hotkey.cpp and Hotkey.h. They won't work until a new string is added to default.cfg. Some other notes will be added during the process of enhancement.

#568 fixed Gate house has incorrect Pathfinding footprint Iulian
Description

The gatehouse acts as a single square rather than two squares and a rectangle.

Edit: This has been pushed back to a later release, but see the comments below for issues that have been fixed.

#570 fixed Batch conversion of textures for release packages Philip Taylor
Description

Need to convert and cache and archive them all. Only exceptions are fonts and cursors (and blends?) since those don't use the new system.

#572 fixed Dragging view on minimap over mountains increases zoom Jay Weisskopf
Description

If I load up a map like Arcadia and click and drag on the minimap, the view follows the cursor (as it should). After dragging over a mountain, the view becomes increasingly zoomed in, which is annoying.

#573 fixed Camera does not reach top map border frapell
Description

If you do a full zoom, you're not able to get to the top of the map, you have to zoom out a little. And if you zoom in again, the camera will automatically move back.

I used 'top' here, instead of 'north' because if you rotate the camera, it happens on every border on top.

#575 fixed Automatically add force_s3tc_enable to ~/.driconf Philip Taylor
Description

On many Linux systems, we need the user to force the enabling of S3TC in their drivers. (We no longer require the drivers to do compression, so we don't need libtxc_dxtn). Currently we tell them to run driconf and do it themselves.

Perhaps the game could automatically edit the ~/.driconf file and add an application-specific entry to set force_s3tc_enable. Given the documentation it sounds like the intention is that the file is a standard format that can be edited by multiple tools, so we probably shouldn't suffer from incompatible format changes. But maybe this would still be too fragile and/or evil?

#577 fixed [PATCH] Crash when moving large masses of soldiers sireus
Description

The following happens ocasionally after 20 minutes or so of playing, with lots of soldiers (30-40) and few other units.

Now, if I select as many soldiers as I can (selection limit) and then try move them to another location, the game crashes. Remember, this does not happen every time (I'd say every tenth attempt, but that's just guessing) and is quite hard to reconstruct exactly. It just happens.

Judging from the crashlog, I'd say it's a bug in the sound manager, but I don't have any experience with the code, so don't listen to me :)

As far as I an tell, it doesn't matter on which map I'm playing, and I haven't yet found any other patterns.

#579 fixed Water reflections use wrong camera frustum for culling philip frapell
Description

When watching an object through a water reflection, but this object is outside the camera, unwanted behaviour is observed. I uploaded a video to show the bug.

http://www.vimeo.com/15241286

Related: #504

#581 fixed Remove libbfd dependency Philip Taylor
Description

To avoid problems like this, we should just remove the code that uses libbfd, since it's not particularly useful - it's just used for basic stack traces, which rarely provide enough useful information for debugging any problems, and we can easily get Linux users to run in gdb if we want more details.

#582 fixed Add camera reset command Philip Taylor
Description

In the map editor, sometimes you can get the camera lost (badly rotated or scrolled off the side of the world) so it's hard to recover. There should be some way (hotkey? button? menu command?) to reset the camera to an on-world position and default orientation.

Also there should probably be a way to reset to the game's default camera orientation without changing position, so designers can see the same perspective players will usually see. Maybe this should be combined with the recovery thing - always reset to default orientation, and if the camera's still off the side of the map then move it back on.

#584 fixed Update ppa for Ubuntu Maverick Meerkat 10.10 taureliuscrispus
Description

I was trying to install this via your ppa, but you have created no version for Maverick yet. As it comes out on 10 October, many users will upgrade and find the ppa is broken. It would be great if you could fix this on time.

#585 fixed FontBuilder2 Multiplatform support (Win32/*nix) historic_bruno historic_bruno
Description

I updated the FontBuilder tool to support Windows and *nix (in the same scripts). Now it checks system platform before loading Freetype and Cairo libraries. Only difference is library names vary but interface seems to be identical.

#586 fixed sound.mastergain not loaded from config historic_bruno historic_bruno
Description

You probably noticed this bug when trying to set the sound.mastergain config variable to 0.0, in order to mute sound. The sound would be inexplicably loud. Incorrect conditional in Config.cpp caused gain to remain at default value of 1.0

#588 fixed Key Rotation when building construction is selected Kieran P Kieran P
Description

Using the mouse to rotate produces unexpected results and makes wall/gate building much harder. It would be nice to have the 'q' rotate 45 degrees anti-clockwise, and the 'w' key rotate 45 degrees clockwise, when a building is selected for construction.

I'm going to attempt to write a patch in my free time, but if it hasn't been done yet, please go ahead and do this yourself. From what I understand, it should be very easy.

#590 fixed Game setup / civ selection improvements historic_bruno historic_bruno
Description
  • Adds player data to map files
  • Adds support for civ data including "subfactions"
  • Adds support for other map types (random, saved?, etc)
  • Player options displayed in setup
  • Player entities initialized by script (instead of engine)
  • Generalizes XML loading for scripts
  • Civ info displayed in dialog

See discussion here.

#591 fixed [PATCH] Disable sounds for units in FoW/SoD Philip Taylor
Description

If an enemy unit is in fog-of-war/shroud-of-darkness areas, you shouldn't be able to hear them.

This could probably be handled by making CCmpSoundManager::PlaySoundGroup detect if the source entity is visible to the current player (see e.g. CCmpVisualActor::Interpolate using ICmpRangeManager::GetLosVisibility) and then ignoring the sound if not.

#592 fixed Order queuing for formations leper Philip Taylor
Description

When a group of units is ordered to do anything other than walk, the formation controller disbands and each unit performs the order individually. If the formation controller had queued orders, they get lost.

Instead, units ought to stay associated with the formation controller while they're individually carrying out the action (attacking, gathering, etc). The formation controller should detect when its order has been completed (target died, resource exhausted, etc) and then regroup the units and move onto its next order.

#593 fixed Move in formation towards non-movement-order targets leper Philip Taylor
Description

When a group of units are ordered to attack/gather/repair a target, they should walk in formation until they're 'close' to the target (a fixed distance, plus their attack range if it's an attack order?), before splitting up to individually reach the target.

#594 fixed Fix construction/FoW interaction Philip Taylor Philip Taylor
Description

Shouldn't be allowed to build buildings in fog/shroud areas. Construction previews should correctly highlight red when obstructed.

#595 fixed Units should not pursue enemy units if they are not visible Andrew
Description

Units, which pursue the enemy, should only go as far as they last saw the unit. If when they get there, they don't see it, they return to where they were originally. If they see the unit, or other enemy unit, they pursue until they kill it, or lose it. Again, in both cases, they should return to where they started off, not remain where they lost/killed the enemy unit.

#596 fixed Enemy units should be deselected when they go into the FOW Philip Taylor Andrew
Description

When a selected enemy unit disappears into the FOW or black zone, it should be unselected automatically. You can't follow a unit you can't see.

#597 fixed Entities that should be dimmed out are not doing so Philip Taylor Andrew
Description

Discovered stone mines glow when they should be dimmed out because I have no units within the area

#598 fixed Improve fog-of-war rendering Philip Taylor
Description

The rendering of fog-of-war / shroud-of-darkness is currently based on vertex colours, and it looks quite ugly. It'd be nice to have much smoother transitions between the different regions. See e.g. AoE3's rendering (AoM is very similar).

#599 fixed [PATCH] Hide changes to buildings in fog-of-war Itms Philip Taylor
Description

When a building (or tree etc) is visible in a fog-of-war region, no new information should be revealed to the player - they shouldn't see when its hitpoints change, or when it's destroyed, etc. Perhaps they shouldn't be able to select the building at all (even just to see its name).

Probably this would have to be implemented by replacing buildings with 'mirage' entities when they fall into FoW, which are clones of the original buildings with all the dynamic/interactive bits removed. (These would have to be serialised in saved games, and therefore network-synchronised, but only rendered for the appropriate player.)

We also have to deal with the case of players ordering units to attack or gather from a mirage entity - when it comes back into vision, the units should automatically switch to attacking/gathering the real entity (or realise that it's been destroyed).

#600 fixed Formation slot assignments Philip Taylor
Description

In the default box formation used for moving groups of units, the units should be put into appropriate places depending on their type.

Suggested layout:

   ^   ^   ^   ^   ^
  [S] [S] [S] [S] [H]
  [C] [I] [I] [I] [C]
  [C] [I] [I] [I] [C]
  [C] [A] [A] [A] [C]

(for super-units, heroes, cavalry, infantry, archers). The layout obviously needs to adapt depending on what arbitrary selection of units are in the group.

Also, units should be assigned to a 'nearby' slot of the appropriate type (rather than simply using numerically ordered slots), to minimise the amount of reshuffling when units enter or leave the formation.

#601 fixed Female citizens should not move in formation leper Philip Taylor
Description

If a selection consists entirely of female citizens, move orders shouldn't cause them to move in strict formation (since they're not trained soldiers). They should probably stay in their initial layout, or move into some random loose group or something.

When they're in a group with soldiers, probably they should then be in formation (the soldiers are telling them where to stand), or maybe they should hang around in a loose group behind the soldiers.

#602 fixed Ability to add units to or remove from an already selected group of units Kieran P Kieran P
Description

The game needs a way to select units to add to a group of already selected units.

All of the following happen when holding the SHIFT key:

  • Clicking a single unselected unit should add them to the group of already selected units
  • Clicking a single selected unit should remove them from the group of already selected units
  • Dragging over a group units where any/all of them in the dragzone are unselected should select the unselected ones, while keeping the selected ones selected
  • Dragging over a group of units where all of them in the dragzone are selected should remove them all from the group.

The latter two options should show the dragging zone as normal, and use the unit selection rings to indicate what will happen. e.g. for the last one, unselecting a group of units should remove the unit selection ring as you dragzone over them.

#603 fixed tests fail since #8278 jave
Description

... on my hudson compiling 0ad snaps. it runs on f13.

#605 fixed Fix NVTT Philip Taylor Philip Taylor
Description

Apply the patch for this once it's available.

#606 fixed Checked 0ad sourcecode with cppcheck Mr. X
Description

I checked the sourcecode of 0ad with cppcheck (a static code analysis tool). It has found a couple of possible error and style problems. I attachet the log to this ticket.

#607 fixed tests fail since #8300 jave
Description

Would someone want mails from my Hudson instance when this happens? Or would you like support to set up a public build server on your infrastructure? Currently I use Hudson the most, but I could help set up whatever.

#608 fixed compile error after nvtt changes fabio
Description

After latest nvtt changes 0ad no longer compile correctly:

test_test.cpp
test_CStr.cpp
/usr/bin/ld: warning: libnvcore.so, needed by ../../../binaries/system/libnvtt.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libnvmath.so, needed by ../../../binaries/system/libnvtt.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libnvimage.so, needed by ../../../binaries/system/libnvtt.so, not found (try using -rpath or -rpath-link)
../../../binaries/system/libnvtt.so: undefined reference to `nv::AlphaBlockDXT5::index(unsigned int) const'
../../../binaries/system/libnvtt.so: undefined reference to `nv::ColorBlock::isSingleColor() const'
../../../binaries/system/libnvtt.so: undefined reference to `nv::Image::pixels()'
../../../binaries/system/libnvtt.so: undefined reference to `nv::Image::Image()'
../../../binaries/system/libnvtt.so: undefined reference to `nv::FloatImage::createImage(unsigned int, unsigned int) const'
../../../binaries/system/libnvtt.so: undefined reference to `nv::BoxFilter::BoxFilter()'
../../../binaries/system/libnvtt.so: undefined reference to `nv::DDSHeader::setHeight(unsigned int)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::String::setString(char const*)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::FloatImage::FloatImage(nv::Image const*)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::DDSHeader::setLinearSize(unsigned int)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::DDSHeader::setTexture2D()'
../../../binaries/system/libnvtt.so: undefined reference to `nv::Image::~Image()'
../../../binaries/system/libnvtt.so: undefined reference to `nv::FloatImage::fastDownSample() const'
../../../binaries/system/libnvtt.so: undefined reference to `nv::Quantize::FloydSteinberg_BinaryAlpha(nv::Image*, int)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::ColorBlock::init(nv::Image const*, unsigned int, unsigned int)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::AlphaBlockDXT5::setIndex(unsigned int, unsigned int)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::Image::height() const'
../../../binaries/system/libnvtt.so: undefined reference to `vtable for nv::KaiserFilter'
../../../binaries/system/libnvtt.so: undefined reference to `nv::DDSHeader::setPixelFormat(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)'
../../../binaries/system/libnvtt.so: undefined reference to `vtable for nv::TriangleFilter'
../../../binaries/system/libnvtt.so: undefined reference to `nv::Image::allocate(unsigned int, unsigned int)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::DDSHeader::setTextureCube()'
../../../binaries/system/libnvtt.so: undefined reference to `nv::FloatImage::downSample(nv::Filter const&, nv::FloatImage::WrapMode) const'
../../../binaries/system/libnvtt.so: undefined reference to `nv::DDSHeader::hasDX10Header() const'
../../../binaries/system/libnvtt.so: undefined reference to `nv::DDSHeader::swapBytes()'
../../../binaries/system/libnvtt.so: undefined reference to `nv::Image::Image(nv::Image const&)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::normalizeNormalMap(nv::FloatImage*)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::DDSHeader::setFourCC(unsigned char, unsigned char, unsigned char, unsigned char)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::StringBuilder::StringBuilder()'
../../../binaries/system/libnvtt.so: undefined reference to `nv::mem::free(void const*)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::ColorBlock::ColorBlock()'
../../../binaries/system/libnvtt.so: undefined reference to `nv::FloatImage::resize(nv::Filter const&, unsigned int, unsigned int, nv::FloatImage::WrapMode) const'
../../../binaries/system/libnvtt.so: undefined reference to `nvAbort(char const*, char const*, int, char const*)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::ColorBlock::splatX()'
../../../binaries/system/libnvtt.so: undefined reference to `vtable for nv::BoxFilter'
../../../binaries/system/libnvtt.so: undefined reference to `nv::Quantize::FloydSteinberg(nv::Image*, unsigned int, unsigned int, unsigned int, unsigned int)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::StringBuilder::StringBuilder(char const*)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::DDSHeader::setWidth(unsigned int)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::DDSHeader::setMipmapCount(unsigned int)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::TriangleFilter::TriangleFilter()'
../../../binaries/system/libnvtt.so: undefined reference to `nv::AlphaBlockDXT5::evaluatePalette(unsigned char*) const'
../../../binaries/system/libnvtt.so: undefined reference to `nv::Quantize::BinaryAlpha(nv::Image*, int)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::ColorBlock::swizzleDXT5n()'
../../../binaries/system/libnvtt.so: undefined reference to `nv::createNormalMap(nv::Image const*, nv::FloatImage::WrapMode, nv::Vector4 const&, nv::Vector4 const&)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::Filter::~Filter()'
../../../binaries/system/libnvtt.so: undefined reference to `nv::KaiserFilter::KaiserFilter(float)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::Image::width() const'
../../../binaries/system/libnvtt.so: undefined reference to `nv::Image::scanline(unsigned int) const'
../../../binaries/system/libnvtt.so: undefined reference to `nv::ColorBlock::splatY()'
../../../binaries/system/libnvtt.so: undefined reference to `nv::DDSHeader::DDSHeader()'
../../../binaries/system/libnvtt.so: undefined reference to `nv::BlockDXT1::evaluatePalette(nv::Color32*) const'
../../../binaries/system/libnvtt.so: undefined reference to `nv::KaiserFilter::setParameters(float, float)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::DDSHeader::setPitch(unsigned int)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::StringBuilder::reset()'
../../../binaries/system/libnvtt.so: undefined reference to `nv::FloatImage::createImageGammaCorrect(float) const'
../../../binaries/system/libnvtt.so: undefined reference to `nv::mem::malloc(unsigned int)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::StringBuilder::~StringBuilder()'
../../../binaries/system/libnvtt.so: undefined reference to `nv::StringBuilder::copy(nv::StringBuilder const&)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::FloatImage::toLinear(unsigned int, unsigned int, float)'
../../../binaries/system/libnvtt.so: undefined reference to `nv::DDSHeader::setNormalFlag(bool)'
collect2: ld returned 1 exit status
make[1]: *** [../../../binaries/system/pyrogenesis_dbg] Errore 1
make: *** [pyrogenesis] Errore 2
make: *** Attesa dei processi non terminati....
test_CLogger.cpp
#610 fixed Garrisoning units in buildings Brian Evans
Description

Patch to implement Garrisoning in buildings Features Implemented: Auto Unloading of units when the building's health reduces to a particular amount Filtering unit classes on garrisoning Fixed "GetPosition() called when IsInWorld() is false" error Unload All Auto Healing garrisoned units

Features Not Implemented: Special cases for Ships Garrison flag appearing on top of the building Playing Garrisoning sound

Other things to be done: Modify XML to set the class/max number of units which can be garrisoned in a building, heal rate etc

#611 fixed ChooseCacheSize picks crazy numbers Jan Wassenberg Philip Taylor
Description

Re r8319:

I'm on 64-bit Linux with 4GB RAM. In ChooseCacheSize, I get values like total == 3924, available == 303. (I've apparently got around 1.2GB of OS caches/buffers, which are not counted as available - the available figure is always pretty low). That results in ChooseCacheSize choosing its "below min-spec" path (which is silly) and returning 2304 MB (which is also silly, and if this were a 32-bit OS (with PAE) it could be trying to allocate more than the entire virtual address space which sounds problematic).

The calculation seems strange anyway, and lacking in rationale. We don't have 500MB of (public) game data (it's more like 250MB), the 'game' isn't 400MB (it depends on the amount of data and it often looks more like 200MB for me (including file cache)), we don't load all the data at once (the point of biomes was partly to cut the amount of data required per map by only using a well-defined subset). Also we have lots of other caches that reduce the need for everything to be kept in the file cache (I'm assuming it's only useful if a file gets loaded twice) and that contend with the file cache for RAM (it seems better to spend the RAM on higher-level caches to save on loading cost), so it's not clear that a large file cache has any benefit and/or doesn't cause any harm. Also it's contending with the OS disk cache, which will cache the compressed .zip file and therefore make better use of RAM than our own file caching.

Also it looks like OperatingSystemFootprint is going to give a highly uninformative assertion failure message as soon as somebody runs the game on Windows 8 (and even when we update the code, people will still try running old releases), which sounds like a bad idea.

So it seems that this change is adding a lot of complexity and unpredictable non-deterministic system-dependent performance-affecting behaviour, without it being clear that it's any better than the old fixed-size cache. So I'd be much happier if either it was made much simpler again, or if it was made clear to me why I'm missing the point and it's actually a good idea :-)

#612 fixed Mesa: User error: GL_INVALID_OPERATION in glDeleteShader fabio
Description

When closing the editor I always get a:

Mesa: User error: GL_INVALID_OPERATION in glDeleteShader

I compiled mesa and 0ad with debug symbols and put a break on output_if_debug. I get this backtrace:

Breakpoint 1, output_if_debug (prefixString=0x2919dcc "Mesa: User error", outputString=0xbfffcb6c "GL_INVALID_OPERATION in glDeleteShader", 
    newline=1 '\001') at main/imports.c:809
809	{
(gdb) bt
#0  output_if_debug (prefixString=0x2919dcc "Mesa: User error", outputString=0xbfffcb6c "GL_INVALID_OPERATION in glDeleteShader", 
    newline=1 '\001') at main/imports.c:809
#1  0x02759a16 in _mesa_error (ctx=0xb6fc4c78, error=1282, fmtString=0x2928cec "%s") at main/imports.c:998
#2  0x0276f4fe in _mesa_lookup_shader_err (ctx=0xb6fc4c78, name=1, caller=0x291c4b9 "glDeleteShader") at main/shaderobj.c:170
#3  0x0276e2df in delete_shader (ctx=0xb6fc4c78, shader=3221212012) at main/shaderapi.c:449
#4  0x084470d3 in Ogl_Program_dtor (p=0x8829540) at ../../../source/lib/res/graphics/ogl_shader.cpp:430
#5  0x08444582 in h_free_idx (idx=2, hd=0x8829528) at ../../../source/lib/res/h_mgr.cpp:613
#6  0x08444d6e in Shutdown () at ../../../source/lib/res/h_mgr.cpp:838
#7  0x084646f1 in ModuleShutdown (initState=0x861fe8c, shutdown=0x8444cd2 <Shutdown()>) at ../../../source/lib/module_init.cpp:71
#8  0x08444e4b in h_mgr_shutdown () at ../../../source/lib/res/h_mgr.cpp:860
#9  0x082d24c1 in Shutdown () at ../../../source/ps/GameSetup/GameSetup.cpp:681
#10 0x083b259b in AtlasMessage::fShutdown (msg=0xb6ff5d40)
    at ../../../source/tools/atlas/GameInterface/Handlers/GraphicsSetupHandlers.cpp:103
#11 0x083b2552 in AtlasMessage::fShutdown_wrapper (msg=0xb6ff5d40)
    at ../../../source/tools/atlas/GameInterface/Handlers/GraphicsSetupHandlers.cpp:87
#12 0x0839f799 in BeginAtlas (args=..., dll=...) at ../../../source/tools/atlas/GameInterface/GameLoop.cpp:211
#13 0x082d4a59 in ATLAS_Run (args=..., flags=1) at ../../../source/ps/GameSetup/Atlas.cpp:54
#14 0x082d4afb in ATLAS_RunIfOnCmdLine (args=..., force=false) at ../../../source/ps/GameSetup/Atlas.cpp:77
#15 0x081e4a29 in RunGameOrAtlas (argc=2, argv=0xbffff424) at ../../../source/main.cpp:431
#16 0x081e5107 in main (argc=2, argv=0xbffff424) at ../../../source/main.cpp:504
(gdb) c
Continuing.
Mesa: User error: GL_INVALID_OPERATION in glDeleteShader
TIMER| resource modules: 9.81219 s
TIMER TOTALS (6 clients)
-----------------------------------------------------
  xml_validation: 24.7842 Mc (3x)
  tc_linkProgram: 62.8229 Mc (7x)
  tc_compileShader: 215.246 Mc (11x)
  tc_transform: 15.5265 Mc (140x)
  tc_plain_transform: 6956.99 kc (126x)
  tc_png_decode: 7304.01 kc (2x)
-----------------------------------------------------
TIMER| shutdown misc: 552.861 us
JS engine warning: leaking GC root '' at 0xb7220110
JS engine warning: 1 GC root remains after destroying the JSRuntime at 0xb7485c48.
                   This root may point to freed memory. Objects reachable
                   through it have not been finalized.
[Thread 0xb7dd9b70 (LWP 27344) exited]
lost connection to FAM[Thread 0xa4127b70 (LWP 27347) exited]

Program exited normally.
#613 fixed Production queue is not limited Brian Kieran P
Description

If you keep clicking units to add to a production queue, you can do it forever. The GUI limits to 16, but behind the scenes, it allows an infinite amount of units to be queued. This causes some gameplay issues when playing multiplayer, where a player can queue hundreds and not have to go back to it.

#614 fixed Disable developer tools in multiplayer Philip Taylor Kieran P
Description

Obviously! I can't kill units or buildings, but I can control them and build things, depleting the other persons resources. Not to mention revealing the whole map right away.

#615 fixed women can't hunt but show meat icon Philip Taylor fabio
Description

If they are not able to hunt the meat icon shouldn't show up when hovering over animals. Eventually they should be able to hunt chickens and other domestic animals.

#616 fixed New special colour sprite historic_bruno historic_bruno
Description

There isn't currently a way for scripts to change the color of an image. However, the GUI engine does allow "special" sprites to be defined at run-time. Currently only stretched images are supported, so I've modified this to add support for solid color sprites. This is useful for among other things, player colors, which may change from one game to the next, thus eliminating the need to hardcode N number of sprites ahead of time.

Example usage:

// Get an image object from the GUI
var imageObject = getGUIObjectByName("colourThing");
imageObject.sprite = "colour: 255 0 0 200"; // RGBA

The colour is specified in integer RGBA format like other GUI objects (0-255).

This should be useful for any GUI object with a sprite property.

One caveat as Philip notes, is that the sprite will be stored based on its name so every time a new sprite is created like this, it will be cached separately if even one character is different (even if it would appear identical).

#617 fixed fishes not visible when "Water Reflections" is enabled fabio
Description

Resolution: Update mesa driver (see comment 4 - #comment:4)

#619 fixed Improve Gate and Wall System Kieran P
Description
  • Gates that have animation to open and close, along with sounds to accompany it
  • Gates that have obstruction zones over the towers only, not the gate part
  • Gates that can be locked, so nothing gets in or out
  • Allow Walls, Gates, and Towers to overlap, so that complex wall systems, that link together, are able to be built.
#620 fixed When one player quits multiplayer, all players are forced to leave Philip Taylor Kieran P
Description

When Michael, Brian and myself played, and Michael quit at the end, I was forced to leave, and then Brian after me. Obviously it'd be nice to be able to return to the game, to continue playing with the other person, and the person who left should have their units set to null player (idle/lifeless).

#621 fixed Even warrior cant kill chicken in 1 hit Сергей
Description

chicken is too healthy)) there are 40 meat in chicken. elephant have only 500. 500/40=12.5 =D

#622 fixed Upgrade SpiderMonkey to improve speed Philip Taylor Kieran P
Description

evans1: Will you be updating to the latest version of Spider Monkey? The one used in FF 4? That is supposed to be blazing fast. Dunno if it's still called SpiderMonkey, though..

Phillip: I want to upgrade some time, but the API changed incompatibly so it's a bit of a pain

Phillip:: (It's still called SpiderMonkey, and also sometimes called TraceMonkey and JaegerMonkey)

#623 fixed Shadows should be disabled by default on slower cards/drivers fabio
Description

Shadows on some cards/drivers are really slow and should be disabled by default there (eventually the shadows setting on these cards should also be "greyed out" in the GUI and could be only changed in the config file).

On my Radeon X1600:

  • with the mesa r300 gallium driver shadows are pretty fast;
  • with the mesa r300 classic driver enabling shadows make the game run at 1 frame every 20s, while it work at a playable fps without them.

I am attaching glxinfo obtained while using both drivers.

#624 fixed [nvidia linux driver bug] Segmentation fault when move cursor over game menu leolik
Description

0ad version: 0ad_0.0.0+r08319-1~wfgppa1~maverick1_amd64.deb from ppa:wfg/0ad repository OS: Ubuntu 10.10 amd64

Steps:

  1. Run game
  2. Move cursor over 'Single Player', 'Multiplayer' or 'Scenario Editor' - game closed with 'Segmentation fault'
#625 fixed Minimap is not flush with left side of screen in widescreen or non-standard aspect ratios. brian Jay Weisskopf
Description

The minimap is not flush with the left side of the screen on my widescreen (16:10) monitor. There is extra space between the left edge of my screen and the minimap. This can also be seen when the game is windowed by resizing the game to a non-standard aspect ratio.

#626 fixed Game should not override cursor sprite when over window frame. Jay Weisskopf
Description

The game normally uses a custom cursor sprite when the cursor is within the gameplay area. However, the custom sprite is still displayed when the cursor moves outside of the gameplay area and over the window's frame. The cursor should go back to whatever the desktop environment wants at this point. It is slightly disconcerting to still see a game pointer when one expects to see a resize sprite.

#627 fixed hotkeys problems fabio
Description

The big screenshot hotkey CTRL+ALT+F2 on linux switches to console. It should be changed (F3?).

The [ and ] keys to rotate buildings don't work on my MacBook Pro running Ubuntu while I can write them here with at least two different key combinations.

#631 fixed The Scenario editor asks for a location to save a map and ignores it... ben dee@earlsoft.co.uk
Description

When saving a scenario, it shows the standard file save dialog (Windows Vista), and then completly discards the location chosen.

It looks like it is using just the filename component and saving it into: C:\Users\Dee Earley\AppData\Roaming\0ad\cache\mods\public\maps\scenarios\

I have no problem with it being put there, but the dialog should either default to that location (It defaulted to my documents and I couldn't find where they should be put) or just allow a name part to be entered.

The former is a preferred choice as it means the user can save scenarios wherever they want as backups, to email, etc.

#633 fixed [PATCH] Building and Ship Repair mimo Michael D. Hafer
Description

Repair is currently taking the value from:

<Builder>

<Rate>1.0</Rate>

</Builder>

And interpreting that as a repair rate of 1 Health/Hitpoint per second. This is bad for a few reasons:

  1. It takes one value and uses it for two different things. Originally this value was (and still is) used as a base value for building x the BuildTime value of the structure being built.
  1. If we want to change a unit's Build rate, but not the Repair rate, then we can't do it.
  1. 1 hitpoint per second is painfully slow. To change the value would also be changing doubling, tripling, or quadrupling the build rate (inverse of point no. 2).

These values need to be separated. A separate "repair" tag and value need to be implemented. It could be done one of two ways:

  • In the unit templates
  • In the building templates

The benefits and pitfalls of each need to be discussed before choosing the implementation.

OR

We can just link Repair with Building at a 1:1 ratio so that repairing gives the structure the same amount of health per second as building it does. Also, any "cost" associated with repairing a building is the same cost as constructing it. Say, if the building is damaged by 25%, then it take 25% of the build cost to repair it.

#638 fixed Summary screen fcxSanya fcxSanya
Description

According to the GUI_-_Achievements the summary screen should contain following statistics:

(citation start)

5.2.2.1. Military

  • 1. Units trained, 2. enemy units killed, and 3. player units killed.
  • 4. Buildings constructed, 5) enemy buildings destroyed, and 6) player buildings destroyed.
  • 7. Number of Civ Centres built (provinces claimed).
  • 8. Number of enemy Civ Centres destroyed.

5.2.2.2. Economy

  • Resources Gathered: 1. Food, 2. Wood, 3. Stone, 4. Ore.
  • 5. Tribute paid.
  • 6. Tribute received.
  • 7. Resources traded.
  • 8. Resources spent.

5.2.2.3. Research

  • 1. Number of Techs researched.
  • 2. % of available techs researched.
  • 3. Time advanced to Town.
  • 4. Time advanced to City.

5.2.2.4. Score

(citation end)

#640 fixed [PATCH] Pasting into the join game "address" field prepends onto the selection Kenny Long dee@earlsoft.co.uk
Description

When you are joining a network game and you select the current IP to paste in a new one, it prepends it to the current address and highlights the last octet of teh pasted address. When you select the current address and type, it works as expected.

#641 fixed Atlas crashes when you "Leave the game" while in the the simulation ben dee@earlsoft.co.uk
Description

I know it's a silly thing to do, but as it let me... :p I ran a simulation and let all my units get killed. When it said I was defeated, I clciked Yes to leave the game and it crashed with: Unhandled access violation reading 0x00000004 Location: Unknown:0 (?) Call stack: 0142DF27 0142CE1F 013AB9C1 013AB9D9 013D795E 013D7988 013BA036

OS Error: 487 attempt to access invalid address.

On showing the message, it immediatly crashes and falls back to the installed debugger.

(Alpha 2 on Windows Vista)

#642 fixed Atlas crashes then asserts when you reset a simulation dee@earlsoft.co.uk
Description

Start a simulation then press reset (doesn't matter what speed or if it was paused). Atlas comes up with:

Details: unhandled exception (std::out_of_range("invalid vector<T> subscript")) Location: unknown:0 (CxxThrowException) Call stack: 01383EEF 0136BE0A

errno = 0 (?) OS error = 487 (Attempt to access invalid address.

It then immediatly asserts, presumably on another thread as both messages are independant and not blocking the other.

#643 fixed [PATCH] Add current gatherers count next to player's resource count Freagarach Kieran P
Description

Add the amount of workers in a number next to the current amount of that resource, along with a tooltip.

e.g. If user has 5000 food, and 10 people gathering food (from any source), show

[food_icon] 5000 / 10

And when user hovers over the amounts, both should display a tooltip with:

Food resource: 5000
Number of gatherers: 10

Do the same for all resource types.

#645 fixed Complete Garrisoning system functionality michael Kieran P
Description

With the recent addition of basic garrisoning, it'd be good to have this functionality finished off. Excluding artwork related items (e.g. propping) which will be handled later, here is some things left to do:

Enhancements

* [DONE] Infantry units which are garrisoned should be able to attack nearby enemies, within their normal range. Don't worry about being able to see the unit, just seeing the arrow from the building to the enemy and hitting it will be enough. The amount of arrows is equal to the amount of infantry units garrisoned. 10 infantry garrisoned == 10 arrows a second.

* [DONE] Need to be able to garrison units without using the CTRL key. A garrison button next to the kill button in the unit picture panel, which which clicked, makes the next left click garrison all selected units to it.

* [DONE] When a unit isn't able to be garrisoned into the building, then show a greyed out version of the cursor when holding down CTRL.

* [DONE] Garrisoning needs a new 'out' icon. It's currently pointing into the door, but the text says 'Unload-all'. The icon should have the arrow point away from the door.

* [MOVED TO #817] Need a way to tell if a building has garrisoned units, and how many, without having to click on it. Maybe a count next to the health bar, or a flag on the top of buildings?

Bug Fixes

* [DONE] Not all units are going to the rally flag for the building when they are all unloaded. Unloading one at a time works.

* [DONE] When more than one unit of a type is garrisoned, the garrison buttons may change position every time a unit of that type is unloaded. This occurs when units of the same type are spread throughout the garrison list. This list may need to be sorted to prevent this from happening. (Unit selections would also suffer from this problem if selections that contained multiple units of the same type allowed removing a single unit. However, the selection buttons remove the entire group so this problem is not seen there.)

* [DONE] The garrison icon when holding down CTRL (or using the garrison button in the units panel) doesn't grey out when that unit can be garrisoned, and you hover over a building which does support garrisoning, but the combination of the two (building and unit) is unsupported. Example: it shows coloured garrison icon when you try to put a horse into a tower, which is not allowed.

* [MOVED TO #818] When units are garrisoned in a ship, they do not increase the amount of arrows fired from it.

* [MOVED TO #818] When units are garrisoned in a ship, they can currently be ungarrisoned over deep water, which causes them to be stuck there.

#647 fixed Units constantly getting stuck in an animation Phillip Kieran P
Description

It's happening more often. When a resource disappears, or a building is destroy, or a unit is killed, when large groups of units are involved, many of them get stuck in the gathering/killing animation, and do not stop. This doesn't affect gameplay, but it sure looks weird, and should be fixed.

Maybe something that reevaluates each units orders per second and readjusts there animation accordingly?

#648 fixed Created files shouldn't have the execute bit set fabio
Description

Many files created by 0ad (e.g. cache, screenshots, ...) have the x (execute) bit set on linux. They should be created using the default mask.

#650 fixed something wrong with the map oasis Art Department Сергей
Description

there are some colored spots on it

#651 fixed can't compile after recent changes fabio
Description

Caused by r8484:

==== Building wxJS ====
linux.cpp
../../../source/lib/sysdep/os/linux/linux.cpp:27: fatal error: lib/external_libraries/boost_filesystem.h: Nessun file o directory
compilation terminated.
make[1]: *** [obj/lowlevel_Debug/linux.o] Errore 1
make: *** [lowlevel] Errore 2
#653 fixed Make timer_Time() threadsafe Philip Taylor
Description

timer_Time isn't thread-safe, due to t_last.

CLogger::PushRenderMessage uses it (to record the times when warnings/errors are logged), which may be called from a background thread.

If it's hard to fix, we could hack around it by having CLogger use a non-monotonic and/or low-precision timer instead, but it'd be nicer if the function worked.

(Incidentally, t_last+DBL_EPSILON seems wrong - if t_last >= 2.0 then I expect t_last+DBL_EPSILON == t_last. I don't think it'd necessarily be bad to remove that guarantee and expect callers to handle 0 (though still guarantee non-negative).)

#654 fixed Make debug_* functions threadsafe Philip Taylor
Description

The network server code needs to run in a background thread (to minimise latency when forwarding messages between clients), and it involves lots of code that can encounter errors. That code uses debug_assert, debug_warn, DEBUG_WARN_ERR, debug_printf, for error handling.

Avoiding those functions would be difficult and painful. It would be much better if they worked safely when run from a background thread.

Currently they use global variables, create dialog boxes, write files, etc, which is probably all unsafe with multiple threads.

It may be sufficient for them to do something more minimal than on the main thread (e.g. skip the dialog boxes and crashlogs, and just dump the message to stderr or whatever) - we don't use threads much so it doesn't need to be as user-/developer-friendly as for the bulk of the code. It mainly should just avoid potentially triggering crashes and deadlocks that mask the errors we're trying to report.

#655 fixed Game setup: Player assignment not updated when switching map historic_bruno fabio
Description
  • Select Single Player -> Acropolis Map -> Use Player 4
  • Select a map with < 4 players, e.g. Arcadia II: there is no "You" player assigned
  • Start game -> lots of error

In my opinion when moving to a different map "You" should always be assigned to "Player 1"

#656 fixed Circular maps problems fabio
Description
  • Map Hellenized Egipt: one Elefant on the left of the lake at North-West of the Player 1 disappears out of the map and never come back; update: after map update (r8533) this is no longer reproducible, but maybe it should still need to be fixed in the engine;
  • the minimap doesn't cover all real map and units at map borders aren't visible on the minimap;
  • camera can move outside of the circle at angles;
  • the circle around the minimap shouldn't be black otherwise it's not obvious you are on a circular map, especially if starting player is not near border. It should have a decoration similar to other boxes.
#658 fixed Troubleshoot Spidermonkey JIT historic_bruno
Description

I've been porting the random map generation code over to JavaScript, and per Philip's suggestion I tried adding the JSOPTION_JIT flag for Spidermonkey, to enable the just-in-time compiler. Getting this to work is critical if map generation will be written in JS, and given how the same code performs in Firefox 3.6 and FF 4 beta, it seems a very reasonable plan. Without JIT, the code is very slow, which is not surprising since the map generation is heavily dependent on loops to check distance between points and evaluate noise maps.

Now I'm not sure if we have an outdated/broken Spidermonkey implementation and need to upgrade per #622, which we may have to do anyway, or it may be that enabling JIT is a bit more complex than adding that flag. Whatever the case, here's a patch to add a random map system in JS to troubleshoot the cause of this.

The above description does not apply now, as I was compiling in Debug mode rather than Release mode, which disabled JIT. However we still need to troubleshoot some issues in JIT behavior especially if Mozilla will only be supporting SSE2 x86 hardware in FF4 (see their wiki), and so this ticket remains very relevant.

#662 fixed Cope with corrupted cache Philip Taylor
Description

When the game crashes during loading (e.g. due to driver bugs), it sometimes leaves empty XMB files in the cache. When you start the game again, it complains

Xeromyces.cpp(197): Assertion failed: "size >= 4"

and fails.

Probably we should detect this kind of truncated output and automatically delete and re-convert the XML file, if possible.

#663 fixed Add GUI error dialog box on Linux / OS X Philip Taylor
Description

On Windows, debug_warn etc pops up a dialog box. On Linux / OS X we just print to stdout and expect the user to respond via stdin, which is no good if they're fullscreen or if they launched from a menu.

Possibly we could use an external tool like xmessage to do the fiddly business of displaying a dialog box with minimal dependencies.

#665 fixed Draw passability overlay on top of water Philip Taylor
Description

In Atlas, with fancywater enabled, the red tile passability indicators (handled by PathfinderOverlay) are invisible when underwater. They should be made visible somehow, so you can see when water is too shallow/deep to traverse, probably by drawing the overlay on top of the water instead of on the terrain.

#666 fixed Remove Devil Philip Taylor
Description

We use DevIL only for loading images for the Colour Tester tool. It would be nice to simplify our dependencies by getting rid of it. Maybe just delete the Colour Tester entirely, or merge it into the scenario editor (similar to the actor viewer) and use the game engine to load the textures instead.

#669 fixed Minimap dragging reads mouse position after left button is released historic_bruno
Description

If you use the minimap to change your view in the game, there's a short time after releasing the left mouse button where the camera is still moving. Ideally the instant you release the button, the view should stop changing because some people have mouse cursors that move fast and even 1/4 sec is enough time to move very far from where you intended.

#670 fixed unrecognised format 'macho64' on OS X Micah Gideon Modell
Description

In attempting to build on OS X Snow Leopard (10.6.5), I run into the following fatal error:

...a whole bunch of stuff...
==== Building test_gen ====
amd64_asm.asm
nasm: fatal: unrecognised output format `macho64' - use -hf for a list
type `nasm -h' for help
make[1]: *** [obj/lowlevel_Release/amd64_asm.o] Error 1
make: *** [lowlevel] Error 2
make: *** Waiting for unfinished jobs....
make[1]: `../../../binaries/system/libwxJS.a' is up to date.

My brief searching indicates that there's hack in place to support linux compilation or something of the sort and I suspect it is interfering.

#671 fixed Disable compression of public.zip Philip Taylor
Description

Using zip compression when generating public.zip for release packages has a significant detrimental effect on download size (maybe around 25%), because it conflicts with the (much better) bz2/lzma package compression. People would probably have to play the game dozens of times for the gain in startup performance to outweigh the extra download time, so the tradeoff doesn't seem good at our current stage. So we should disable compression now, for the clear improvement in download size, and then later we can spend more time thinking about and measuring and optimising startup performance again.

#672 fixed Complete Resource Shuttling Functionality Philip, Michael Kieran P
Description

Bugs

* [WONT FIX NOW] [Philip] Redo pathfinding so less units get into path finding conflicts, and end up doing a dance.

* [DONE] [Philip] Redo unit ai so that when a building is destroyed, the unit recomputes the nearest dropsite

* [DONE] [Philip] When a resource is exhausted while unit is in transit to dropsite, currently the unit stops at the resource dropsite and stays there. They should record the position of the resource they were gathering, and return there, and look for another resource to work on in that area.

* [DONE] [Philip] In certain cases, when a resource is exhausted before they reach 20 in their inventory, and no other similar resources around exist, a unit will stay at the resource, standing still, with a part-filled inventory, when what they should do is return to the dropsite, dump their load, and then return to were they were, empty handed.

* [DONE] [Philip] When a unit finishes building a mill or a farmstead, they should look for nearby resources to mine. In this way, a bunch of units can be tasked to build a mill near trees, and once done, automatically go start getting the trees.

Tweaks

* [WONT FIX] [Michael] Units gathering from animals get their inventory full nearly instantly, while units gathering from farms take much long. Re-balance all gathering rates.

Artwork

* [DONE] [Michael] Need to complete the unit animations of carrying a specific resource. Currently only spearman work, and only for meat and grain.

* [DONE] [Michael] Women are the only animation left that don't have nice carrying (curent balance a basket on their head).

#673 fixed [PATCH] Mouse wheel in minimap historic_bruno historic_bruno
Description

Mousewheel behaviors that work in the game view should work in the minimap as well:

  1. Mousewheel up/down should change zoom
  2. Shift+mousewheel up/down should rotate the view (like Q + E keys)
#674 fixed Make the Exit Game and Delete Entity dialogs consist with session GUI brian
Description

The exit game and delete entity dialogs feature the pregame styling. This is hard coded. Since styles cannot be changed dynamically like sprites can, this is not an easy fix. Also, the exit game dialog accessed from the pregame main menu should retain the currently style.

The files involved with the message box are found (on Windows) at: C:\0ad\binaries\data\mods\public\gui\msgbox\msgbox.xml

This file contains both the XML objects and JS code. The code should probably be separated from this file.

#675 fixed Saving screenshot should provide message notifying user where it saved historic_bruno historic_bruno
Description

Currently when you take a screenshot in the game (F2), there is no message and the screenshot is silently saved to a certain directory, differing by the user's OS. A dialog is probably too much interruption for the user, as it's one more thing they'd have to click through, so a chat message / log entry seems a logical way to solve this.

#678 fixed [PATCH] [Atlas] Improve unit selection options historic_bruno Kieran P
Description

Copy over unit selection methods from simulation to the editor.

  • Double-clicking selects all similar units
  • Band-boxing selection of units
  • SHIFT+Click adds to already selected group
  • CTRL+Click removes from already selected group
#681 fixed Think about reserved slots in pseudo-global Philip Taylor
Description

CGUI copies pseudo-global stuff from GPSEE modules, which also do

    /** Get the cached class prototypes sorted out in advance. Not guaranteed tracemonkey-future-proof. 
     *  Almost certainly requires eager standard class initialization on the true global.
     */
    for (key = 0; key < JSProto_LIMIT; key++)
    {
      jsval v;

      if (JS_GetReservedSlot(cx, realm->globalObject, key, &v) == JS_FALSE)
        return JS_FALSE;

      if (JS_SetReservedSlot(cx, moduleScope, key, v) == JS_FALSE)
        return JS_FALSE;
    }

which we don't. Apparently this might possibly cause tracer-interaction problems like

var a = new Array();
var b = [];
print(b instanceof Array === a instanceof Array)

giving false sometimes (similar with {} and Object).

Ought to test this and see if it's still a real problem, and if the reserved slot thing fixes it.

#682 fixed Jumping Fishing Spots Art Department Kieran P
Description

Make fishing spots more prominent. Have the spots where fish are jump out of the water, or make it bubble, or some type of animation to indicate they are there (see #617 for some background on why we can't just rely on transparent water).

#683 fixed OSX Full-Screen Cursor Jumping Kimball
Description
OS: Mac OSX 10.6.5
HW: MacBook Pro (15-inch, Mid 2009)
    2.8 GHz
    4 GB RAM
    NVIDIA GeForce 9400M & 9600M GT
    64-bit kernel enabled
GV: Alpha 2 Custom Build (r8686)

This issue may be limited to certain OSX software or certain Apple hardware. It only occurs in fullscreen mode, and has only been found to occur on 10.6.5, 15" MacBook Pro.

When units are selected and the player hovers over a resource with the cursor (tree, farm, stone etc.), the cursor will jump away from the resource (sometimes to the civic center, sometimes to another unit - I'm not sure what variables determine where it goes), preventing the player from tasking a unit on a resource. Building structures poses no problems. This issue is non-existent in window mode.

See video: http://www.youtube.com/watch?v=Iumc_uE9A5c

Note that when no units are selected, the cursor has no problems hovering over resources.

#684 fixed hwdetect: disable S3TC on R600 drivers Philip Taylor
Description

See thread. We should probably disable S3TC by default on such drivers, until the driver bug gets fixed. Also, don't display the error message and libtxc_dxtn suggestion in those cases.

#686 fixed [PATCH] Additional counters for summary screen Bajter fcxSanya
Description

It would be good to have more counters on summary screen, here is some ideas from Mythos_Ruler's forum post (http://www.wildfiregames.com/forum/index.php?showtopic=13683&view=findpost&p=213723):

  • Total Resources
  • Deforestation
  • Kill/Death Ratio
  • Temples
  • Special Buildings
  • Warships Destroyed/Warships Lost
  • Number of Super Units
  • Heroes Killed
  • Favorite Military Unit
  • Most Bloodthirsty Hero
  • Avg Lifespan

For implementation details see ticket #638 and corresponding changeset r8576, which contains already implemented counters for summary screen. Most related files are:

  • binaries/data/mods/public/simulation/components/StatisticsTracker.js - simulation component, which keep track of statistic counters;
  • binaries/data/mods/public/gui/summary/summary.xml - summary page layout;
  • binaries/data/mods/public/gui/summary/summary.js - scripts for summary.xml.
#687 fixed Build Limits Kieran P
Description

Place build limits:

  • Max 20 houses per civ center (100 units per civ center should prevent the game from slowing down too quickly).
  • Max 3 civ centers (supports 300 units per player should be enough)
  • Max 1 living hero for each civ
  • Max 1 fortress per civ center (increases need to expand to build more)

There should also be an option in the game setup menus, for "Enable Build Limits". It should be ticked by default, and allow to be unticked, which would disable them for that game (for testing purposes).

It should also only affect new things in the game. If a map maker creates a map with 10 heros, you should still be able to load the map and control those heros. You just can't build another one.

#688 fixed New Loading Screen Brian, Michael Kieran P
Description

Implement new loading screen to match mockups.

#690 fixed Display actions for units as a group, not first selected unit Kieran P
Description

When a unit i na group can build, show the build icons in the GUI.

Currently, the GUI is determined by the first selected unit.

If the unit is a hero, you can't build a thing.

Ideally, it'd show the the actions of the most capable unit.

So with a hero and women selected, the buildings women can build would be selected.

If any infantry was in the group, you'd add the additional special buildings.

#691 fixed Separate playable maps from testing maps Philip Taylor Kieran P
Description

Implementation Notes:

  • Should be able to add new folders into maps/scenarios and move maps into them and have them still work properly (map should still display in the overall map list, i.e. folders do not affect listing of the maps). Purely for organizing files, not the GUI.
  • Add field to map files, <MatchType name="...." />
  • Generate match type dropdown from various different map types in the xml files, and have them filter map list by that MatchType value.
  • Clean up code so you don't need to change so many mapType if and case statements in JS and C++.

End Goal:

  • I create maps/scenarios/testing, throw some maps into it, edit the maps and set MatchType to "Testing".

End Result:

In the gui, you have a match type dropdown with options derived from <MatchType>, namely 'Playable' and 'Testing'. When I select testing, I see only maps where they have <MatchType name="Testing" />

#693 fixed Unit animation changes when unit is not in range of target resource Philip Taylor Kieran P
Description

The unit animation changes when unit is not in range of target resource.

When a unit can't get where they are going (i.e. they're stuck in the group), they still do the animatioin they would have don if they got to their resource.

To get the same thing, get a big bunch of units, select the one in the middle, and have him chop wood

The animation shouldn't start until the unit reaches his target

Cause: The unit says to move somewhere, then a while later it hears that it's stopped moving, so it switches the attack/etc state, which triggers the animation. Then after some timer it checks the target is (still) in range. And the problem is if the target isn't in range at the time when the unit stopped moving because it got stuck somewhere

#694 fixed Improve the performance of the game setup screen on first load Philip Taylor Kieran P
Description

Since it seems slow when I test it with an empty cache, and leads to pauses when images are being cached.

Precache them on game load? Or maybe trigger caching when user opens single/multi player setup screen?

#695 fixed [PATCH] Stop using boost::filesystem::operator< so much Rodolphe Ortalo Philip Taylor
Description

When launching the game and starting a map, Callgrind says boost::filesystem::operator< accounts for about 14% of instructions executed, which is a stupid waste. It's called about 90,000 times and does about 800,000 memory allocations (it's not just a straight string comparison).

The main callers are

CTextureManagerImpl::CreateTexture
CTextureManagerImpl::GetConverterSettings
CTextureManagerImpl::GetSettingsFile
CSkeletonAnimManager::GetAnimation
Landlord<>::add_
FileCache::Retrieve

which look like std::map<VfsPath, ...>. If these places don't care about ordered iteration, they should probably use a hash map instead. If they do care, they should probably store strings instead of VfsPaths so that lookups are cheaper.

#696 fixed Fix SpiderMonkey build with Python 3 Philip Taylor Philip Taylor
Description

Need to fix SpiderMonkey's imacro_asm.py (and send the patch to Mozilla).

#697 fixed [PATCH] Units promotion fcxSanya fcxSanya
Description

Units should be able to promote to next rank (basic -> advanced -> elite).

#699 fixed Missing textures in Cycladic Archipelago Michael D. Hafer Kieran P
Description

The following textures are missing from the Cycladic Archipelago map:

  • art/textures/skins/structural/hele_sail.dds
  • art/textures/skins/structural/hele_sail_runner.dds
  • art/textures/skins/structural/hele_sail_eye.dds
#700 fixed Multiplayer - Server should better handle player assignments historic_bruno
Description

Currently, in multiplayer games it is possible that more players may join a game than there are slots available, a player may be unassigned by the host, or the map can be changed to one with fewer slots resulting in same. If a game is started with unassigned players, they will appear to load but mostly fail because the game data has not be initialized for them.

Here's some suggestions to handle these and related issues:

  • When a game is started, have the server disconnect unassigned players. They should of course receive an appropriate message like "Unfortunately, available slots for this game have been filled. You have been disconnected..."
  • Alternately, don't allow the game to start until all connected players are assigned. This causes an issue if there are more connected players than slots, a player is unresponsive or disruptive, etc.
  • Allow unassigned players to become observers. They enter a special observer mode instead of a normal session, and are able to see game play but not interact. If implemented this should be an option enabled at the host's discretion.
  • Allow host to set maximum connections
  • Give host a way to "kick" players out of the game - this would ideally be integrated with some type of lobby system to support kicking and banning, but even with a simple direct connect game it would be handy in some circumstances. It would require a GUI list of connected players, possibly in a new dialog.
#701 fixed Maps errors Michael D. Hafer fabio
Description

Tower attacking demo:

ERROR: Failed to find file: "simulation/templates/other/rome_legionnaire_marian.xml"
ERROR: Failed to load entity template 'other/rome_legionnaire_marian'
ERROR: Failed to load entity template 'other/rome_legionnaire_marian'
ERROR: Failed to find file: "simulation/templates/other/rome_legionnaire_marian.xml"
ERROR: Failed to load entity template 'other/rome_legionnaire_marian'
ERROR: Failed to load entity template 'other/rome_legionnaire_marian'
ERROR: Failed to find file: "simulation/templates/other/rome_legionnaire_marian.xml"
ERROR: Failed to load entity template 'other/rome_legionnaire_marian'
ERROR: Failed to load entity template 'other/rome_legionnaire_marian'
ERROR: Failed to find file: "simulation/templates/other/rome_legionnaire_marian.xml"
ERROR: Failed to load entity template 'other/rome_legionnaire_marian'
ERROR: Failed to load entity template 'other/rome_legionnaire_marian'
ERROR: Failed to find file: "simulation/templates/other/rome_legionnaire_marian.xml"
ERROR: Failed to load entity template 'other/rome_legionnaire_marian'
ERROR: Failed to load entity template 'other/rome_legionnaire_marian'
ERROR: Failed to find file: "simulation/templates/other/rome_legionnaire_imperial.xml"
ERROR: Failed to load entity template 'other/rome_legionnaire_imperial'
ERROR: Failed to load entity template 'other/rome_legionnaire_imperial'
ERROR: Failed to find file: "simulation/templates/other/rome_legionnaire_imperial.xml"
ERROR: Failed to load entity template 'other/rome_legionnaire_imperial'
ERROR: Failed to load entity template 'other/rome_legionnaire_imperial'
ERROR: Failed to find file: "simulation/templates/other/rome_legionnaire_imperial.xml"
ERROR: Failed to load entity template 'other/rome_legionnaire_imperial'
ERROR: Failed to load entity template 'other/rome_legionnaire_imperial'
ERROR: Failed to find file: "simulation/templates/other/rome_legionnaire_imperial.xml"
ERROR: Failed to load entity template 'other/rome_legionnaire_imperial'
ERROR: Failed to load entity template 'other/rome_legionnaire_imperial'
ERROR: Failed to find file: "simulation/templates/other/rome_legionnaire_imperial.xml"
ERROR: Failed to load entity template 'other/rome_legionnaire_imperial'
ERROR: Failed to load entity template 'other/rome_legionnaire_imperial'
ERROR: Failed to find file: "simulation/templates/other/rome_centurio_imperial.xml"
ERROR: Failed to load entity template 'other/rome_centurio_imperial'
ERROR: Failed to load entity template 'other/rome_centurio_imperial'
ERROR: Failed to find file: "simulation/templates/other/rome_centurio_imperial.xml"
ERROR: Failed to load entity template 'other/rome_centurio_imperial'
ERROR: Failed to load entity template 'other/rome_centurio_imperial'
ERROR: Failed to find file: "simulation/templates/other/rome_centurio_imperial.xml"
ERROR: Failed to load entity template 'other/rome_centurio_imperial'
ERROR: Failed to load entity template 'other/rome_centurio_imperial'
ERROR: Failed to find file: "simulation/templates/other/rome_centurio_imperial.xml"
ERROR: Failed to load entity template 'other/rome_centurio_imperial'
ERROR: Failed to load entity template 'other/rome_centurio_imperial'
ERROR: Failed to find file: "simulation/templates/other/rome_centurio_imperial.xml"
ERROR: Failed to load entity template 'other/rome_centurio_imperial'
ERROR: Failed to load entity template 'other/rome_centurio_imperial'

Units demo:

ERROR: Failed to find file: "art/actors/units/hellenes/mechanical_siege_ram.xml"
ERROR: CObjectManager::FindObjectBase(): Cannot find object 'units/hellenes/mechanical_siege_ram.xml'
#702 fixed Saved Games Philip Taylor historic_bruno
Description

We should be able to save and load games ;)

At the minimum this requires:

  • Support for both single- and multiplayer saved games
    • Map, simulation state, any useful stat counters
    • Player assignments: human/AI, name, etc.
    • User supplied description and a timestamp
  • In multiplayer games, all clients either need to save their own local copy of the data, or the host sends it during setup
  • GUI design of "save game" dialog/page
  • GUI design of setup screen for loading games
    • We could reuse the current game setup and add another case, or design a new page with separate link from the main menu
    • Instead of map list, have a saved game list
    • Show the timestamp, description, elapsed time, etc. of selected game
    • In multiplayer mode, returning players should be reassigned to their original slots, possibly based on name - host can change this
    • Defeated players should either be clearly shown as defeated (preferable) or removed

Here's a few tickets which may need to be resolved for saved games:

  • #406: Serialization of standard JS object types
  • #407: Serialization of script class objects
#703 fixed Females shouldn't attack military units unless ordered to Kieran P
Description

Females were given an attack so that they could kill animals.

But now they attack military units automatically.

This should be fixed. Females should run away from attackers unless told to fight them.

#705 fixed [PATCH] Tooltips go off screen in lower resolutions Brian Kieran P
Description

When on lower resolutions, and you select a unit which can build, and hover over an icon in the lower right corner, it's tooltip goes off the screen. It should be adjusted to always be on screen.

#706 fixed Projectiles shouldn't persist when they land on water Kieran P
Description

Projectiles shouldn't persist when they land on water.

They should sink, then when off world, get removed from memory, similar to buildings.

#707 fixed Implement Opponent AI Philip Taylor Kieran P
Description

We need an opponent AI.

Notes:
Try to make it as flexible as possible. Perhaps in JS, so that other AI can be written. Globulation 2 had some good AI's (Numbi was easy, Nicowar was tough, and Warrush was a real test of speed). Each AI in this game should inherit from a base AI, then maybe allow tweaking of values? For example, warrior_to_worker_ratio or warrior_build_rate or min_attack_group_size. I'll leave the details up to you.

Basic Implementation: (women, housing and harvesting)

  • Builds women from town center
  • Builds houses when needed (should always try to keep ahead of the units being built, so it never hits the cap)
  • Assigns women to gather the resource needed the most. This is determined by what building is next in the chain of buildings. The idea is that if something is built (unit or building), women are assigned to replenish the resources spent building it.
  • Replenishes workers if they are killed. The idea being, if I kill 100% of it's workers, and it has resources to build another, it should see that, and act accordingly.

Medium Implementation: (warriors, defense, and groups)

  • Builds warriors in a ratio of 2 women, 1 warrior (for the easiest AI, see notes above about changing the warrior_to_worker_ratio)
  • Builds defensive structures at certain places around the town center (one per house seems adequate, maybe a house_to_tower ratio value that can be adjusted, to turn an agressor into a defender).
  • Units form groups determined by min_attack_group_size and max_attack_group_size (random number in between).
  • One group (see above point) moves to defend a building when it is being attacked. When that group loses 50% of it's force, another idle group is called in. In this way, if the player attacks one building, and then attacks another on the other side of town, the force won't be on one side or the other, but be split (the first group goes attacks the initial attack, and the second group goes and attack the other attack).

Complex Implementation: (attack, slaughter)

  • When idle groups of warriors (see above) are awaiting orders, and more than 2 groups exist, the third group is sent to attack. So to reiterate, two groups will always be at the town/city protecting it. How big those groups are are determined by min_attack_group_size and max_attack_group_size.
  • The attacking group attacks the enemy structure closest to their town center, and ignores other AI players structures, so it only attacks human player buildings.
  • When 2 groups are defending the town, and a third is attacking buildings, a fourth is sent to slaughter the enemies workers. Namely around remove mills and farmsteads.
#708 fixed There should be a .dmg - file for Mac Users bugmenot
Description

There should be a .dmg - file for Mac Users. Not everyone is able to compile, so there should be an executable package for Mac.

#709 fixed [CRASHLOG] Compatibility Problem - Crashes whilst attempting to load maps. Jan Wassenberg Luke Martinez
Description

Hello,

I am running 0AD alpha 3 on windows XP (really shouldnt be tho) and I can not get any maps to run.

When starting the game i encounter 3 errors, then the window loads and i get 4 more errors, then i can view the actual UI. and select a map, press start game and i get 40 more errors before the program gives up. (more info in errors.txt)

Please see attached the debugging / error files.

Thanks,
Luke Martinez

asmartgoat@…

#710 fixed Errors on map "Oasis" Iulian
Description

When starting the game with map "Oasis" I get the following in chat:

"XCeromyces: ........." something(3 lines) and then 2 errors with "failed to load entity template "other/obelisk" .

Map still works otherwise

#711 fixed Enforce minimum and maximum distance between civ centers Kieran P
Description

A civ center should be X tiles away from an existing civ center, but no more than X tiles.

I haven't filled in the X's yet, as tis functionality relies on Territories (, which will define where they can be built.

#712 fixed Remove S3TC warning Philip Taylor
Description

When S3TC textures aren't supported, we decompress them automatically but show a performance warning message telling people to read the CompressedTextures page which suggests installing libtxc_dxtn (which is unmaintained and not any better than decompressing textures ourselves). This is quite common on Linux. We should simplify things for users by simply accepting the lack of S3TC silently because there's nothing useful anyone can do about it.

#713 fixed Update premake for Xcode use philip Kimball
Description

This is eventually a necessity for OSX. Xcode use will significantly streamline the app bundling process and enable Mac developers to collaborate as seamlessly as our PC developers work together now. Unfortunately premake is currently in the way.

#714 fixed added hotkey list from wiki to in game manual Dustin Dustin
Description

added full hotkey list to game manual so that players wont have to search all over to figure out all of the controls that are available.

#715 fixed [PATCH] Bundled SpiderMonkey fails to build on 32bit userland on 64bit kernel (Linux) Matěj Laitl
Description

Due to some silly autodetection, Spidermonkey wants to compile itself as 64bit (64bit macros are set), but the compiler still builds it as 32bit, resulting in a build failue.

On such build log can be found at http://bugs.gentoo.org/attachment.cgi?id=244021&action=view (more info at http://bugs.gentoo.org/show_bug.cgi?id=278541#c37)

Attached patch adds support for (fairly standardised) CTARGET, CHOST and CBUILD environment variables to libraries/spidermonkey-tip/build.sh. This change alone fixes build in Gentoo, whose package manager sets these variables during build.

(the echo line in the patch is just debug, you may want to strip these (or not))

#717 fixed Test site displays missing images for users without avatars Brian Stempin Brian Stempin
Description

Instead of displaying nothing, IPB3 attempts to display an image for users that don't have avatars. For whatever reason, this image is 404'd. It should be a simple fix...I probably caused the issue by copying over the images from the current installation.

#721 fixed [PATCH] Optimise water renderer philip Philip Taylor
Description

TerrainRenderer::RenderWater seems very inefficient: when zoomed out it can take ~8msec/frame even with all the rendering disabled, and it does the rendering with glVertex3f calls.

Since water very rarely changes, I expect it'd be best to make CPatchRData store all the vertex data for water over its patch, and only recompute it when the terrain or water parameters change. Store the data in a vertex buffer. Use indexed quads.

As a bonus: If no visible patches have any water (i.e. they're all entirely above the water plane), don't render the reflection/refraction textures.

#722 fixed [PATCH] Optimise terrain renderer Philip Taylor
Description

Some quick experimentation suggests the terrain rendering code can be made significantly faster by batching more.

Currently, TerrainRenderer::RenderTerrain calls CPatchRData::RenderBase etc for every patch independently, and CPatchRData renders each of its own splats. There are often lots of patches on screen, and they often share a lot of textures. It's better if TerrainRenderer collects all the splats, sorts by texture and by vertex buffer, and then renders them all at once, to reduce the number of state changes.

This is fairly trivial for base textures. For blend textures we need to preserve the ordering within a patch; the same grouping algorithm as in CPatchRData::BuildBlends should probably work.

#723 fixed [PATCH] Multiline centered text kingadami fcxSanya
Description

Currently text centered by the first line position, so if there is multiple lines, each line will have the same indention as the first one instead of be centered individually.

#724 fixed [PATCH] Units should not move out of enemy construction zones Andrew Kieran P
Description

When you place a building, enemy units will politely move out of the way so you can build it.

Only ally units and animals should move away.

#726 fixed Upgrade to 3.1.4 Brian Stempin Brian Stempin
Description

The version 3.1.4 is out, and we do not have a proper upgrade package. We need to obtain one and upgrade.

#727 fixed Fast reply clears content if defocuses and refocused Brian Stempin Kieran P
Description

If you click the fast reply box, type something, defocus the field, then refocus, the content gets cleared.

This means, anything you type is gone if you do something else, e.g. go to get a link to insert into the post

This needs to be fixed ASAP. Was it fixed in 3.1.3 (see #726)? If not, find out why and how to fix.

A workaround for now it to use full reply.

#729 fixed No link to 0 A.D. homepage on forum Brian Stempin Erik Johansson
Description

Currently there's no link to the 0 A.D. homepage, only the WFG.com page. Personally I actually think the WFG.com link could be removed and replaced with a link to the 0 A.D. site as the WFG.com isn't all that useful, especially since TLA is discontinued. Either way a link to the 0 A.D. site would be nice :) Overall the upgrade has worked fine though, so thanks for your work so far.

#730 fixed IPB Theming - Pinned topics should stand out more Brian Stempin Erik Johansson
Description

Would be really nice to have some kind of separation between pinned and ordinary topics. Not too urgent though as they have the "Important" label, just would be nice to be able to see it more at a glance.

#731 fixed WYSIWYG/insert buttons when creating/editing posts doesn't work Brian Stempin Erik Johansson
Description

I'm not sure if it's due to something I have/haven't done, but now the WYSIWYG buttons doesn't seem to work. Nothing happens when I click them (apart from the text field going out of focus due to me clicking outside of it). I've tested in both FF and Chrome, so it doesn't seem to be browser related.

It does work in the "simple editor", i.e. when you haven't pressed the "Use full editor" button

#732 fixed Gradually reveal buildings in FOW Philip Taylor Kieran P
Description

As you peel back the FOW, gradually reveal the buildings.

See http://www.wildfiregames.com/forum/index.php?showtopic=14325&view=findpost&p=216020 for more discussion

Note: This'll be done after http://www.wildfiregames.com/forum/index.php?showtopic=14419&view=findpost&p=216043 has been delt with.

#733 fixed Double line-spacing in [pre] Brian Stempin Philip Taylor
Description

In e.g. this post which uses [pre], the output has <br>s inside the <pre> so there's a blank line between every desired line.

#734 fixed Upgrade SpiderMonkey again philip Philip Taylor
Description

Should upgrade it some time, to get bug fixes and performance improvements etc.

Some notes that I don't want to forget:

#735 fixed Editing current content returns mangled HTML Brian Stempin Brian Stempin
Description

When editing a post or signature, IPB3 seems to return the HTML codes (&amp;) instead of the actual symbols (&). This is probably a charset issue.

#736 fixed JavaScript Error when choosing "Kimball's Map" in the match setup screen Erik Johansson
Description

WARNING: JavaScript warning: gui/gamesetup/gamesetup.js line 722 reference to undefined property g_CivData[civ]

ERROR: JavaScript error: gui/gamesetup/gamesetup.js line 722 TypeError: g_CivData[civ] is undefined onGameAttributesChange()@gui/gamesetup/gamesetup.js:722 selectMap("kimball")@gui/gamesetup/gamesetup.js:585 eventhandler82 (selectionchange)([object Object])@mapSelection selectionchange:0

ERROR: JavaScript error: Errors executing script action "selectionchange"

After the above error the information about the map/s doesn't update when I click on another map, but after closing the Match Setup screen and going back to it it works again. As Philip said it will only occur when a map is using a non-existent civ I've only set it to "If Time Permits", and the map in question isn't in the public version, so it shouldn't be a problem for most users.

#737 fixed Wrong NVIDIA driver checked in 32-bit Vista Philip Taylor
Description

In 32-bit Vista with fairly recent NVIDIA drivers, I have c:\windows\system32\nvoglv32.dll. Since this isn't WoW64, wgfx.cpp only looks for nvoglnt.dll, which doesn't exist, so it doesn't fill in gfx_drv_ver properly.

#739 fixed 2 tests fail fabio
Description

Since two days I am getting this tests failure:

Running 253 tests........................................................................................
In TestSerializer::test_script_basic:
../../../source/simulation2/tests/../../../source/simulation2/tests/test_Serializer.h:276: Error: Expected (std::string(stream.str()) == std::string("script: ({x:123, y:[1, 1.5, \"2\", \"test\", (void 0), null, true, false]})\n")), found ("script: {\n  \"x\": 123,\n  \"y\": [\n    1,\n    1.5,\n    \"2\",\n    \"test\",\n    null,\n    null,\n    true,\n    false\n  ]\n}\n" != "script: ({x:123, y:[1, 1.5, \"2\", \"test\", (void 0), null, true, false]})\n")
....................................ERROR: JavaScript error: cyclic object value
ERROR: StringifyJSON failed

In TestComponentManager::test_script_serialization:
../../../source/simulation2/tests/../../../source/simulation2/tests/test_ComponentManager.h:677: Error: Expected (std::string(debugStream.str()) == std::string("rng: \"78606\"\n" "entities:\n" "- id: 1\n" "  TestScript1_values:\n" "    object: ({x:1234, str:\"this is a string\", things:{a:1, b:\"2\", c:[3, \"4\", [5, []]]}})\n" "\n" "- id: 2\n" "  TestScript1_entity:\n" "    object: ({})\n" "\n" "- id: 3\n" "  TestScript1_nontree:\n" "    object: ({x:#2=[#1=[2], #1#, #2#, {y:#1#}]})\n" "\n" "- id: 4\n" "  TestScript1_custom:\n" "    object: ({c:1})\n" "\n")), found ("rng: \"78606\"\nentities:\n- id: 1\n  TestScript1_values:\n    object: {\n  \"x\": 1234,\n  \"str\": \"this is a string\",\n  \"things\": {\n    \"a\": 1,\n    \"b\": \"2\",\n    \"c\": [\n      3,\n      \"4\",\n      [\n        5,\n        []\n      ]\n    ]\n  }\n}\n\n- id: 2\n  TestScript1_entity:\n    object: {}\n\n- id: 3\n  TestScript1_nontree:\n    object: \n\n- id: 4\n  TestScript1_custom:\n    object: {\n  \"c\": 1\n}\n\n" != "rng: \"78606\"\nentities:\n- id: 1\n  TestScript1_values:\n    object: ({x:1234, str:\"this is a string\", things:{a:1, b:\"2\", c:[3, \"4\", [5, []]]}})\n\n- id: 2\n  TestScript1_entity:\n    object: ({})\n\n- id: 3\n  TestScript1_nontree:\n    object: ({x:#2=[#1=[2], #1#, #2#, {y:#1#}]})\n\n- id: 4\n  TestScript1_custom:\n    object: ({c:1})\n\n")
...............................................................................................................................
Failed 2 of 253 tests
Success rate: 99%
#740 fixed Foundations don't block construction place marcel
Description

It is possible to lay down another foundation on a new foundation on the same place. The first foundation where the construction starts blocks the other foundation from being build.

A new foundation (no construction started) should block the place from laying down other foundation on top of it.

Tested on revision 8967.

#741 fixed Reload all GL state when toggling fullscreen on OS X Philip Taylor
Description

On OS X, switching from fullscreen to windowed mode apparently triggers errors like ogl_program_get_uniform_location(shader, "TextureMatrix1") returning negative values, and the textures disappear and everything goes black and grey and sometimes it crashes.

I guess the GL context state gets lost when toggling fullscreen, in which case we need to destroy and reload all our GL objects (textures, shaders, vertex buffers, framebuffers, etc) when switching.

#744 fixed [PATCH] Button "Find idle workers" veprbl
Description
  • Better button placement
  • Try to look for the nearest free worker
  • Display idle female citizens count on the button
  • Interface which displays all idle workers
#745 fixed [PATCH] Setting Rally Points on Resources/Buildings Jonathan Waller Mark
Description

You should be able to set rally points on resources so that citizens will automatically gather that type of resource when they are created.

Things to think about:

[15:16] <@Philip`> (How does it work if e.g. the resource gets exhausted while it's the gather point?)

[15:16] <@Philip`> (or if e.g. it's an animal that has run away?)

[15:20] <mark__> I think in AoK that if the resource was exhausted that they just searched for a nearby matching resource. As if they had just used it up.

[15:20] <mark> Otherwise they stood there like a normal rally point.

#747 fixed better FPS indicator fabio
Description

1) FPS should also be enabled with a checkbox in the settings menu, other than pressing SHIFT-F, so one can easily find it to check the effect of playing with graphic options;

2) FPS indicator should be moved, currently is overlapped to the food indicator, maybe also using a better font.

#748 fixed [PATCH] Hardware cursors on Linux Zsolt Dollenstein Philip Taylor
Description

It looks like it should be possible to do full 32-bit RGBA cursors on Linux with XcursorImageCreate, kind of like what Spring does. If that works, we should do it instead of using the OpenGL-drawn cursor.

See sys_cursor_* in lib/sysdep/os/unix/unix.cpp. Probably need to move that code into os/osx/osx.cpp, then add Xcursor-based versions of the functions into os/linux/linux.cpp. (See also os/win/wcursor.cpp for comparison). Also will need to change lib/res/graphics/cursor.cpp to define ALLOW_SYS_CURSOR 1 on OS_LINUX.

#750 fixed [PATCH] Enhancement to Matrix3D Rodolphe Ortalo
Description

It is possible to save easily some full matrix multiplications in Matrix3D::Rotate{X,Y,Z}() and Matrix3D::Scale(). Some minor multiplications saves can be done in GetInverse() too. The attached patch provides such improvements.

It remains to be seen if more inlining should be done for matrix operations.

#752 fixed Cache detection error Jan Wassenberg Philip Taylor
Description

Someone reports:

Assertion failed: "0"
Location: x86_x64.cpp:457 (DetectCache_CPUID4)

Call stack:

00567D5F

005691C8

0053F27B

02A000B0

0003FFA8


errno = 0 (?)
OS error = 0 (no error code was set)


Assertion failed: "dcaches.numLevels >= 2"
Location: x86_x64.cpp:698 (DetectCacheAndTLB)

Call stack:

00567D5F

005691C8

0053F27B


errno = 0 (?)
OS error = 487 (Se ha intentado tener acceso a una dirección no válida.
)


Assertion failed: "dcaches.levels[0].lineSize != 0"
Location: x86_x64.cpp:699 (DetectCacheAndTLB)

Call stack:

00567D5F

005691C8

0053F27B


errno = 0 (?)
OS error = 487 (Se ha intentado tener acceso a una dirección no válida.
)



Assertion failed: "dcaches.levels[1].lineSize != 0"
Location: x86_x64.cpp:700 (DetectCacheAndTLB)

Call stack:

00567D5F

005691C8

0053F27B


errno = 0 (?)
OS error = 487 (Se ha intentado tener acceso a una dirección no válida.
)

The relevant reported data is:

  "cpu_coresperpackage": 1, 
  "cpu_frequency": 2533000000, 
  "cpu_identifier": "    Intel Pentium 4 2.53GHz", 
  "cpu_largepagesize": 0, 
  "cpu_logicalpercore": 1, 
  "cpu_numcaches": 1, 
  "cpu_numpackages": 1, 
  "cpu_numprocs": 1, 
  "cpu_pagesize": 4096, 
  [...]
  "uname_machine": "IA-32", 
  "uname_release": "SP 2", 
  "uname_sysname": "WinXP", 
  "uname_version": "5.1.2600", 
  [...]
  "x86_caps[0]": 17408, 
  "x86_caps[1]": 3219913727, 
  "x86_caps[2]": 0, 
  "x86_caps[3]": 0, 
  "x86_dcaches": [], 
  "x86_dtlbs": [
    {
      "associativity": 255, 
      "entries": 64, 
      "level": 1, 
      "pagesize": 4096, 
      "type": 1
    }
  ], 
  "x86_family": 15, 
  "x86_icaches": [], 
  "x86_itlbs": [
    {
      "associativity": 255, 
      "entries": 128, 
      "level": 1, 
      "pagesize": 4096, 
      "type": 2
    }
  ], 
  "x86_model": 2, 
  "x86_vendor": 1
#754 fixed Crash on Start Speedy1505
Description

This Error create an Start ... The Game not be run :(

Function call failed: return value was -1 (Unknown error (-1, 0xFFFFFFFF)) Location: wutil.cpp:168 (LibError_from_GLE)

Call stack:

00567D5F

005691C8

0053F27B

005625C7

005793E4

00579444

errno = 0 (?) OS error = 487 (Es wurde versucht, auf eine unzulässige Adresse zuzugreifen. )


Function call failed: return value was -1 (Unknown error (-1, 0xFFFFFFFF)) Location: wutil.cpp:168 (LibError_from_GLE)

Call stack:

LibError_from_GLE (wutil.cpp:168)

warn_if_failed = true

ReadRegister (mahaf.cpp:174)

ioctl = 3506053136 (0xD0FA2010) reg = 206 (0x00000000000000CE) out =

value = 24651342758852272 (0x005794440060B6B0)

bytesReturned = 0 (0x00000000) in =

reg = 27190304079609856 (0x0060997000000000)

mahaf_ReadModelSpecificRegister (mahaf.cpp:184)

reg = 206 (0x00000000000000CE)

MSR::Read (msr.cpp:95)

reg = 206 (0x00000000000000CE)

CounterTSC::NominalFrequency (tsc.cpp:228)

this = (unavailable)

GetNextBestSafeCounter (whrt.cpp:81)

counter = 0x006E0055 -> (ICounter) nextCounterId = 2 (0x00000002) buf = "known error (-100032, 0xFFFE7940)"

InitCounter (whrt.cpp:109)

whrt_Init (whrt.cpp:302)

winit_CallInitFunctions (winit.cpp:89)

wstartup_InitAndRegisterShutdown (wstartup.cpp:109)

initterm_e (:0)

tmainCRTStartup (crtexe.c:483)

nested = 0 (0x00000000)

CallStartupWithinTryBlock (wseh.cpp:386)

ret = 3021013027 (0xB4110023)

RegisterWaitForInputIdle (:0)

errno = 0 (?) OS error = 0 (no error code was set)

#758 fixed JavaScript warning when selecting Miletus map fabio
Description

When selecting Miletus map the following warnings appear:

WARNING: JavaScript warning: gui/gamesetup/gamesetup.js line 810
reference to undefined property g_CivData[civ]
ERROR: JavaScript error: gui/gamesetup/gamesetup.js line 810
TypeError: g_CivData[civ] is undefined
  onGameAttributesChange()@gui/gamesetup/gamesetup.js:810
  updateGameAttributes()@gui/gamesetup/gamesetup.js:840
  selectMap("Miletus")@gui/gamesetup/gamesetup.js:635
  __eventhandler80 (selectionchange)([object Object])@mapSelection selectionchange:0
#759 fixed no package available for debian nicoulas
Description

With the impressive list of supported platform, I can't understand the lack of a debian package…

#760 fixed Update wiki for new random map system historic_bruno historic_bruno
Description

The following wiki pages should be updated so people know how to use the new random map generator. The API is fairly similar to the standalone rmgen tool, so it will mostly need rewording and perhaps flushing out of details.

And they should be linked from a more sensible location than TDD_Tools.

#761 fixed crash with RMS and Latium map fabio
Description

Selecting Random map, Latium map and 3 players make the game crash:

ERROR: JavaScript error: maps/random/rmgen/tileclass.js line 83
TypeError: this.rangeCount[y] is undefined
  (139,289)@maps/random/rmgen/tileclass.js:83
  addToClass(139,289,6)@maps/random/rmgen/library.js:337
  @maps/random/latium.js:114
ERROR: Failed to load RMS 'maps/random/latium.js'
TIMER| GenerateMap: 73.5917 ms
ERROR: Map generation failed: RMS returned undefined
main.cpp(206): Function call failed: return value was -1 (Function failed (no details available))
Function call failed: return value was -1 (Function failed (no details available))
Location: main.cpp:206 (ProgressiveLoad)

Call stack:

(0x82ae2e2) ./pyrogenesis() [0x82ae2e2]
(0x827ab98) ./pyrogenesis() [0x827ab98]
(0x827bb53) ./pyrogenesis() [0x827bb53]
(0x827be3e) ./pyrogenesis() [0x827be3e]
(0x80558a0) ./pyrogenesis() [0x80558a0]
(0x8055e41) ./pyrogenesis() [0x8055e41]
(0x8056f9d) ./pyrogenesis() [0x8056f9d]
(0xb6d59ce7) /lib/libc.so.6(__libc_start_main+0xe7) [0xb6d59ce7]
(0x80556d1) ./pyrogenesis() [0x80556d1]

errno = 0 (?)
OS error = ?
#762 fixed Last minor issues with RMS fabio
Description

1) Select Scenario, Demo Maps, Random. The following warning appears:

ERROR: Failed to read file: maps/random/Bridge_demo.json

2) 'New RMS test' map should be under Random Demo maps.

3) Possibly make Random map the default for Alpha 5 rather than Scenario to highlight this new feature and to have additional testing.

#763 fixed [PATCH] Player and resource colors conflict on minimap Imarok historic_bruno
Description

On the minimap, metal mines are shown as yellow which is very similar to player 4's color. Animals are shown as orange which is similar to player 7.

One or the other should be tweaked slightly so the players and resources can be more clearly distinguished.

#764 fixed Random maps can crash game historic_bruno
Description

Currently if a random map generator script fails, the game will crash because it has no map data. The best way to deal with this would be to present a message to the user telling them the map script failed, and then return them to the main menu. I'm not sure how the progressive loader can be aborted safely. Another way to handle this temporarily, is to just load a blank map when the generator fails.

#765 fixed Error when moving building placement preview off the map philip Philip Taylor
Description
ICmpRangeManager.h(193): Assertion failed: "i >= 0 && j >= 0 && i < m_VerticesPerSide && j < m_VerticesPerSide"
#766 fixed ./update-workspaces.sh fails while linking a dir hennr
Description

When running ./update-workspaces.sh from inside the build/workspaces dir, I get the following error:

/home/henner/src/0ad/libraries/spidermonkey-tip/src/build-release/config/nsinstall -R system_wrappers_js ../dist /home/henner/src/0ad/libraries/spidermonkey-tip/src/build-release/config/nsinstall: cannot make symbolic link /home/henner/src/0ad/libraries/spidermonkey-tip/src/build-release/dist/system_wrappers_js: File exists make[2]: * [export] Error 1 make[2]: Leaving directory `/home/henner/src/0ad/libraries/spidermonkey-tip/src/build-release/config' make[1]: * [export] Error 2 make[1]: * Waiting for unfinished jobs.... make[1]: Leaving directory `/home/henner/src/0ad/libraries/spidermonkey-tip/src/build-release' make: * [default] Error 2 ERROR: SpiderMonkey build failed

Removing the link and running the script again does not solve the problem.

Any ideas?

#767 fixed can't compile on linux fabio
Description

Error:

smbios.cpp
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp:446: error: explicit template specialization cannot have a storage class
../../../source/lib/sysdep/smbios.cpp: In member function ‘void SMBIOS::FieldStringizer::operator()(size_t, T&, const char*, const char*)’:
../../../source/lib/sysdep/smbios.cpp:467: error: too few template-parameter-lists
make[1]: *** [obj/lowlevel_Release/smbios.o] Errore 1
make: *** [lowlevel] Errore 2
make: *** Attesa per i processi non terminati....
#768 fixed Various ERRORs michael fabio
Description

When starting Celt-Iberia map:

ERROR: CSkeletonAnimManager::GetAnimation(art/animation/): Failed loading, marked file as bad

FIXED: When placing an Iberian corral:

ERROR: Failed to find file: "art/actors/props/structures/carthaginians/corral_mud.xml"
ERROR: CObjectManager::FindObjectBase(): Cannot find object 'props/structures/carthaginians/corral_mud.xml'
ERROR: Failed to find file: "art/actors/props/structures/carthaginians/corral_mud.xml"
ERROR: CObjectManager::FindObjectBase(): Cannot find object 'props/structures/carthaginians/corral_mud.xml'
ERROR: Failed to find file: "art/actors/props/structures/carthaginians/corral_mud.xml"
ERROR: CObjectManager::FindObjectBase(): Cannot find object 'props/structures/carthaginians/corral_mud.xml'
ERROR: Failed to build prop model "props/structures/carthaginians/corral_mud.xml" on actor "corral"
ERROR: Failed to find file: "art/actors/props/structures/carthaginians/corral_mud.xml"
ERROR: CObjectManager::FindObjectBase(): Cannot find object 'props/structures/carthaginians/corral_mud.xml'
ERROR: Failed to find file: ""
#769 fixed [PATCH] Projectiles occasionally bounce Markus Philip Taylor
Description

It looks like projectiles randomly sometimes bounce when landing, which they're not meant to do. (Presumably some precision bug in the projectile motion code.)

#770 fixed Unify user interface styles brian Kieran P
Description

There are several places which have different UI's. Like full screen panels v.s. half size, different coloured borders and titles, and more varitations.

All should be the same!

#773 fixed [PATCH] Groups Badmadblacksad
Description
  • Create groups (Ctrl+number)
  • Add to group (Shift+number)
  • Select group (number or click on icons)
  • A unit can only be a member of a single group

copy this image in binaries/data/mods/public/art/textures/ui/session/icons/sheets/groups.png (created with binaries/data/mods/public/art/textures/ui/session/icons/single/group[0-9].png)

On my computer I had to replace hotkey.selection.group.[0-9] with hotkey.selection.group.Num[0-9] in the file binaries/data/config/default.cfg. I've got a french keyboard. Don't know if it will work for you.

TODO :

  • double click / double press on a key : snap
  • maybe some art related stuff ;)
#774 fixed Make JuBot the default selected AI in single player setup Philip Taylor Erik Johansson
Description

As per http://trac.wildfiregames.com/ticket/772#comment:2 and other discussions it would be nice to have "Demo Bot" set as the opponent by default in singleplayer games (unless there is a new and improved AI, then that one should be the default :) ).

Edit: Make Jubot the default selected one for single games, it's better and will make players more interested in the game.

#775 fixed Unit following stops when other object selected Kieran P
Description

When a unit is being followed, stop following the unit once you clicked on something else (currently relies on camera moving to stop)

#778 fixed [CRASHLOG] Error pt.2 jlybomber
Description

Much to our regret we must report the program has encountered an error.

Please let us know at http://trac.wildfiregames.com/ and attach the crashlog.txt and crashlog.dmp files.

Details: unhandled exception (Access violation reading 0x00000000)

Location: unknown:0 (?)

Call stack:

(error while dumping stack: No stack frames found) errno = 0 (?) OS error = 0 (no error code was set)

#779 fixed Villagers stuck on construction sites philip James Baillie
Description

Essentially, pre-tasked villagers or troops can get trapped on construction sites if they walk onto them between placement and construction starting; they carry on trying to walk across them, and get stuck. The building remains on 0HP, and they remain stationary. Subsequent troops will also get stuck, and for an AI player this can cause economic wreckage.

#780 fixed Disable shader renderer on r300c Philip Taylor
Description

According to this thread, the shader mode causes graphical errors on Mesa r300c drivers. We should default to fixed mode and probably suggest users should upgrade to r300g (Gallium) drivers.

#781 fixed Hotloading fails Jan Wassenberg Philip Taylor
Description

Hotloading of most files apparently fails on Windows. I think there are two issues:

ReloadChangedFiles calls VFS::GetVirtualPath with realPathname == "e:/0ad/binaries/data/mods/public/art/particles\smoke.xml" etc. That calls realPathname.Parent() which finds a / so it returns "e:/0ad/binaries/data/mods/public/art/" and treats "particles\smoke.xml" as the filename, so it'll end up returning a VfsPath that contains \ and that won't be recognised as a file that was previously loaded.

GetVirtualPath also calls FindRealPathR which thinks the VFS path "art" has realDirectory->Path() == "e:/0ad/binaries/data/mods/internal/art/" so it doesn't match the mods/public/ path and eventually GetVirtualPath fails with no match.

(Hotloading normally works for me since I run on Linux with only the public mod.)

#782 fixed Simplify RMS output format historic_bruno Philip Taylor
Description

The texIdx2 in tileData is never used by the game and should be removed. (The one in STileDesc is never used and should eventually be removed too, but that'd break compatibility with .pmp files so it's probably not worthwhile until we have other incompatible changes that we can do all at once.)

I think it'd make more sense for tileData to be arranged by tiles, not by patches, and have the engine code rearrange as necessary. That'd make it easier to write RMS scripts from scratch, and would let us e.g. change the engine to have different-sized patches without having to change all the scripts too. (I think the .pmp files should be arranged that way too (I've wanted to experiment with the effect of patch size on performance and it's a pain with the current map format), but the same compatibility concern applies.)

The isActor flag doesn't seem particularly appropriate - there's nothing unique about actors, they're just entities whose template names happen to start with "actor|". There are other entities that e.g. don't have the Ownership component, so whether a player value is specified is conceptually orthogonal to whether they're actors. So I'd probably suggest getting rid of isActor and making the associated properties optional (defaulting to 0 or whatever).

#783 fixed CMapGeneratorWorker isn't thread-safe historic_bruno Philip Taylor
Description

CMapGeneratorWorker runs in a non-main thread but calls fs_util::GetPathnames and ScriptInterface::LoadGlobalScriptFile which aren't thread-safe. (Those are the only problematic ones I see currently.)

This results in assertion failures in debug mode for me, and it could crash if e.g. hotloading occurs while the generator thread is running that function. (I've added some extra assertions now to make it complain more immediately.)

Either VFS needs to be made thread-safe (which sounds very hard), or the generator needs to avoid calling those functions except on the main thread. Maybe Initialize() can read the script file into a string, and enumerate all maps/random/*/*.js and read those into strings too (there won't be loads so it should be fast enough), and then the generator thread passes any requested files into ScriptInterface as strings so it doesn't need to interact with the VFS again.

#785 fixed [PATCH] Implement variable game speed historic_bruno Wolter Hellmund
Description

There should be a game speed option for single and multiplayer games.

#786 fixed [PATCH] Improve method for building walls vts Wolter Hellmund
Description

Building walls can be a very tedious job if each wall section is built individually. Currently, this is the way walls are built in 0 a.d., which is a good enough reason for players not to build walls - the task is severely time-consuming.

Therefore, I propose that users are able to create path for walls to be built on. The placement of wall segments is something decided by the game engine.

The creation of these paths could be as simple as connecting points that the player selects, or as fancy as creating a bezier path along the ground to have a nice curvy wall. Note that a curvy wall is not only a luxury, but it can be a strategic building shape to hold a radius of terrain steadily.

#787 fixed Store map size defaults in single location historic_bruno
Description

Since we have random maps now, there are several points where map sizes can be chosen from a list:

  • In game setup, when playing a random map (gamesetup.js)
  • In Atlas "New" dialog, when creating a blank map (/tools/atlas/lists.xml)
  • In Atlas map panel, when generating a random map (/tools/atlas/scripts/section/map.js)

Instead of having 3 or more different lists that have to be sync'd, we could just store them in one location, maybe in a file with raw JSON data. This could be analogous to player defaults /simulation/data/player_defaults.json, where code that needs to access the data can go through the simulation. The file would be an array of map size objects, perhaps with tile size, name, and detailed description of each choice (for tooltips).

#788 fixed [PATCH] Eliminate delay in path finding Kenny Long Kieran P
Description

When you task a unit to something, there is a delay. Get rid of this delay! It's really horrible, and long enough to cause problems when you need that extra second it waits.

#789 fixed Remove the unit selection cap Kieran P
Description

See http://www.wildfiregames.com/forum/index.php?showtopic=14620&view=findpost&p=218316

The cap no longer makes sense now that we group by type, and there isn't a civ with 20 different types of units to fill up the GUI.

Remove the cap completely, and we'll see how that goes for the next release.

#790 fixed Sound effects have stopped working Philip Taylor Kieran P
Description

See http://www.wildfiregames.com/forum/index.php?showtopic=14595

They used to work in Alpha 4, now they don't in Alpha 5. We can't release with a regression!

#792 fixed Find all Idle Units Erik Johansson
Description

Currently the "Find Idle Workers" function (accessed either via the GUI button or the . key) only finds idle women. It would be nice to be able to find all idle units. My suggestion would be to group them like this: Idle Warriors (heroes, super units, siege, war ships), Idle Citizen Soldiers, Idle Support Units (female citizens, healers, traders, fishing ships, trade ships). Not sure about how to graphically represent it the best way, but it would work good with the keys: , . - (,=warriors; .=citizen soldiers; -=support units). Thoughts?

#793 fixed Random maps don't report name Philip Taylor
Description

session.js has reportPerformance which uses Engine.GetMapSettings().Name to say what map the profiling data applies to. When playing random maps, the Name seems to be undefined. I expect it would be best if that was the name of the random map script, and maybe reportPerformance should report the size and seed too, so we could (in theory) detect whether certain maps have significant performance problems.

#794 fixed [PATCH] Camera height Dietger frapell
Description

There's like a "ceiling" where the camera cannot zoom out anymore.

This ceiling appears to be related to the terrain, so in maps like "Death Canyon", when you go over the canyon itself, the camera zooms in, and when you go back to your camp, you are really close to the units, and need to zoom out, which gets very annoying.

I think there should be a "ceiling", but how deep or tall the terrain is, shouldn't affect it.

#797 fixed Allow archers to move on top of the walls frapell
Description

When building defenses with walls and towers, you place archers on these towers and they stay there. What i propose here, is, you build walls and towers, and for each tower, the amount of possible archers increase by say, 5, in the whole set of walls and towers (provided they are all built together as a whole). Archers do not need to stay inside the towers, they can move over the walls, so they can fire from any place in the wall, or get to another tower and fire from there.

With this, it will not happen that you will get a lot of towers built on parts where the enemy never gets, and you have a lot of archers there, doing nothing.

Perhaps it is something you can allow archers to do or not, if they stay inside a specific tower, they get the extra protection the tower gives, but they are stuck there and cannot move. On the other hand, if they can move, they can be killed if they stay over the wall, but they are able to move.

#798 fixed Update Doxygen documentation for Pyrogenesis Philip Taylor Erik Johansson
Description

The documentation at http://svn.wildfiregames.com/docs/ needs to be updated.

#799 fixed [PATCH] Add "back to work" button Itms MiniMe
Description

Hi!

What I'm missing the most in 0 A.D. is the possibility to send units (citizen-soldiers) back to their last assigned work (i.e. resource gathering) after using them for battle. It's a hassle to reassign them manually each time, so this would be a great improvement, especially because in 0 A.D. it's "normal" to use units for battle and resource gathering.

Btw, there is such a button in other games too (e.g. "Empires:DOTMW"), where citizens are able to fight...

#801 fixed [PATCH] Templates sorting utility historic_bruno fcxSanya
Description

Currently second-level elements (which represent components) in simulation templates ordered chaotically, and this is better to have any order than don't have order at all, so I proposed to use the alphabetical order.

Attached patch add to svn small utility, which consists from shell script and xsl template.

#802 fixed Blender animations messed up in-game Zaggy1024
Description

When an animation is exported from Blender into the game, sometimes the bones, when they're supposed to rotate just a small distance, rotate around 360 degrees to get to their intended orientation. This could be some sort of problem with the Blender exporter, but I tried importing the animations back into Blender, and they played correctly, so it seems more likely that it's a problem in the engine.

A set of animations for the lion, containing a couple broken ones: http://www.mediafire.com/?udi4a302f3g2j0y

#803 fixed Minimap broken fabio
Description

The circular minimaps are broken here since a while. Example on current build from svn on Linux with Death Canion:

http://img194.imageshack.us/img194/3881/0adbrokenminimap.png

EDIT: this is a mesa (Linux) driver problem: see this bug for more info: https://bugs.freedesktop.org/show_bug.cgi?id=36762

#804 fixed [PATCH] Building Placement Restrictions historic_bruno historic_bruno
Description

Buildings should have restrictions on where they can be placed:

  • Docks can only be built in a shallow coastal area (where villagers can reach it to build and created boats will be water units).
    • Possibly have docks autorotate to be perpendicular to the shore, so the user is not burdened with doing this.
  • Other buildings must be built on land.
  • There may be restrictions by territory (once #41 is implemented), e.g. requiring a building to be on user's own and/or ally territory.

(See simulation\components\BuildRestrictions.js for more details)

#805 fixed [PATCH] Support double-click on unit group buttons Philip Taylor
Description

When you assign unit groups (with ctrl+1 etc) it shows a little numbered button at the side of the screen. Double-clicking the button should have the same effect as double-pressing the digit key (i.e. move the camera to the units).

This probably needs some changes to the GUI engine, particularly IGUIButtonBehavior::HandleMessage to detect double-clicks and send a different message type (GUIM_DOUBLE_PRESSED, script event doublepress or something, probably in addition to the standard press event (since some other buttons want to treat it like two separate presses)), then updateGroups in mods/public/gui/session/session.js should set button.ondoublepress appropriately.

#807 fixed Implement profiling for any thread historic_bruno
Description

Currently the profiler is restricted to the main thread, so e.g. scripts that run in other threads can't use the profiling functions. According to Philip, it's hierarchical and each threads needs its own hierarchy, also timings on other threads are independent of frame rendering. So perhaps the profiler should be designed to support one instance per thread, and then those threads would each use their own local profiler.

Potential areas of benefit:

  • Random map scripts
  • AI scripts (once multithreaded)
  • Pathfinding (once multithreaded)
  • ?

Also of interest: #806, which will allow script profiling with JIT enabled.

#808 fixed Walk through Iberian walls michael Martin Nissen
Description

The Iberian walls ain't solid and anybody can walk right through, friend or foe. Though I have seen some foes taking the long way around, Iberian walls are defect!

#809 fixed Random maps need more stone historic_bruno Kieran P
Description

The lack of stone is causing random maps to become unplayable the longer you play on them (due to the good thigns needing stone).

Add more stone to random maps. Check the resource balance overall.

#810 fixed Props should have a "selectable" setting Zaggy1024
Description

Some units have no actual model, but use attached actors (i.e. for the trader, it has a donkey attached, and a "driver" pulling it), and since it doesn't make them selectable, you can't select the unit just by clicking on it, but you have to drag around it (which makes it impossible to select an enemy unit like that).

#811 fixed Unhelpful error message when unable to write file Philip Taylor
Description

When the game is unable to write a file (in particular when it's trying to create a cache file when it doesn't have write permission to the directory), it gives an error like

io.h(73): Assertion failed: "fd >= 0"
Assertion failed: "fd >= 0"
Location: io.h:73 (Validate)

...

errno = 0 (?)
OS error = ?

(via io::Store -> io::Run -> io::Operation::Validate) which is very uninformative. In contrast, if CreateDirectories fails due to permission problems, it says "Function call failed: return value was -110300 (Insufficient access rights to open file)" - it should do something similar when failing to create files.

#813 fixed Remove Persians and Carthaginians Kieran P
Description

As per http://www.wildfiregames.com/forum/index.php?showtopic=14669&pid=218814&st=0&#entry218814

We don't want to cause errors.

#814 fixed Passive or inactive soldiers Martin Nissen
Description

Using svn revision 9388, in some games soldiers cant attack and don't even show a sword for attack selection. And don't react when attacked. It's not faction specific and it's not every time, even when setting the same criteria for a game.

#816 fixed Change release name to Edetani Kieran P
#817 fixed Adding garrisoning flags Pureon Kieran P
Description

When a building has units garrisoned, it should have a flag on the highest point of it, to indicate units are in there.

A suggestion from Fabio also suggested that the flag should be high adjusted depending on the amount of units garrisoned.

flag at base position: < 50% garrisoned units
flag at mid: >= 50% garrisoned units
flag at top: all units garrisoned
#818 fixed Garrisoned units on ships don't increase fire power Kieran P
Description

When units are garrisoned in a ship, they do not seem to increase the amount of arrows fired from it.

It should act like towers, and increase the amount of arrows fired.

#819 fixed Add dust particles for building destruction Art Department Kieran P
Description

We have the animation and the sound. Now we just need the dust to go with the building destruction.

It'd be nice for Alpha 5 if someone wants something to do, but otherwise, it can wait for the next release.

#820 fixed Change default map to Death Canyon Kieran P
#821 fixed Decrease intensity of building construction particles michael Kieran P
Description

The dust is a bit strong right now. Make less of it, and in a lighter shade.

#822 fixed Make square maps fit within the minimap circle historic_bruno Kieran P
Description

We need the corners around the circular minimap for buttons.

Make square maps fit into that circle, and rotate nicely.

#823 fixed Improve idle workers button Kieran P
Description

With #822 completed, remove the old idle units button, and put this one into the lower right of the minimap edges.

http://trac.wildfiregames.com/browser/ps/trunk/binaries/data/mods/public/art/textures/ui/session/icons/single/minimap-idle.png?rev=9264

Will probably require either triangular click boundaries, or click z-indexes

#824 fixed [PATCH] Prettify unit/building selection ring vts Kieran P
Description

Prettify the unit/building selection ring. Change it from the 1px white line to a 1px white line, then a 2px fill of the users colour, then another 1px white line. Then apply this to all building, unit, animal, resource etc selection rings.

Attached is an example, please excuse the uglyness, it's an example, not a mockup ;-P

#825 fixed Make Enter/Esc work when a dialog is open Kieran P
Description

Should be able to press enter when a dialog is opened.

e.g. if I select a unit, then hit "Delete" on the keyboard, I should be able to press enter to confirm it.

Likewise, if it doesn't work already, 'Escape' on the keyboard should trigger the 'cancel' action.

#826 fixed Fix unit double click selection with units of different ranks Brian Kieran P
Description

Change the unit click selection code:

one click = selects single unit

two click = selects all units of the same type and rank

three clicks = selects on units of the same type (disregards rank)

#827 fixed Failing test on Ubuntu 10.10 fabio
Description
Running 251 tests........................................................................ERROR: JavaScript error: simulation/components/Formation.js line 190
ReferenceError: IID_Identity is not defined
  ([object Array],true)@simulation/components/Formation.js:190
  (true)@simulation/components/Formation.js:133
  ([object Object])@simulation/components/UnitAI.js:371
  ([object Object],[object Object])@simulation/helpers/FSM.js:250
  ([object Object])@simulation/components/UnitAI.js:1453
  TestFormationExiting(0)@simulation/components/tests/test_UnitAI.js:112
  ()@simulation/components/tests/test_UnitAI.js:129

In TestComponentScripts::test_scripts:
../../../source/pch/test/../../../source/simulation2/components/tests/test_scripts.h:44: Error: Test failed: L"Running script simulation/components/tests/test_UnitAI.js"
../../../source/pch/test/../../../source/simulation2/components/tests/test_scripts.h:44: Error: Assertion failed: scriptInterface.LoadScript(pathname, wcontent)
..................................................................................................................................................................................
Failed 1 of 251 tests
Success rate: 99%
#828 fixed Celt-Iberia scenario double units control michael Martin Nissen
Description

When starting Celt-Iberia scenario with player 1 me, player 2 Jubot and player 3 Demo bot, player 1 have control of, what I believe should have been, player 3's starting units. They start attacking player 3's civi center, while player 3 controlled units appears progressively.

Tested 3 times, same result.

#829 fixed Woman and units get stuck in anything Kenny Long Martin Nissen
Description

It still occurs, that woman and units gets stuck between trees, houses and other obstacles. I think it reoccurred after formations went active. Units often walks into trees and get stuck, but it's still possible to point-walk them out again. Other times units gets detached from a control group when they are stuck.

If units, mostly >6, are placed into a control group while in a tree area, some units can place them self where they cant get out again.

#830 fixed [PATCH] improve 0ad ubuntu packages compression fabio
Description

Ubuntu packages are compressed with default (-6) lzma compression. Using -9 compression decrease a bit the package size for faster downloads.

Also using xz for compressing source packages.

#831 fixed Ranged units do not always face their targets when attacking. michael
Description

Ranged units do not always face their targets when attacking. This leads to strange-looking behavior during battles.

To confirm this, watch an enemy unit walk into range of your ranged units and watch your ranged units' behavior as they throw their projectiles. As the enemy unit moves position, your ranged units will not reorient themselves to face the enemy. Their projectiles will fly toward the enemy even though your units may be facing the opposite direction. Manually tasking your units to re-target the enemy units seems to correct this for a small time.

#832 fixed Consistent Assertion Failures with sound enabled when loading maps in a certain order Jan Wassenberg Kieran P
Description

Ubuntu 11.04 (Classic Gnome Desktop - not unity), ATI 5770 with official proprietary drivers

r9430 (and possibly earlier) Loading the maps in any of these orders causes a consistent and immediate assertion failure. Loading the same map twice does not seem to change anything. It does not cause the error when using -quickstart.

acropolis --> celt-iberia --> death_canyon

celt-iberia --> acropolis --> death_canyon

death_canyon --> celt-iberia --> acropolis

death_canyon --> acropolis --> celt-iberia

[edit] Each of these maps has a different default civ. Civ specific music was recently added (and the new tracks are large).

*See Philip's comment below for more information.


Assertion failed: "removed" Location: file_cache.cpp:187 (Reserve)

Call stack:

(0x83828d0) /home/brian/0ad/binaries/system/pyrogenesis() [0x83828d0] (0x83333b2) /home/brian/0ad/binaries/system/pyrogenesis() [0x83333b2] (0x83340b0) /home/brian/0ad/binaries/system/pyrogenesis() [0x83340b0] (0x8334814) /home/brian/0ad/binaries/system/pyrogenesis() [0x8334814] (0x8392b89) /home/brian/0ad/binaries/system/pyrogenesis() [0x8392b89] (0x8390bad) /home/brian/0ad/binaries/system/pyrogenesis() [0x8390bad] (0x83481a8) /home/brian/0ad/binaries/system/pyrogenesis() [0x83481a8] (0x835dfbe) /home/brian/0ad/binaries/system/pyrogenesis() [0x835dfbe] (0x8358b63) /home/brian/0ad/binaries/system/pyrogenesis() [0x8358b63] (0x834b1b6) /home/brian/0ad/binaries/system/pyrogenesis() [0x834b1b6] (0x8359bdb) /home/brian/0ad/binaries/system/pyrogenesis() [0x8359bdb] (0x834b1b6) /home/brian/0ad/binaries/system/pyrogenesis() [0x834b1b6] (0x8357ff3) /home/brian/0ad/binaries/system/pyrogenesis() [0x8357ff3] (0x8192ea6) /home/brian/0ad/binaries/system/pyrogenesis() [0x8192ea6] (0xb753026f) /home/brian/0ad/binaries/system/libmozjs-ps-release.so(+0x25626f) [0xb753026f]

errno = 0 (?) OS error = ?


#833 fixed Consistent Assertion Failures with sound enabled when loading maps with large battles Jan Wassenberg brian
Description

Ubuntu 11.04 (Classic Gnome Desktop - not unity), ATI 5770 with official proprietary drivers

r9403 (and possibly earlier) I get an error if I run the large_combat_demo or we_are_legion. They do not give the assertion failure immediately though. I even got it on the Latium RMS during a battle. It does not cause the error when using -quickstart.


Assertion failed: "cpu_CAS(&al_srcs_allocationStates[i], kInUse, kAvailable)" Location: snd_mgr.cpp:561 (al_src_free)

Call stack:

(0x8369c30) /home/brian/Desktop/Link to pyrogenesis() [0x8369c30] (0x83212a4) /home/brian/Desktop/Link to pyrogenesis() [0x83212a4] (0x83215a7) /home/brian/Desktop/Link to pyrogenesis() [0x83215a7] (0x8321a45) /home/brian/Desktop/Link to pyrogenesis() [0x8321a45] (0x833fd43) /home/brian/Desktop/Link to pyrogenesis() [0x833fd43] (0x833ffef) /home/brian/Desktop/Link to pyrogenesis() [0x833ffef] (0x8333ae9) /home/brian/Desktop/Link to pyrogenesis() [0x8333ae9] (0x833febf) /home/brian/Desktop/Link to pyrogenesis() [0x833febf] (0x833f048) /home/brian/Desktop/Link to pyrogenesis() [0x833f048] (0x8343c4e) /home/brian/Desktop/Link to pyrogenesis() [0x8343c4e] (0x8056198) /home/brian/Desktop/Link to pyrogenesis() [0x8056198] (0xb6e1ae37) /lib/i386-linux-gnu/libc.so.6(libc_start_main+0xe7) [0xb6e1ae37] (0x8054f01) /home/brian/Desktop/Link to pyrogenesis() [0x8054f01]

errno = 0 (?) OS error = ?


#835 fixed UnitAI - gathering animation played while unit still approaching resource historic_bruno
Description

Try moving a gather-capable unit in the vicinity of a resource target, such as a mine. Then if you tell the unit to gather while it's moving close to the target, it will start playing the gathering animation even though it's still moving to the target. I'm guessing this is an issue with the states in UnitAI, but the gathering animation should not be played until the unit is at the resource and has stopped moving.

#836 fixed broken build with enet 1.3 fabio
Description

Can't build on Debian sid and Ubuntu oneiric (included the official 0 A.D. PPA packages at https://launchpad.net/~wfg/+archive/0ad.dev/+packages) because of incompatibility with libenet 1.3. I am sure this is a known problem, but let's officially report anyway.

#838 fixed ERROR: CCmpPosition called on entity when IsInWorld is false Kieran P
Description

Got the following error when playing the game. It happened right after having garrisoned 20 units into a fortress, but the garrisoning failed. The units disappeared off world, but didn't show up in the garrisoned unit panel when the fortress was selected, they had disappeared.

ERROR: CCmpPosition::GetInterpolatedTransform called on entity when IsInWorld is false

ERROR: CCmpPosition::GetPosition called on entity when IsInWorld is false

#839 fixed function FireArrows: TypeError: cmpIdentity is null Kieran P
Description

Got the following error when playing the game. It happened right after having garrisoned 20 units into a fortress, but the garrisoning failed. The units disappeared off world, but didn't show up in the garrisoned unit panel when the fortress was selected, they had disappeared.

ERROR: Error in timer on entity 3836, IID 35, function FireArrows: TypeError: cmpIdentity is null ()@simulation/components/GarrisonHolder.js:68 ()@simulation/components/BuildingAI.js:119 ([object Object],0)@simulation/components/BuildingAI.js:145 ([object Object])@simulation/components/Timer.js:89

#840 fixed TypeError: entState is null Kieran P
Description

Got the following error when playing the game. It happened right after having garrisoned 20 units into a fortress, but the garrisoning failed. The units disappeared off world, but didn't show up in the garrisoned unit panel when the fortress was selected, they had disappeared.

ERROR: JavaScript error: gui/session/selection.js line 48 TypeError: entState is null ([object Array])@gui/session/selection.js:48 updateUnitCommands([object Object],[object GUIObject],[object GUIObject],[object Array])@gui/session/unit_commands.js:361 updateSelectionDetails()@gui/session/selection_details.js:280 onSimulationUpdate()@gui/session/session.js:232 onTick()@gui/session/session.js:172 eventhandler91 (tick)([object Object])@sn tick:0

#841 fixed ERROR: Script message handler OnHealthChanged failed Kieran P
Description

Got the following error when playing the game. It happened right after having garrisoned 20 units into a fortress, but the garrisoning failed. The units disappeared off world, but didn't show up in the garrisoned unit panel when the fortress was selected, they had disappeared.

ERROR: Script message handler OnHealthChanged failed

#842 fixed ReferenceError: cmpPosition is not defined Kieran P
Description

Got the following error when playing the game. It happened right after having garrisoned 20 units into a fortress, but the garrisoning failed. The units disappeared off world, but didn't show up in the garrisoned unit panel when the fortress was selected, they had disappeared.

ERROR: JavaScript error: simulation/components/GarrisonHolder.js line 148 ReferenceError: cmpPosition is not defined (3839)@simulation/components/GarrisonHolder.js:148 ()@simulation/components/GarrisonHolder.js:203 ([object Object])@simulation/components/GarrisonHolder.js:217 (3918)@simulation/components/Health.js:116 ()@simulation/components/Health.js:77 ProcessCommand(1,[object Object])@simulation/helpers/Commands.js:182

#843 fixed ERROR: Failed to call ProcessCommand() global script function Kieran P
Description

Got the following error when playing the game. It happened right after having garrisoned 20 units into a fortress, but the garrisoning failed. The units disappeared off world, but didn't show up in the garrisoned unit panel when the fortress was selected, they had disappeared.

ERROR: Failed to call ProcessCommand() global script function

#844 fixed Idle villagers button broken (garrisoned idle units not shown) ben Kieran P
Description

I'm clicking on it and 9/10 times nothing happens, 1/10 times it actually finds an idle unit.

#847 fixed [PATCH] Mac: Not all screen space is being used Echelon9 Kieran P
Description

On Mac OS X, only 1024x768 appears to be rendered, even though my screen size is 1280x800.

It would be nice to be able to play on a Mac using actual full screen.

#849 fixed Assertion failed error when trying to save a map in Atlas Erik Johansson
Description

Every time I try to save a map in Atlas I get the following error:

Assertion failed: "0 && (L"FYI: WARN_IF_FALSE reports that a function failed. Feel free to ignore or suppress this warning.")"
Location: waio.cpp:432 (waio_Preallocate)

Call stack:

waio_Preallocate (waio.cpp:432)
    fd = 7 (0x00000007)
    size = 656423 (0x00000000000A0427)

io::Store<io::DefaultCompletedHook,io::DefaultIssueHook> (io.h:291)
    pathname = (unavailable)
    data = 0x161B1000
    size = 656423 (0x000A0427)
    p = 0x0012F8C0 -> 
        alignment = 1 (0x0000000000000001)
        blockSize = 0 (0x00000000)
        queueDepth = 1 (0x00000001)

    completedHook = 0x00408403 -> (io::DefaultCompletedHook)
    issueHook = 0x00408403 (see above)
    op = 
        fd = 7 (0x00000007)
        opcode = 0 (0x00000000)
        offset = 2819315317342208 (0x000A042700000000)
        size = 1592884485391646720 (0x161B100000000000)
        buf = 0xCF1B0820

    file = 
        pathname = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 7

        fd = 7 (0x00000007)
        opcode = 3474655240 (0xCF1B0808)

    status_ = 32082840131 (0x0000000778494A43)

RealDirectory::Store (real_directory.cpp:57)
    this = (unavailable)
    name = 0x0012F900 -> 
        path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
        separator = [8] { 20512, 318, 2312, 53019, 63880, 18, 0, 0 }

    fileContents = 0x0012F800 -> 
        px = 0x005E2360 -> "0"
        pn = 
            pi_ = 0x00643DE8 -> 
                use_count_ = 0 (0x00000000)
                weak_count_ = 0 (0x00000000)



    size = 656423 (0x000A0427)

VFS::CreateFile (vfs.cpp:139)
    this = (unavailable)
    pathname = 0x0012FADC -> 
        path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
        separator = [8] { 47 ('/'), 0, 2768, 53019, 64380, 18, 6305, 92 ('\') }

    fileContents = 0x0012F9C8 -> 
        px = 0x161B1000 (see above)
        pn = 
            pi_ = 0x133B2848 -> 
                use_count_ = 2 (0x00000002)
                weak_count_ = 1 (0x00000001)



    size = 656423 (0x000A0427)
    directory = 0x01354328 -> 
        m_files = (error -100500 while analyzing map<Path,VfsFile >)
        m_subdirectories = (error -100500 while analyzing map<Path,VfsDirectory >)
        m_realDirectory = 
            px = 0x0062006F -> 
                (IFileLoader)
                m_path = 
                    path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                    separator = [8] { 3072, 0, 22528, 23680, 3072, 0, 24576, 23680 }

                m_priority = 1551915008 (0x5C805800)
                m_flags = 3072 (0x00000C00)
                m_watch = 
                    px = 0x5C806000 -> 
                        link = 
                            m_prev = (unavailable - internal error)

                            m_next = (unavailable - internal error)


                        request = 
                            px = (unavailable - internal error)

                            pn = 
                                pi_ = (unavailable - internal error)




                    pn = 
                        pi_ = 0x00000F00



            pn = 
                pi_ = 0x0134F628 -> 
                    use_count_ = 20248104 (0x0134F628)
                    weak_count_ = 20248104 (0x0134F628)



        m_shouldPopulate = 0 (0x00000000)

    name = 
        path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
        separator = 26297

    file = 
        m_name = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 0

        m_size = 3474655540 (0xCF1B0934)
        m_mtime = 91125118528389124 (0x0143BDD000000004)
        m_priority = 4228666 (0x0040863A)
        m_loader = 
            px = 0x161B1008 -> (IFileLoader)
            pn = 
                pi_ = 0x0012F9C4 -> 
                    use_count_ = 370872320 (0x161B1000)
                    weak_count_ = 322644040 (0x133B2848)




    s = (ScopedLock)
    status_ = 87517328819879936 (0x0136EC8C00000000)

CFilePacker::Write (fileio.cpp:68)
    this = (unavailable)
    filename = 0x0012FADC (see above)
    payloadSize_le = 370872320 (0x161B1000)

CMapWriter::SaveMap (mapwriter.cpp:65)
    this = (unavailable)
    pathname = 0x0012FADC (see above)
    pTerrain = 0x0143BDD0 -> 
        m_MapSize = 257 (0x00000101)
        m_MapSizePatches = 16 (0x00000010)
        m_Patches = 0x14200024 -> 
            
                m_Bounds = 
                    m_Data = [2] 
                        
                            X = 0.000000 (0x00000000)
                            Y = 0.000000 (0x00000000)
                            Z = 0.000000 (0x00000000)

                        
                            X = 64.000000 (0x42800000)
                            Y = 22.382513 (0x41B30F63)
                            Z = 64.000000 (0x42800000)


                m_Transform = 
                    _11 = 1.000000 (0x3F800000)
                    _21 = 0.000000 (0x00000000)
                    _31 = 0.000000 (0x00000000)
                    _41 = 0.000000 (0x00000000)
                    _12 = 0.000000 (0x00000000)
                    _22 = 1.000000 (0x3F800000)
                    _32 = 0.000000 (0x00000000)
                    _42 = 0.000000 (0x00000000)
                    _13 = 0.000000 (0x00000000)
                    _23 = 0.000000 (0x00000000)
                    _33 = 1.000000 (0x3F800000)
                    _43 = 0.000000 (0x00000000)
                    _14 = 0.000000 (0x00000000)
                    _24 = 0.000000 (0x00000000)
                    _34 = 0.000000 (0x00000000)
                    _44 = 1.000000 (0x3F800000)
                    _data = [16] 
                        1.000000 (0x3F800000)
                        0.000000 (0x00000000)
                        0.000000 (0x00000000)
                        0.000000 (0x00000000)
                        0.000000 (0x00000000)
                        1.000000 (0x3F800000)
                        0.000000 (0x00000000)
                        0.000000 (0x00000000)
                        0.000000 (0x00000000)
                        0.000000 (0x00000000)
                        1.000000 (0x3F800000)
                        0.000000 (0x00000000) ...
                    _data2d = [4] 
                        [4] { 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                        [4] { 0.000000 (0x00000000), 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                        [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000), 0.000000 (0x00000000) }
                        [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000) }

                m_InvTransform = 
                    _11 = 0.000000 (0x00000000)
                    _21 = 0.000000 (0x00000000)
                    _31 = 0.000000 (0x00000000)
                    _41 = 0.000000 (0x00000000)
                    _12 = 0.000000 (0x00000000)
                    _22 = 0.000000 (0x00000000)
                    _32 = 0.000000 (0x00000000)
                    _42 = 0.000000 (0x00000000)
                    (too much output; skipping to next top-level symbol)

                m_RenderData = 0x00000000
                m_BoundsValid = true 

            m_bWillBeDrawn = false
            m_MiniPatches = [16] 
                [16] 
                    
                        Tex = 0x131FAB50 -> 
                            m_Tag = { (error -100500 while analyzing string >) }
                            m_pProperties = 
                                px = 0x13206550 -> 
                                    m_pParent = 
                                        px = 0x13147F88 -> 
                                            m_pParent = 
                                                px = 0x00000000
                                                pn = 
                                                    pi_ = 0x00000000


                                            m_BaseColor = 0 (0x00000000)
                                            m_HasBaseColor = false
                                            m_MovementClass = { (error -100500 while analyzing string >) }
                                            m_Groups = (error -100500 while analyzing vector<CTerrainGroup * >)

                                        pn = 
                                            pi_ = 0x13076918 -> 
                                                use_count_ = 74 (0x0000004A)
                                                weak_count_ = 1 (0x00000001)



                                    m_BaseColor = 0 (0x00000000)
                                    m_HasBaseColor = false
                                    m_MovementClass = { (error -100500 while analyzing string >) }
                                    m_Groups = (error -100500 while analyzing vector<CTerrainGroup * >)

                                pn = 
                                    pi_ = 0x13206FE8 -> 
                                        use_count_ = 9 (0x00000009)
                                        weak_count_ = 1 (0x00000001)



                            m_Texture = 
                                px = 0x131F3B88 -> 
                                    m_Properties = 
                                        m_Path = 
                                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                                            separator = "/r✃"

                                        m_Filter = 9987 (0x00002703)
                                        m_Wrap = 10497 (0x00002901)
                                        m_Aniso = 2.000000 (0x40000000)

                                    m_Handle = 622770258065 (0x0000009100000091)
                                    m_BaseColour = 4286154066 (0xFF798552)
                                    m_State = LOADED
                                    m_TextureManager = 0x013E9918 -> 
                                        m_VFS = 
                                            px = 0x01354328 (see above)
                                            pn = 
                                                pi_ = 0x0135C040 -> 
                                                    use_count_ = 4 (0x00000004)
                                                    weak_count_ = 1 (0x00000001)



                                        m_CacheLoader = 
                                            m_VFS = 
                                                px = 0x01354328 (see above)
                                                pn = 
                                                    pi_ = 0x0135C040 (see above)


                                            m_FileExtension = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)

                                        m_DisableGL = false
                                        m_TextureConverter = 
                                            m_VFS = 
                                                px = 0x01354328 (see above)
                                                pn = 
                                                    pi_ = 0x0135C040 (see above)


                                            m_HighQuality = false
                                            m_WorkerThread = 1544 (0x00000608)
                                            m_WorkerMutex = 0x00161178
                                            m_WorkerSem = 0x0000060C
                                            m_RequestQueue = (error -100500 while analyzing deque<boost::shared_ptr<CTextureConverter::ConversionRequest> >)
                                            m_ResultQueue = (error -100500 while analyzing deque<boost::shared_ptr<CTextureConverter::ConversionResult> >)
                                            m_Shutdown = false

                                        m_DefaultHandle = 4294967297 (0x0000000100000001)
                                        m_ErrorHandle = 8589934594 (0x0000000200000002)
                                        m_ErrorTexture = 
                                            px = 0x0135B330 -> 
                                                m_Properties = 
                                                    m_Path = 
                                                        path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                                                        separator = "/f✃"

                                                    m_Filter = 9987 (0x00002703)
                                                    m_Wrap = 10497 (0x00002901)
                                                    m_Aniso = 1.000000 (0x3F800000)

                                                m_Handle = 8589934594 (0x0000000200000002)
                                                m_BaseColour = 0 (0x00000000)
                                                m_State = LOADED
                                                m_TextureManager = 0x013E9918 (see above)
                                                m_Self = 
                                                    px = 0x0135B330 (see above)
                                                    pn = 
                                                        pi_ = 0x01403F18 -> 
                                                            use_count_ = 1 (0x00000001)
                                                            weak_count_ = 2 (0x00000002)




                                            pn = 
                                                pi_ = 0x01403F18 (see above)


                                        m_TextureCache = 
                                            table_ = 
                                                
                                                    
                                                        buckets_ = 0x13228798 -> 
                                                            next_ = 0x1323CFC8 -> 
                                                                next_ = 0x1322BAB0 -> 
                                                                    next_ = 0x131DD1E0 -> 
                                                                        next_ = 0x00000000




                                                        bucket_count_ = 769 (0x00000301)
                                                        allocators_ = 
                                                            
                                                                (error -100500 while analyzing )
                                                                (error -100500 while analyzing )



                                                    
                                                        current_ = false
                                                        funcs_ = [2] { { data_ = { buf = [2] { [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }, [8] { 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240, 2 } }, align_ = 
                                                                        t0 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t1 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t2 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t3 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t4 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t5 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t6 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t7 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t8 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t9 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t10 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t11 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t12 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t13 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t14 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t15 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t16 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t17 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t18 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t19 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t20 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t21 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t22 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
                                                                        t23 = [8] { 0, 0, 103 ('g'), 101 ('e'), 95 ('_'), 49 ('1'), 48 ('0'), 240 }
 } }, { data_ = { buf = "ge_10ð", align_ = 
                                                                        t0 = "ge_10ð"
                                                                        t1 = "ge_10ð"
                                                                        t2 = "ge_10ð"
                                                                        t3 = "ge_10ð"
                                                                        t4 = "ge_10ð"
                                                                        t5 = "ge_10ð"
                                                                        t6 = "ge_10ð"
                                                                        t7 = "ge_10ð"
                                                                        t8 = "ge_10ð"
                                                                        t9 = "ge_10ð"
                                                                        t10 = "ge_10ð"
                                                                        t11 = "ge_10ð"
                                                                        t12 = "ge_10ð"
                                                                        t13 = "ge_10ð"
                                                                        t14 = "ge_10ð"
                                                                        t15 = "ge_10ð"
                                                                        t16 = "ge_10ð"
                                                                        t17 = "ge_10ð"
                                                                        t18 = "ge_10ð"
                                                                        t19 = "ge_10ð"
                                                                        t20 = "ge_10ð"
                                                                        t21 = "ge_10ð"
                                                                        t22 = "ge_10ð"
                                                                        t23 = "ge_10ð"
 } } }

                                                    size_ = 752 (0x000002F0)
                                                    mlf_ = 1.000000 (0x3F800000)
                                                    cached_begin_bucket_ = 0x13228798 (see above)
                                                    max_load_ = 769 (0x00000301)



                                        m_HotloadFiles = 
                                            table_ = 
                                                
                                                    
                                                        buckets_ = 0x1322A008 -> 
                                                            next_ = 0x00000000

                                                        bucket_count_ = 769 (0x00000301)
                                                        allocators_ = 
                                                            
                                                                (error -100500 while analyzing )
                                                                (error -100500 while analyzing )



                                                    
                                                        current_ = false
                                                        funcs_ = "L_Aû"

                                                    size_ = 763 (0x000002FB)
                                                    mlf_ = 1.000000 (0x3F800000)
                                                    cached_begin_bucket_ = 0x1322A00C -> 
                                                        next_ = 0x13212FB8 -> 
                                                            next_ = 0x00000000


                                                    max_load_ = 769 (0x00000301)



                                        m_SettingsFiles = 
                                            table_ = 
                                                
                                                    
                                                        buckets_ = 0x1339EFF8 -> 
                                                            next_ = 0x00000000

                                                        bucket_count_ = 17 (0x00000011)
                                                        allocators_ = 
                                                            
                                                                (error -100500 while analyzing )
                                                                (error -100500 while analyzing )



                                                    
                                                        current_ = false
                                                        funcs_ = "B_t"

                                                    size_ = 11 (0x0000000B)
                                                    mlf_ = 1.000000 (0x3F800000)
                                                    cached_begin_bucket_ = 0x1339F010 -> 
                                                        next_ = 0x13289AA8 -> 
                                                            next_ = 0x00000000


                                                    max_load_ = 17 (0x00000011)




                                    m_Self = 
                                        px = 0x131F3B88 (see above)
                                        pn = 
                                            pi_ = 0x131FABA0 -> 
                                                use_count_ = 2 (0x00000002)
                                                weak_count_ = 9 (0x00000009)




                                pn = 
                                    pi_ = 0x131FABA0 (see above)


                            m_BaseColor = 0 (0x00000000)
                            m_BaseColorValid = false
                            m_Groups = (error -100500 while analyzing vector<CTerrainGroup * >)

                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)
 ...
                [16] 
                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)
 ...
                [16] 
                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)
 ...
                [16] 
                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)
 ...
                [16] 
                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)
 ...
                [16] 
                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)
 ...
                [16] 
                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)
 ...
                [16] 
                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)

                    
                        Tex = 0x131FAB50 (see above)
                        Priority = 0 (0x00000000)
 ... ...
            m_X = 0 (0x00000000)
            m_Z = 0 (0x00000000)
            m_Parent = 0x0143BDD0 (see above)

        m_Heightmap = 0x13298008 -> 16384 (0x4000)
        m_BaseColour = 
            R = [8] { 255 (0xFF), 255 (0xFF), 255 (0xFF), 255 (0xFF), 0 (0x00), 0 (0x00), 0 (0x00), 0 (0x00) }
            G = [8] { 255 (0xFF), 255 (0xFF), 255 (0xFF), 0 (0x00), 0 (0x00), 0 (0x00), 0 (0x00), 7 (0x07) }
            B = [8] { 255 (0xFF), 255 (0xFF), 0 (0x00), 0 (0x00), 0 (0x00), 0 (0x00), 7 (0x07), 0 (0x00) }
            A = [8] { 255 (0xFF), 0 (0x00), 0 (0x00), 0 (0x00), 0 (0x00), 7 (0x07), 0 (0x00), 4 (0x04) }


    pWaterMan = 0x013E5020 -> 
        m_WaterTexture = [60] 
            
                px = 0x1325BA58 -> 
                    m_Properties = 
                        m_Path = 
                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = "/r✃"

                        m_Filter = 9987 (0x00002703)
                        m_Wrap = 10497 (0x00002901)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 94489280534 (0x0000001600000016)
                    m_BaseColour = 2245252051 (0x85D3D3D3)
                    m_State = LOADED
                    m_TextureManager = 0x013E9918 (see above)
                    m_Self = 
                        px = 0x1325BA58 (see above)
                        pn = 
                            pi_ = 0x1328A008 -> 
                                use_count_ = 2 (0x00000002)
                                weak_count_ = 9 (0x00000009)




                pn = 
                    pi_ = 0x1328A008 (see above)


            
                px = 0x13238F98 -> 
                    m_Properties = 
                        m_Path = 
                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = "/r✃"

                        m_Filter = 9987 (0x00002703)
                        m_Wrap = 10497 (0x00002901)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 240518168632 (0x0000003800000038)
                    m_BaseColour = 2245252051 (0x85D3D3D3)
                    m_State = LOADED
                    m_TextureManager = 0x013E9918 (see above)
                    m_Self = 
                        px = 0x13238F98 (see above)
                        pn = 
                            pi_ = 0x1328A038 -> 
                                use_count_ = 2 (0x00000002)
                                weak_count_ = 9 (0x00000009)




                pn = 
                    pi_ = 0x1328A038 (see above)


            
                px = 0x1325B7F0 -> 
                    m_Properties = 
                        m_Path = 
                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = "/r✃"

                        m_Filter = 9987 (0x00002703)
                        m_Wrap = 10497 (0x00002901)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 244813135929 (0x0000003900000039)
                    m_BaseColour = 2245252051 (0x85D3D3D3)
                    m_State = LOADED
                    m_TextureManager = 0x013E9918 (see above)
                    m_Self = 
                        px = 0x1325B7F0 (see above)
                        pn = 
                            pi_ = 0x1328A0A8 -> (too much output; skipping to next top-level symbol)



                pn = 
                    pi_ = 0x1328A0A8 (see above)


            
                px = 0x1325B460 -> 
                    m_Properties = 
                        m_Path = 
                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = "/r✃"

                        m_Filter = 9987 (0x00002703)
                        m_Wrap = 10497 (0x00002901)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 532575944828 (0x0000007C0000007C)
                    m_BaseColour = 2245252051 (0x85D3D3D3)
                    m_State = LOADED
                    m_TextureManager = 0x013E9918 (see above)
                    m_Self = 
                        px = 0x1325B460 (see above)
                        pn = 
                            pi_ = 0x1328A118 -> 
                                use_count_ = 2 (0x00000002)
                                weak_count_ = 9 (0x00000009)




                pn = 
                    pi_ = 0x1328A118 (see above)


            
                px = 0x1328A188 -> 
                    m_Properties = 
                        m_Path = 
                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = [8] { 47 ('/'), 0, 9987, 0, 10497, 0, 0, 16256 }

                        m_Filter = 9987 (0x00002703)
                        m_Wrap = 10497 (0x00002901)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 115964117019 (0x0000001B0000001B)
                    m_BaseColour = 2228474835 (0x84D3D3D3)
                    m_State = LOADED
                    m_TextureManager = 0x013E9918 (see above)
                    m_Self = 
                        px = 0x1328A188 (see above)
                        pn = 
                            pi_ = 0x1328A1E0 -> 
                                use_count_ = 2 (0x00000002)
                                weak_count_ = 9 (0x00000009)




                pn = 
                    pi_ = 0x1328A1E0 (see above)


            
                px = 0x1328A250 -> 
                    m_Properties = 
                        m_Path = 
                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = [8] { 47 ('/'), 0, 9987, 0, 10497, 0, 0, 16256 }

                        m_Filter = 9987 (0x00002703)
                        m_Wrap = 10497 (0x00002901)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 408021893215 (0x0000005F0000005F)
                    m_BaseColour = 2228474835 (0x84D3D3D3)
                    m_State = LOADED
                    m_TextureManager = 0x013E9918 (see above)
                    m_Self = 
                        px = 0x1328A250 (see above)
                        pn = 
                            pi_ = 0x1328A2A8 -> 
                                use_count_ = 2 (0x00000002)
                                weak_count_ = 9 (0x00000009)




                pn = 
                    pi_ = 0x1328A2A8 (see above)


            
                px = 0x1328A318 -> 
                    m_Properties = 
                        m_Path = 
                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = [8] { 47 ('/'), 0, 9987, 0, 10497, 0, 0, 16256 }

                        m_Filter = 9987 (0x00002703)
                        m_Wrap = 10497 (0x00002901)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 223338299444 (0x0000003400000034)
                    m_BaseColour = 2228474835 (0x84D3D3D3)
                    m_State = LOADED
                    m_TextureManager = 0x013E9918 (see above)
                    m_Self = 
                        px = 0x1328A318 (see above)
                        pn = 
                            pi_ = 0x1328A370 -> 
                                use_count_ = 2 (0x00000002)
                                weak_count_ = 9 (0x00000009)




                pn = 
                    pi_ = 0x1328A370 (see above)


            
                px = 0x1328A3E0 -> 
                    m_Properties = 
                        m_Path = 
                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = [8] { 47 ('/'), 0, 9987, 0, 10497, 0, 0, 16256 }

                        m_Filter = 9987 (0x00002703)
                        m_Wrap = 10497 (0x00002901)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 249108103226 (0x0000003A0000003A)
                    m_BaseColour = 2228474835 (0x84D3D3D3)
                    m_State = LOADED
                    m_TextureManager = 0x013E9918 (see above)
                    m_Self = 
                        px = 0x1328A3E0 (see above)
                        pn = 
                            pi_ = 0x1328A438 -> 
                                use_count_ = 2 (0x00000002)
                                weak_count_ = 9 (0x00000009)




                pn = 
                    pi_ = 0x1328A438 (see above)

 ...
        m_NormalMap = [60] 
            
                px = 0x1327C580 -> 
                    m_Properties = 
                        m_Path = 
                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = [8] { 47 ('/'), 0, 9987, 0, 10497, 0, 0, 16256 }

                        m_Filter = 9987 (0x00002703)
                        m_Wrap = 10497 (0x00002901)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 210453397553 (0x0000003100000031)
                    m_BaseColour = 4286480383 (0xFF7E7FFF)
                    m_State = LOADED
                    m_TextureManager = 0x013E9918 (see above)
                    m_Self = 
                        px = 0x1327C580 (see above)
                        pn = 
                            pi_ = 0x1327C5D8 -> 
                                use_count_ = 2 (0x00000002)
                                weak_count_ = 9 (0x00000009)




                pn = 
                    pi_ = 0x1327C5D8 (see above)


            
                px = 0x1327C770 -> 
                    m_Properties = 
                        m_Path = 
                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = [8] { 47 ('/'), 0, 9987, 0, 10497, 0, 0, 16256 }

                        m_Filter = 9987 (0x00002703)
                        m_Wrap = 10497 (0x00002901)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 558345748610 (0x0000008200000082)
                    m_BaseColour = 4286480383 (0xFF7E7FFF)
                    m_State = LOADED
                    m_TextureManager = 0x013E9918 (see above)
                    m_Self = 
                        px = 0x1327C770 (see above)
                        pn = 
                            pi_ = 0x1327C7C8 -> 
                                use_count_ = 2 (0x00000002)
                                weak_count_ = 9 (0x00000009)




                pn = 
                    pi_ = 0x1327C7C8 (see above)


            
                px = 0x1327C960 -> 
                    m_Properties = 
                        m_Path = 
                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = [8] { 47 ('/'), 0, 9987, 0, 10497, 0, 0, 16256 }

                        m_Filter = 9987 (0x00002703)
                        m_Wrap = 10497 (0x00002901)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 463856468076 (0x0000006C0000006C)
                    m_BaseColour = 4286480383 (0xFF7E7FFF)
                    m_State = LOADED
                    m_TextureManager = 0x013E9918 (see above)
                    m_Self = 
                        px = 0x1327C960 (see above)
                        pn = 
                            pi_ = 0x1327C9B8 -> 
                                use_count_ = 2 (0x00000002)
                                weak_count_ = 9 (0x00000009)




                pn = 
                    pi_ = 0x1327C9B8 (see above)


            
                px = 0x1327CB50 -> 
                    m_Properties = 
                        m_Path = 
                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = [8] { 47 ('/'), 0, 9987, 0, 10497, 0, 0, 16256 }

                        m_Filter = 9987 (0x00002703)
                        m_Wrap = 10497 (0x00002901)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 476741369967 (0x0000006F0000006F)
                    m_BaseColour = 4286480383 (0xFF7E7FFF)
                    m_State = LOADED
                    m_TextureManager = 0x013E9918 (see above)
                    m_Self = 
                        px = 0x1327CB50 (see above)
                        pn = 
                            pi_ = 0x1327CBA8 -> 
                                use_count_ = 2 (0x00000002)
                                weak_count_ = 9 (0x00000009)




                pn = 
                    pi_ = 0x1327CBA8 (see above)


            
                px = 0x1327CD40 -> 
                    m_Properties = 
                        m_Path = 
                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = [8] { 47 ('/'), 0, 9987, 0, 10497, 0, 0, 16256 }

                        m_Filter = 9987 (0x00002703)
                        m_Wrap = 10497 (0x00002901)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 386547056730 (0x0000005A0000005A)
                    m_BaseColour = 4286480383 (0xFF7E7FFF)
                    m_State = LOADED
                    m_TextureManager = 0x013E9918 (see above)
                    m_Self = 
                        px = 0x1327CD40 (see above)
                        pn = 
                            pi_ = 0x1327CD98 -> 
                                use_count_ = 2 (0x00000002)
                                weak_count_ = 9 (0x00000009)




                pn = 
                    pi_ = 0x1327CD98 (see above)


            
                px = 0x1327CF30 -> 
                    m_Properties = 
                        m_Path = 
                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = [8] { 47 ('/'), 0, 9987, 0, 10497, 0, 0, 16256 }

                        m_Filter = 9987 (0x00002703)
                        m_Wrap = 10497 (0x00002901)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 382252089433 (0x0000005900000059)
                    m_BaseColour = 4286480383 (0xFF7E7FFF)
                    m_State = LOADED
                    m_TextureManager = 0x013E9918 (see above)
                    m_Self = 
                        px = 0x1327CF30 (see above)
                        pn = 
                            pi_ = 0x1327CF88 -> 
                                use_count_ = 2 (0x00000002)
                                weak_count_ = 9 (0x00000009)




                pn = 
                    pi_ = 0x1327CF88 (see above)


            
                px = 0x1327D120 -> 
                    m_Properties = 
                        m_Path = 
                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = [8] { 47 ('/'), 0, 9987, 0, 10497, 0, 0, 16256 }

                        m_Filter = 9987 (0x00002703)
                        m_Wrap = 10497 (0x00002901)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 403726925918 (0x0000005E0000005E)
                    m_BaseColour = 4286480383 (0xFF7E7FFF)
                    m_State = LOADED
                    m_TextureManager = 0x013E9918 (see above)
                    m_Self = 
                        px = 0x1327D120 (see above)
                        pn = 
                            pi_ = 0x1327D178 -> 
                                use_count_ = 2 (0x00000002)
                                weak_count_ = 9 (0x00000009)




                pn = 
                    pi_ = 0x1327D178 (see above)


            
                px = 0x1327D310 -> 
                    m_Properties = 
                        m_Path = 
                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = [8] { 47 ('/'), 0, 9987, 0, 10497, 0, 0, 16256 }

                        m_Filter = 9987 (0x00002703)
                        m_Wrap = 10497 (0x00002901)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 468151435373 (0x0000006D0000006D)
                    m_BaseColour = 4286480383 (0xFF7E7FFF)
                    m_State = LOADED
                    m_TextureManager = 0x013E9918 (see above)
                    m_Self = 
                        px = 0x1327D310 (see above)
                        pn = 
                            pi_ = 0x1327D368 -> 
                                use_count_ = 2 (0x00000002)
                                weak_count_ = 9 (0x00000009)




                pn = 
                    pi_ = 0x1327D368 (see above)

 ...
        m_WaterCurrentTex = 0 (0x00000000)
        m_WaterColor = 
            r = 0.300000 (0x3E99999A)
            g = 0.350000 (0x3EB33333)
            b = 0.700000 (0x3F333333)
            a = 1.000000 (0x3F800000)

        m_RenderWater = true 
        m_WaterScroll = (bool)0x6C
        m_WaterHeight = 5.000000 (0x40A00000)
        m_WaterMaxAlpha = 0.850000 (0x3F59999A)
        m_WaterFullDepth = 4.000000 (0x40800000)
        m_WaterAlphaOffset = -0.050000 (0xBD4CCCCD)
        m_SWaterSpeed = 0.001500 (0x3AC49BA6)
        m_TWaterSpeed = 0.001500 (0x3AC49BA6)
        m_SWaterTrans = 0.000000 (0x00000000)
        m_TWaterTrans = 0.000000 (0x00000000)
        m_SWaterScrollCounter = 0.000000 (0x00000000)
        m_TWaterScrollCounter = 0.000000 (0x00000000)
        m_WaterTexTimer = 0 (0x0000000000000000)
        m_ReflectionTexture = 21 (0x00000015)
        m_RefractionTexture = 22 (0x00000016)
        m_ReflectionTextureSize = 128 (0x00000080)
        m_RefractionTextureSize = 128 (0x00000080)
        m_ReflectionMatrix = 
            _11 = 4.511769 (0x40906069)
            _21 = 0.000000 (0x00000000)
            _31 = 0.000000 (0x00000000)
            _41 = 0.000000 (0x00000000)
            _12 = 0.000000 (0x00000000)
            _22 = -4.672655 (0xC0958664)
            _32 = 0.203568 (0x3E50742F)
            _42 = 0.500000 (0x3F000000)
            _13 = 0.000000 (0x00000000)
            _23 = 2.697759 (0x402CA814)
            _33 = 0.866025 (0x3F5DB3D7)
            _43 = 0.866025 (0x3F5DB3D7)
            _14 = -1353.530640 (0xC4A930FB)
            _24 = -1085.293335 (0xC487A963)
            _34 = -130.150040 (0xC3022669)
            _44 = -131.632202 (0xC303A1D8)
            _data = [16] 
                4.511769 (0x40906069)
                0.000000 (0x00000000)
                0.000000 (0x00000000)
                0.000000 (0x00000000)
                0.000000 (0x00000000)
                -4.672655 (0xC0958664)
                0.203568 (0x3E50742F)
                0.500000 (0x3F000000)
                0.000000 (0x00000000)
                2.697759 (0x402CA814)
                0.866025 (0x3F5DB3D7)
                0.866025 (0x3F5DB3D7) ...
            _data2d = [4] 
                [4] { 4.511769 (0x40906069), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                [4] { 0.000000 (0x00000000), -4.672655 (0xC0958664), 0.203568 (0x3E50742F), 0.500000 (0x3F000000) }
                [4] { 0.000000 (0x00000000), 2.697759 (0x402CA814), 0.866025 (0x3F5DB3D7), 0.866025 (0x3F5DB3D7) }
                [4] { -1353.530640 (0xC4A930FB), -1085.293335 (0xC487A963), -130.150040 (0xC3022669), -131.632202 (0xC303A1D8) }

        m_RefractionMatrix = 
            _11 = 4.511769 (0x40906069)
            _21 = 0.000000 (0x00000000)
            _31 = 0.000000 (0x00000000)
            _41 = 0.000000 (0x00000000)
            _12 = 0.000000 (0x00000000)
            _22 = 4.672655 (0x40958664)
            _32 = -0.188759 (0xBE414A29)
            _42 = -0.500000 (0xBF000000)
            _13 = 0.000000 (0x00000000)
            _23 = 2.697759 (0x402CA814)
            _33 = 0.866025 (0x3F5DB3D7)
            _43 = 0.866025 (0x3F5DB3D7)
            _14 = -1353.530640 (0xC4A930FB)
            _24 = -1132.019897 (0xC48D80A3)
            _34 = -128.188400 (0xC300303B)
            _44 = -126.632202 (0xC2FD43B0)
            _data = [16] 
                4.511769 (0x40906069)
                0.000000 (0x00000000)
                0.000000 (0x00000000)
                0.000000 (0x00000000)
                0.000000 (0x00000000)
                4.672655 (0x40958664)
                -0.188759 (0xBE414A29)
                -0.500000 (0xBF000000)
                0.000000 (0x00000000)
                2.697759 (0x402CA814)
                0.866025 (0x3F5DB3D7)
                0.866025 (0x3F5DB3D7) ...
            _data2d = [4] 
                [4] { 4.511769 (0x40906069), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                [4] { 0.000000 (0x00000000), 4.672655 (0x40958664), -0.188759 (0xBE414A29), -0.500000 (0xBF000000) }
                [4] { 0.000000 (0x00000000), 2.697759 (0x402CA814), 0.866025 (0x3F5DB3D7), 0.866025 (0x3F5DB3D7) }
                [4] { -1353.530640 (0xC4A930FB), -1132.019897 (0xC48D80A3), -128.188400 (0xC300303B), -126.632202 (0xC2FD43B0) }

        m_WaterTint = 
            r = 0.280000 (0x3E8F5C29)
            g = 0.300000 (0x3E99999A)
            b = 0.590000 (0x3F170A3D)
            a = 1.000000 (0x3F800000)

        m_RepeatPeriod = 16.000000 (0x41800000)
        m_Shininess = 150.000000 (0x43160000)
        m_SpecularStrength = 0.400000 (0x3ECCCCCD)
        m_Waviness = 8.000000 (0x41000000)
        m_Murkiness = 0.450000 (0x3EE66666)
        m_ReflectionTint = 
            r = 0.280000 (0x3E8F5C29)
            g = 0.300000 (0x3E99999A)
            b = 0.590000 (0x3F170A3D)
            a = 1.000000 (0x3F800000)

        m_ReflectionTintStrength = 0.000000 (0x00000000)

    pSkyMan = 0x013E54F0 -> 
        m_RenderSky = true 
        m_HorizonHeight = -150.000000 (0xC3160000)
        m_SkySet = { (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >) }
        m_SkyTexture = [5] 
            
                px = 0x1328EEB8 -> 
                    m_Properties = 
                        m_Path = 
                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = "/m✃"

                        m_Filter = 9987 (0x00002703)
                        m_Wrap = 33071 (0x0000812F)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 429496729700 (0x0000006400000064)
                    m_BaseColour = 4287932864 (0xFF94A9C0)
                    m_State = LOADED
                    m_TextureManager = 0x013E9918 (see above)
                    m_Self = 
                        px = 0x1328EEB8 (see above)
                        pn = 
                            pi_ = 0x132B8450 -> 
                                use_count_ = 2 (0x00000002)
                                weak_count_ = 8 (0x00000008)




                pn = 
                    pi_ = 0x132B8450 (see above)


            
                px = 0x1328EDB0 -> 
                    m_Properties = 
                        m_Path = 
                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = "/5✃"

                        m_Filter = 9987 (0x00002703)
                        m_Wrap = 33071 (0x0000812F)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 158913789989 (0x0000002500000025)
                    m_BaseColour = 4287735229 (0xFF91A5BD)
                    m_State = LOADED
                    m_TextureManager = 0x013E9918 (see above)
                    m_Self = 
                        px = 0x1328EDB0 (see above)
                        pn = 
                            pi_ = 0x132B84D8 -> 
                                use_count_ = 2 (0x00000002)
                                weak_count_ = 8 (0x00000008)




                pn = 
                    pi_ = 0x132B84D8 (see above)


            
                px = 0x1328ECA8 -> 
                    m_Properties = 
                        m_Path = 
                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = "/6✃"

                        m_Filter = 9987 (0x00002703)
                        m_Wrap = 33071 (0x0000812F)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 515396075640 (0x0000007800000078)
                    m_BaseColour = 4286486194 (0xFF7E96B2)
                    m_State = LOADED
                    m_TextureManager = 0x013E9918 (see above)
                    (too much output; skipping to next top-level symbol)

                pn = 
                    pi_ = 0x132B8580 -> 
                        use_count_ = 2 (0x00000002)
                        weak_count_ = 8 (0x00000008)



            
                px = 0x1328EBA0 -> 
                    m_Properties = 
                        m_Path = 
                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = [8] { 47 ('/'), 46 ('.'), 9987, 0, 33071, 0, 0, 16256 }

                        m_Filter = 9987 (0x00002703)
                        m_Wrap = 33071 (0x0000812F)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 373662154839 (0x0000005700000057)
                    m_BaseColour = 4289905107 (0xFFB2C1D3)
                    m_State = LOADED
                    m_TextureManager = 0x013E9918 (see above)
                    m_Self = 
                        px = 0x1328EBA0 (see above)
                        pn = 
                            pi_ = 0x132B8628 -> 
                                use_count_ = 2 (0x00000002)
                                weak_count_ = 8 (0x00000008)




                pn = 
                    pi_ = 0x132B8628 (see above)


            
                px = 0x1328EA98 -> 
                    m_Properties = 
                        m_Path = 
                            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = [8] { 47 ('/'), 46 ('.'), 9987, 0, 33071, 0, 0, 16256 }

                        m_Filter = 9987 (0x00002703)
                        m_Wrap = 33071 (0x0000812F)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 266287972414 (0x0000003E0000003E)
                    m_BaseColour = 4289377219 (0xFFAAB3C3)
                    m_State = LOADED
                    m_TextureManager = 0x013E9918 (see above)
                    m_Self = 
                        px = 0x1328EA98 (see above)
                        pn = 
                            pi_ = 0x132B86D0 -> 
                                use_count_ = 2 (0x00000002)
                                weak_count_ = 8 (0x00000008)




                pn = 
                    pi_ = 0x132B86D0 (see above)



    pLightEnv = 0x00648748 -> 
        m_Elevation = 0.785398 (0x3F490FD8)
        m_Rotation = 5.497790 (0x40AFEDE5)
        m_TerrainShadowTransparency = 0.000000 (0x00000000)
        m_SunDir = 
            X = -0.270597 (0xBE8A8BC0)
            Y = -0.923880 (0xBF6C835E)
            Z = 0.270599 (0x3E8A8BF1)

        m_LightingModel = (error -100500 while analyzing string >)
        m_SunColor = 
            X = 0.749020 (0x3F3FBFC6)
            Y = 0.749020 (0x3F3FBFC6)
            Z = 0.749020 (0x3F3FBFC6)

        m_TerrainAmbientColor = 
            X = 0.501961 (0x3F008084)
            Y = 0.501961 (0x3F008084)
            Z = 0.501961 (0x3F008084)

        m_UnitsAmbientColor = 
            X = 0.501961 (0x3F008084)
            Y = 0.501961 (0x3F008084)
            Z = 0.501961 (0x3F008084)


    pCamera = 0x0140015C -> 
        m_Orientation = 
            _11 = 1.000000 (0x3F800000)
            _21 = 0.000000 (0x00000000)
            _31 = 0.000000 (0x00000000)
            _41 = 0.000000 (0x00000000)
            _12 = 0.000000 (0x00000000)
            _22 = 0.866025 (0x3F5DB3D7)
            _32 = 0.500000 (0x3F000000)
            _42 = 0.000000 (0x00000000)
            _13 = 0.000000 (0x00000000)
            _23 = -0.500000 (0xBF000000)
            _33 = 0.866025 (0x3F5DB3D7)
            _43 = 0.000000 (0x00000000)
            _14 = 300.000000 (0x43960000)
            _24 = 118.382507 (0x42ECC3D8)
            _34 = 214.570450 (0x43569209)
            _44 = 1.000000 (0x3F800000)
            _data = [16] 
                1.000000 (0x3F800000)
                0.000000 (0x00000000)
                0.000000 (0x00000000)
                0.000000 (0x00000000)
                0.000000 (0x00000000)
                0.866025 (0x3F5DB3D7)
                0.500000 (0x3F000000)
                0.000000 (0x00000000)
                0.000000 (0x00000000)
                -0.500000 (0xBF000000)
                0.866025 (0x3F5DB3D7)
                0.000000 (0x00000000) ...
            _data2d = [4] 
                [4] { 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                [4] { 0.000000 (0x00000000), 0.866025 (0x3F5DB3D7), 0.500000 (0x3F000000), 0.000000 (0x00000000) }
                [4] { 0.000000 (0x00000000), -0.500000 (0xBF000000), 0.866025 (0x3F5DB3D7), 0.000000 (0x00000000) }
                [4] { 300.000000 (0x43960000), 118.382507 (0x42ECC3D8), 214.570450 (0x43569209), 1.000000 (0x3F800000) }

        m_ProjMat = 
            _11 = 4.721337 (0x40971531)
            _21 = 0.000000 (0x00000000)
            _31 = 0.000000 (0x00000000)
            _41 = 0.000000 (0x00000000)
            _12 = 0.000000 (0x00000000)
            _22 = 5.671282 (0x40B57B24)
            _32 = 0.000000 (0x00000000)
            _42 = 0.000000 (0x00000000)
            _13 = 0.000000 (0x00000000)
            _23 = 0.000000 (0x00000000)
            _33 = 1.007843 (0x3F810101)
            _43 = 1.000000 (0x3F800000)
            _14 = 0.000000 (0x00000000)
            _24 = 0.000000 (0x00000000)
            _34 = -32.125492 (0xC2008081)
            _44 = 0.000000 (0x00000000)
            _data = [16] 
                4.721337 (0x40971531)
                0.000000 (0x00000000)
                0.000000 (0x00000000)
                0.000000 (0x00000000)
                0.000000 (0x00000000)
                5.671282 (0x40B57B24)
                0.000000 (0x00000000)
                0.000000 (0x00000000)
                0.000000 (0x00000000)
                0.000000 (0x00000000)
                1.007843 (0x3F810101)
                1.000000 (0x3F800000) ...
            _data2d = [4] 
                [4] { 4.721337 (0x40971531), 0.000000 (0x00000000), 0.000000 (0x00000000), (too much output; skipping to next top-level symbol) }
                [4] { 0.000000 (0x00000000), 5.671282 (0x40B57B24), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 1.007843 (0x3F810101), 1.000000 (0x3F800000) }
                [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), -32.125492 (0xC2008081), 0.000000 (0x00000000) }

        m_NearPlane = 16.000000 (0x41800000)
        m_FarPlane = 4096.000000 (0x45800000)
        m_FOV = 0.349066 (0x3EB2B8C2)
        m_ViewPort = 
            m_X = 0 (0x00000000)
            m_Y = 0 (0x00000000)
            m_Width = 812 (0x0000032C)
            m_Height = 679 (0x000002A7)

        m_ViewFrustum = 
            m_aPlanes = [10] 
                
                    m_Norm = 
                        X = -4.721337 (0xC0971531)
                        Y = -0.500000 (0xBF000000)
                        Z = 0.866025 (0x3F5DB3D7)

                    m_Dist = 1289.768799 (0x44A1389A)

                
                    m_Norm = 
                        X = 4.721337 (0x40971531)
                        Y = -0.500000 (0xBF000000)
                        Z = 0.866025 (0x3F5DB3D7)

                    m_Dist = -1543.033203 (0xC4C0E110)

                
                    m_Norm = 
                        X = 0.000000 (0x00000000)
                        Y = 4.411474 (0x408D2ACC)
                        Z = 3.701666 (0x406CE81A)

                    m_Dist = -1316.509521 (0xC4A4904E)

                
                    m_Norm = 
                        X = 0.000000 (0x00000000)
                        Y = -5.411474 (0xC0AD2ACC)
                        Z = -1.969615 (0xBFFC1C5C)

                    m_Dist = 1063.245117 (0x4484E7D8)

                
                    m_Norm = 
                        X = 0.000000 (0x00000000)
                        Y = 0.003922 (0x3B808080)
                        Z = -0.006792 (0xBBDE9280)

                    m_Dist = 33.118683 (0x42047988)

                
                    m_Norm = 
                        X = 0.000000 (0x00000000)
                        Y = -1.003922 (0xBF808080)
                        Z = 1.738843 (0x3FDE926A)

                    m_Dist = -286.383087 (0xC38F3109)

                
                    m_Norm = 
                        X = 0.000000 (0x00000000)
                        Y = 0.000000 (0x00000000)
                        Z = 0.000000 (0x00000000)

                    m_Dist = 0.000000 (0x00000000)

                
                    m_Norm = 
                        X = 0.000000 (0x00000000)
                        Y = 0.000000 (0x00000000)
                        Z = 0.000000 (0x00000000)

                    m_Dist = 0.000000 (0x00000000)
 ...
            m_NumPlanes = 6 (0x00000006)


    pCinema = 0x01400438 -> 
        m_Active = true 
        m_DrawCurrentSpline = false
        m_DrawLines = false
        m_ValidCurrent = false
        m_CurrentPath = (error -100406 while analyzing _Tree<<CStrW,CCinemaPath>::iterator)
        m_Paths = (error -100500 while analyzing map<CStrW,CCinemaPath >)
        m_PathQueue = (error -100500 while analyzing list<CCinemaPath >)

    pSimulation2 = 0x013E4B50 -> 
        m = 0x013EA790 -> 
            m_SimContext = 
                m_ComponentManager = 0x013EA7A0 -> 
                    m_ScriptInterface = 
                        m = (error -100406 while analyzing auto_ptr<ScriptInterface_impl>)

                    m_SimContext = 0x013EA790 (see above)
                    m_CurrentComponent = 0 (0x00000000)
                    m_CurrentlyHotloading = false
                    m_ComponentTypesById = (error -100500 while analyzing map<int,CComponentManager::ComponentType >)
                    m_ComponentsByInterface = (error -100500 while analyzing vector<boost::unordered_map<size_t,IComponent *,boost::hash<size_t>,equal_to<size_t> > >)
                    m_ComponentsByTypeId = (error -100500 while analyzing map<int,map<size_t,IComponent * > >)
                    m_LocalMessageSubscriptions = (error -100500 while analyzing map<int,vector<int > >)
                    m_GlobalMessageSubscriptions = (error -100500 while analyzing map<int,vector<int > >)
                    m_ComponentTypeIdsByName = (error -100500 while analyzing map<string >,int >)
                    m_MessageTypeIdsByName = (error -100500 while analyzing map<string >,int >)
                    m_MessageTypeNamesById = (error -100500 while analyzing map<int,string > >)
                    m_InterfaceIdsByName = (error -100500 while analyzing map<string >,int >)
                    m_DestructionQueue = (error -100500 while analyzing vector<size_t >)
                    m_NextScriptComponentTypeId = 70 (0x00000046)
                    m_NextEntityId = 11 (0x0000000B)
                    m_NextLocalEntityId = 536870912 (0x20000000)
                    m_RNG = 
                        lcf = 
                            _x = 78606 (0x000000000001330E)



                m_UnitManager = 0x01430120 -> 
                    m_Units = (error -100500 while analyzing vector<CUnit * >)
                    m_ObjectManager = 0x014000A4 -> 
                        m_MeshManager = 0x0140005C -> 
                            m_MeshMap = 
                                table_ = 
                                    
                                        
                                            buckets_ = 0x00000000
                                            bucket_count_ = 11 (0x0000000B)
                                            allocators_ = 
                                                
                                                    (error -100500 while analyzing )
                                                    (error -100500 while analyzing )



                                        
                                            current_ = false
                                            funcs_ = [2] { { data_ = { buf = [1] { [8] { 0, 0, 0, 0, 0, 0, 0, 0 } }, align_ = 
                                                            t0 = [8] { 0, 0, 0, (too much output; skipping to next top-level symbol),  }
                                                            t1 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t2 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t3 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t4 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t5 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t6 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t7 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t8 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t9 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t10 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t11 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t12 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t13 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t14 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t15 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t16 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t17 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t18 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t19 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t20 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t21 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t22 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t23 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
 } }, { data_ = { buf = [1] { [8] { 0, 0, 0, 0, 0, 0, 0, 0 } }, align_ = 
                                                            t0 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t1 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t2 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t3 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t4 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t5 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t6 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t7 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t8 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t9 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t10 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t11 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t12 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t13 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t14 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t15 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t16 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t17 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t18 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t19 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t20 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t21 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t22 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t23 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
 } } }

                                        size_ = 0 (0x00000000)
                                        mlf_ = 1.000000 (0x3F800000)
                                        cached_begin_bucket_ = 0x00000000
                                        max_load_ = 0 (0x00000000)



                            m_ColladaManager = 0x01400058 -> 
                                m = 0x01439218 -> 
                                    dll = 
                                        m_Name = 0x005F888C -> "Collada"
                                        m_Handle = 0x00000000

                                    set_logger = 0x00000014
                                    set_skeleton_definitions = 0x00000019
                                    convert_dae_to_pmd = 0x0000001A
                                    convert_dae_to_psa = 0x0000001C



                        m_SkeletonAnimManager = 0x01400080 -> 
                            m_Animations = 
                                table_ = 
                                    
                                        
                                            buckets_ = 0x00000000
                                            bucket_count_ = 11 (0x0000000B)
                                            allocators_ = 
                                                
                                                    (error -100500 while analyzing )
                                                    (error -100500 while analyzing )



                                        
                                            current_ = false
                                            funcs_ = [2] { { data_ = { buf = [1] { [8] { 0, 0, 0, 0, 0, 0, 0, 0 } }, align_ = 
                                                            t0 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t1 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t2 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t3 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t4 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t5 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t6 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t7 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t8 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t9 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t10 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t11 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t12 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t13 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t14 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t15 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t16 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t17 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t18 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t19 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t20 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t21 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t22 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t23 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
 } }, { data_ = { buf = [1] { [8] { 0, 0, 0, 0, 0, 0, 0, 0 } }, align_ = 
                                                            t0 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t1 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t2 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t3 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t4 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t5 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t6 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t7 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t8 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t9 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t10 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t11 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t12 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t13 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t14 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t15 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t16 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t17 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t18 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t19 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t20 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t21 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t22 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
                                                            t23 = [8] { 0, 0, 0, 0, 0, 0, 0, 0 }
 } } }

                                        size_ = 0 (0x00000000)
                                        mlf_ = 1.000000 (0x3F800000)
                                        cached_begin_bucket_ = 0x00000000
                                        max_load_ = 0 (0x00000000)



                            m_ColladaManager = 0x01400058 (see above)

                        m_Simulation = 0x013E4B50 (see above)
                        m_Objects = (error -100500 while analyzing map<CObjectManager::ObjectKey,CObjectEntry * >)
                        m_ObjectBases = (error -100500 while analyzing map<CStrW,CObjectBase * >)


                m_Terrain = 0x0143BDD0 (see above)

            m_ComponentManager = 
                m_ScriptInterface = 
                    m = (error -100406 while analyzing auto_ptr<ScriptInterface_impl>)

                m_SimContext = 0x013EA790 (see above)
                m_CurrentComponent = 0 (0x00000000)
                m_CurrentlyHotloading = false
                m_ComponentTypesById = (error -100500 while analyzing map<int,CComponentManager::ComponentType >)
                m_ComponentsByInterface = (error -100500 while analyzing vector<boost::unordered_map<size_t,IComponent *,boost::hash<size_t>,equal_to<size_t> > >)
                m_ComponentsByTypeId = (error -100500 while analyzing map<int,map<size_t,IComponent * > >)
                m_LocalMessageSubscriptions = (error -100500 while analyzing map<int,vector<int > >)
                m_GlobalMessageSubscriptions = (error -100500 while analyzing map<int,vector<int > >)
                m_ComponentTypeIdsByName = (error -100500 while analyzing map<string >,int >)
                m_MessageTypeIdsByName = (error -100500 while analyzing map<string >,int >)
                m_MessageTypeNamesById = (error -100500 while analyzing map<int,string > >)
                m_InterfaceIdsByName = (error -100500 while analyzing map<string >,int >)
                m_DestructionQueue = (error -100500 while analyzing vector<size_t >)
                m_NextScriptComponentTypeId = 70 (0x00000046)
                m_NextEntityId = 11 (0x0000000B)
                m_NextLocalEntityId = 536870912 (0x20000000)
                m_RNG = 
                    lcf = 
                        _x = 78606 (0x000000000001330E)



            m_DeltaTime = 0 (0x0000000000000000)
            m_LastFrameOffset = 1.000000 (0x3F800000)
            m_StartupScript = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            m_MapSettings = 
                m_Val = 
                    px = 0x133D88D0 -> -281444620208296 (0xFFFF000711637758)
                    pn = 
                        pi_ = 0x133B21C8 -> 
                            use_count_ = 1 (0x00000001)
                            weak_count_ = 1 (0x00000001)




            m_LoadedScripts = (error -100500 while analyzing set<Path >)
            m_TurnNumber = 0 (0x00000000)
            m_EnableOOSLog = false


    pathnameXML = 
        path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
        separator = 2624

    packer = 
        m_writeBuffer = 
            m_capacity = 370872320 (0x161B1000)
            m_data = 
                px = 0x133B2848 (see above)
                pn = 
                    pi_ = 0x000A0427 -> 
                        use_count_ = (unavailable - internal error)

                        weak_count_ = (unavailable - internal error)




            m_size = 20211980 (0x0134690C)



AtlasMessage::fSaveMap (maphandlers.cpp:132)
    msg = 0x1339B518 -> 
        (AtlasMessage::IMessage)
        filename = 
            buf = 0x13283A88 -> "test2.pmp"
            length = 10 (0x0000000A)


    pathname = 
        path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
        separator = 2768

    writer = 
        (CMapIO)


AtlasMessage::fSaveMap_wrapper (maphandlers.cpp:123)
    msg = 0x1339B518 (see above)

BeginAtlas (gameloop.cpp:211)
    args = 0x0012FE04 -> 
        m_Args = (error -100500 while analyzing vector<pair<CStr8,CStr8> >)
        m_Arg0 = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = [8] { 0, 267, 23703, 267, 24, 0, 23718, 267 }


    dll = 0x784851C5 -> 
        m_Name = 0x83C3C959 -> (unavailable - internal error)

        m_Handle = 0xD233FFC8

    hooks = 
        override_gl_upload_caps = 0x01345728 -> 
        get_log_dir = 0x00000001
        bundle_logs = 0x00000000
        translate = 0x00516012 -> (CmdLineArgs::Has)
        translate_free = 0x01353BD8 -> 
        log = 0x00000008
        display_error = 0x00000000

    uiThread = 6869328 (0x0068D150)
    msgPasser = 
        (AtlasMessage::MessagePasser)
        m_Mutex = 
            m_Mutex = 0x00000000

        m_SemaphoreName = { (error -100500 while analyzing string >) }
        m_Semaphore = 0x7C910041 -> 2215624836 (0x840FC084)
        m_Queue = (error -100500 while analyzing queue<AtlasMessage::IMessage *,deque<AtlasMessage::IMessage * > >)
        m_Trace = (bool)0x20

    paths = 
        m_root = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 32752

        m_rdata = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 28032

        m_data = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 32672

        m_config = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 0

        m_cache = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 23912

        m_logs = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 47 ('/')


    last_activity = 1.24693e-303 (0x010B5D0000000001)
    recent_activity = false
    time = 7.36102e+223 (0x6E6974740070614D)
    ev = 
        ev = 
            type = 26 (0x1A)
            active = { type = 26 (0x1A), gain = 0 (0x00), state = 0 (0x00) }
            key = 
                type = 26 (0x1A)
                keysym = { sym = 31, unicode = 22360 (0x5758) }

            motion = { type = 26 (0x1A), x = 0 (0x0000), y = 31 (0x001F) }
            button = 
                type = 26 (0x1A)
                button = 0 (0x00)
                state = 0 (0x00)
                x = 31 (0x001F)
                y = 0 (0x0000)

            resize = { type = 26 (0x1A), w = 31 (0x0000001F), h = 20207448 (0x01345758) }
            expose = { type = 26 (0x1A) }
            quit = { type = 26 (0x1A) }
            user = { type = 26 (0x1A), code = 31 (0x0000001F), data1 = 0x01345758 }


    length = 0.000000 (0x00007367)
    last_time = 9.27 (0x40228A3D70A3D70A)
    name = (error -100500 while analyzing string >)
    sleepUntil = 7.36102e+223 (0x6E6974740070614D)

ATLAS_RunIfOnCmdLine (atlas.cpp:77)
    args = 0x0012FD4C -> 
        m_Args = (error -100500 while analyzing vector<pair<CStr8,CStr8> >)
        m_Arg0 = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = [8] { 47 ('/'), 0, 23728, 267, 0, 0, 23696, 267 }


    force = false

RunGameOrAtlas (main.cpp:437)
    argc = 2 (0x00000002)
    argv = 0x010B7FE8 -> 0x010B5CF0 -> "pyrogenesis.exe"
    args = 
        m_Args = (error -100500 while analyzing vector<pair<CStr8,CStr8> >)
        m_Arg0 = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 23728


    paths = 
        m_root = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 65068

        m_rdata = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 23703

        m_data = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 0

        m_config = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 0

        m_cache = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 65204

        m_logs = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 3240


    replay = 
        m_Stream = 0x7C9100C4 -> (error -100406 while analyzing basic_istream<char,char_traits<char> >)

    mod = 
        path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
        separator = 65128

    zip = 
        path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
        separator = 0

    paths = 
        m_root = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 65068

        m_rdata = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 23703

        m_data = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 0

        m_config = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 0

        m_cache = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 65204

        m_logs = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 3240


    builder = 
        m_VFS = 
            px = 0x00000000
            pn = 
                pi_ = 0x00000020


        m_Files = (error -100500 while analyzing vector<Path >)
        m_TempDir = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 7



main (main.cpp:511)
    argc = 2 (0x00000002)
    argv = 0x010B7FE8 (see above)

wmain (wseh.cpp:380)
    argc = 2 (0x00000002)
    argv = 0x010B5AD8 -> 0x010B5AE4 -> "pyrogenesis.exe"
    utf8_argv = (error -100500 while analyzing vector<char * >)
    ret = 6598816 (0x0064B0A0)
    utf8 = (error -100500 while analyzing string >)

__tmainCRTStartup (crtexe.c:583)
    nested = 3859516104 (0xE60B8AC8)

CallStartupWithinTryBlock (wseh.cpp:397)
    ret = 141340693 (0x086CB015)

RegisterWaitForInputIdle (:0)


errno = 0 (?)
OS error = 0 (no error code was set)

I can "Continue" past it, and it appears a second time, then the files is eventually saved and everything works, so it doesn't seem to be a serious problem in that sense. Should probably be fixed anyway though :)

#852 fixed JuBot units build up interrupts resources to Civ Centre James Baillie Martin Nissen
Description

JuBot is getting really good and quick. But while it's quick to build groups of various types, it's really bad to rally them away from the buildings. That sometimes leads to a blockade of resources coming in. See attached image.

#853 fixed JuBot builds new Civ Centres out of sight in Shroud-of-Darkness James Baillie Martin Nissen
Description

This one ain't seen before. JuBot places 62 new Civ Centres sites within minutes and on the same spot, near original. Happened after loosing everything besides 2 women and a horse unit, which was placed inside Shroud-of-Darkness from building site. There was no buildings or JuBot units left besides the 3.

Have a screenshot of game summary showing 63 enemy Civ Centres destroyed.

#855 fixed Unused files in windows installer? ben fabio
Description

I installed 0ad alpha 4 for Windows on a friend PC and noticed that it install some files which appears to be unused by the game. Some examples: avcodec-51.dll avformat-51.dll avutil-49.dll FColladaD.dll (debug version, but standard version is already included) mozjs-ps-debug.dll (ditto) msvc* (many versions) and possibly others.

Maybe something can be removed.

#856 fixed [PATCH] Serengeti tree bug fix Art Department Kephra Nurmi
Description

Serengeti map contains a tree owned by player 1.

#857 fixed [PATCH] Sahel Watering Holes - PlayerData / civilisation bug fix Art Department Kephra Nurmi
Description

Playerdata in Sahel Watering Holes claim 4 times "hele", while player 3 and 4 have "celt" units and building. This prevents the AI from building units and structures.

#858 fixed Remove old simulation code historic_bruno
Description

We have two simulation directories in the game's source code, simulation\ which contains the old simulation code and simulation2\ which is the new. Since we no longer use the old, it should be deleted from the project and possibly simulation2 should be refactored to simulation.

#859 fixed [PATCH] Control groups don't recognise promotions Philip Taylor
Description

When a unit gets promoted after collecting enough XP, it gets dropped from any control groups it was assigned to. Probably need to have EntityGroupsContainer do something a bit like EntitySelection.prototype.checkRenamedEntities does to update after entity renamings (though it might need a little refactoring so the same rename list is passed to both classes that need it).

#860 fixed Crash upon exiting the game Magne Djupvik
Description

Operating System : Debian GNU/Linux 6.0.1

Kernel : Linux 2.6.32-5-amd64 (x86_64) C

Library : GNU C Library version 2.11.2 (stable)

Default C Compiler: GNU C Compiler version 4.4.5 (Debian 4.4.5-8)

Processor : 4x Intel(R) Core(TM) i5 CPU 750 @ 2.67GHz

Memory : 2025MB (1445MB used)

OpenGL Renderer : GeForce GTS 250/PCI/SSE2

Resolution : 1920x1080 pixels

h_mgr.cpp(659): Function call failed: return value was -100022 (Invalid handle)
Function call failed: return value was -100022 (Invalid handle)
Location: h_mgr.cpp:659 (h_free)

Call stack:

(0x7013bd) ./pyrogenesis() [0x7013bd]
(0x6aa114) ./pyrogenesis() [0x6aa114]
(0x6aa816) ./pyrogenesis() [0x6aa816]
(0x6aa999) ./pyrogenesis() [0x6aa999]
(0x6d13a4) ./pyrogenesis() [0x6d13a4]
(0x6d3499) ./pyrogenesis() [0x6d3499]
(0x6d0b5d) ./pyrogenesis() [0x6d0b5d]
(0x6d0ddf) ./pyrogenesis() [0x6d0ddf]
(0x708303) ./pyrogenesis() [0x708303]
(0x513186) ./pyrogenesis() [0x513186]
(0x414df5) ./pyrogenesis() [0x414df5]
(0x415b13) ./pyrogenesis() [0x415b13]
(0x7f58d18efc4d) /lib/libc.so.6(__libc_start_main+0xfd) [0x7f58d18efc4d]
(0x4134c9) ./pyrogenesis() [0x4134c9]

errno = 0 (?)
OS error = ?


0x00007f58d197178d in nanosleep () at ../sysdeps/unix/syscall-template.S:82
82	../sysdeps/unix/syscall-template.S: Ingen slik fil eller filkatalog.
	in ../sysdeps/unix/syscall-template.S
(gdb) bt
#0  0x00007f58d197178d in nanosleep () at ../sysdeps/unix/syscall-template.S:82
#1  0x00007f58d1971600 in __sleep (seconds=<value optimized out>)
    at ../sysdeps/unix/sysv/linux/sleep.c:138
#2  0x0000000000705ad9 in udbg_launch_debugger ()
    at ../../../source/lib/sysdep/os/unix/udbg.cpp:76
#3  0x0000000000706b23 in try_gui_display_error (text=<value optimized out>, 
    manual_break=<value optimized out>, allow_suppress=true, no_continue=false)
    at ../../../source/lib/sysdep/os/unix/unix.cpp:173
#4  0x0000000000706c7c in sys_display_error (
    text=0x7f58cb61f000 L"Function call failed: return value was -100022 (Invalid handle)\r\nLocation: h_mgr.cpp:659 (h_free)\r\n\r\nCall stack:\r\n\r\n(0x7013bd) ./pyrogenesis() [0x7013bd]\n(0x6aa114) ./pyrogenesis() [0x6aa114]\n(0x6aa81"..., flags=<value optimized out>)
    at ../../../source/lib/sysdep/os/unix/unix.cpp:214
#5  0x00000000006aa82c in debug_DisplayError (
    description=<value optimized out>, flags=6, 
    lastFuncToSkip=<value optimized out>, pathname=<value optimized out>, 
    line=659, func=<value optimized out>, suppress=0xa0cf08, 
    context=<value optimized out>) at ../../../source/lib/debug.cpp:466
#6  0x00000000006aa999 in debug_OnError (err=-100022, suppress=0xa0cf08, 
    file=0x76c318 L"../../../source/lib/res/h_mgr.cpp", line=659, 
    func=0x76c8f6 "h_free") at ../../../source/lib/debug.cpp:541
#7  0x00000000006d13a4 in h_free (h=@0x7f5881fd7c10, type=0x9fee60)
---Type <return> to continue, or q <return> to quit---
    at ../../../source/lib/res/h_mgr.cpp:659
#8  0x00000000006d3499 in GLCursor::destroy (c=0x7f5881fd7c00)
    at ../../../source/lib/res/graphics/cursor.cpp:110
#9  Cursor_dtor (c=0x7f5881fd7c00)
    at ../../../source/lib/res/graphics/cursor.cpp:178
#10 0x00000000006d0b5d in h_free_idx (idx=646, hd=0x7f5881fd7bd0)
    at ../../../source/lib/res/h_mgr.cpp:615
#11 0x00000000006d0ddf in Shutdown () at ../../../source/lib/res/h_mgr.cpp:840
#12 0x0000000000708303 in ModuleShutdown (initState=0xa07cb8, 
    shutdown=0x6d0d20 <Shutdown>) at ../../../source/lib/module_init.cpp:71
#13 0x0000000000513186 in Shutdown ()
    at ../../../source/ps/GameSetup/GameSetup.cpp:657
#14 0x0000000000414df5 in RunGameOrAtlas (argc=<value optimized out>, 
    argv=<value optimized out>) at ../../../source/main.cpp:493
#15 0x0000000000415b13 in main (argc=1, argv=0x7fff3d752d38)
    at ../../../source/main.cpp:511
Current language:  auto
The current source language is "auto; currently asm".
#863 fixed When changing player the old one is "Unassigned" rather than "JuBot" fabio
Description

If "You" are assigned to "Player 1" and then select "You" on "Player 2", "Player 1" is then reassigned to "Unassigned". Since "JuBot" is the default AI, "Player 1" should use it.

#864 fixed Upgrade Windows libraries Philip Taylor
Description

Currently the Windows build uses precompiled libraries, some of which were built with VC6, some with VC2005 (mozjs zlib1 nvtt jpeg-6b libpng zlib1 libcurl enet). Two problems:

  • Some are very old (as far back as 2004), so there are probably new versions with security fixes and bug fixes and performance improvements etc.
  • The VC2005 CRT requires sometimes-painful manifest stuff.

It might be nice to rebuild the libraries with their latest versions, and the latest compiler (VC2010 unless you're reading this in the future) which hopefully doesn't have the manifest problems.

Need to make sure that the libraries are still compatible with the oldest compiler version that we want the game to support (currently probably VC2008; upgrading everyone and everything to VC2010 would be nice but will not be trivial).

#865 fixed Stances Badmadblacksad
Description

I tried to implement stances recently. I give up for a few days as I've got boring school work to do..

I tried to match those requirements : http://www.wildfiregames.com/forum/index.php?showtopic=13725

so, I just attach a patch. If you have time, and a better way to do theses things, please comment.

#866 fixed Error during compiling on Mac OS X Jan Wassenberg Kieran P
Description

% make CONFIG=Release

Building mocks_real

make[1]: `../../../binaries/system/libmocks_real.a' is up to date.

Building network

make[1]: `../../../binaries/system/libnetwork.a' is up to date.

Building simulation2

Simulation2.cpp

In file included from ../../../libraries/spidermonkey-tip/include-unix/release/js/jspubtd.h:47,

from ../../../libraries/spidermonkey-tip/include-unix/release/js/jsapi.h:49,

from ../../../source/scriptinterface/ScriptTypes.h:41,

from ../../../source/scriptinterface/ScriptVal.h:21,

from ../../../source/simulation2/helpers/SimulationCommand.h:21,

from ../../../source/simulation2/Simulation2.h:23,

from ../../../source/simulation2/Simulation2.cpp:20:

../../../libraries/spidermonkey-tip/include-unix/release/js/jsval.h:154: warning: redundant redeclaration of ‘void js_static_assert(int*)’ in same scope

../../../libraries/spidermonkey-tip/include-unix/release/js/jsval.h:120: warning: previous declaration of ‘void js_static_assert(int*)’

../../../libraries/spidermonkey-tip/include-unix/release/js/jsval.h:168: warning: redundant redeclaration of ‘void js_static_assert(int*)’ in same scope

../../../libraries/spidermonkey-tip/include-unix/release/js/jsval.h:154: warning: previous declaration of ‘void js_static_assert(int*)’

In file included from ../../../source/ps/Filesystem.h:22,

from ../../../source/simulation2/Simulation2.cpp:34:

../../../source/lib/file/io/io.h: In function ‘Status io::Store(const OsPath&, const void*, size_t, const io::Parameters&, const CompletedHook&, const IssueHook&)’:

../../../source/lib/file/io/io.h:287: error: ‘O_DIRECT’ was not declared in this scope

../../../source/lib/file/io/io.h: In function ‘Status io::Load(const OsPath&, void*, size_t, const io::Parameters&, const CompletedHook&, const IssueHook&)’:

../../../source/lib/file/io/io.h:326: error: ‘O_DIRECT’ was not declared in this scope

make[1]: * [obj/simulation2_Release/Simulation2.o] Error 1

make: * [simulation2] Error 2

#867 fixed Shadows flicker michael
Description

I've noticed that the shadows tend to flicker now. This occurs on both my laptop and desktop. The laptop uses a mobile nvidia card and my desktop uses an ati Radeon card, so it does not appear to be graphics card-specific. Both use Windows 7 64-bit however. I notice no other graphical issues in either case, just the flickering shadows. When I say "flickering" I mean the shadows turn off and on in rapid succession. There is not a consistent interval to this either.

#868 fixed [PATCH] Move wxWidgets Unix config files to XDG basedir location leper Philip Taylor
Description

Atlas uses wxConfig (in source/tools/atlas/AtlasUI/Misc/DLLInterface.cpp) which is wxFileConfig on Unixes. By default that uses the config file "~/.Atlas Editor". It would be cleaner to store it alongside the game's own config files in probably ~/.config/0ad/config/atlas.ini (unless overridden by environment variables, as per basedir).

#869 fixed Handle or prevent invalid player IDs in scenarios historic_bruno
Description

It's possible to place units in Atlas for up to 8 players, but if the number of players is changed (either by manually editing the XML or with the player editor) then some units may have invalid player IDs. This causes errors when the scenario is loaded. Part of the problem can be addressed in Atlas itself, perhaps not saving units that are not assigned to a valid player. Or the player can be notified with a message "Player X has units assigned which will be lost. Continue?" It can also be solved by the map reader, e.g. not adding entities that have invalid player IDs.

Otherwise the game logic fails unpredictably.

#870 fixed Mac OS X binary on http://wildfiregames.com/0ad/ Raymond
Description

There are currently a Mac OS X build of 0ad alpha 5 on: http://ciderhouse.opal.ne.jp/wp/english/zeroad and http://mac.softpedia.com/get/Games/0-A-D.shtml available (source: http://www.wildfiregames.com/forum/index.php?showtopic=14764)

Please copy this link(s) to: http://trac.wildfiregames.com/wiki/LatestReleaseMac

#871 fixed upgrade Trac philip Raymond
Description

Currently there is Trac 1.0.1 installed.

#872 fixed [PATCH] Display more info for training units brian Petr Kovar
Description

This patch displays more information in tooltip for units that is possible to train.

Show additionaly those traits:

  • Armour
  • Attack
  • Health
  • Speed

I think it could be useful (especialy for new players) to have more information about each unit you can train.

#873 fixed [PATCH] Population Bonus on new line Petr Kovar
Description

In construction tooltip is not population bonus on new line as all others attributes everywhere else. This patch fix it.

#874 fixed Make player settings clearer for Atlas RMS Philip Taylor
Description

Currently the "Random map" part of the Map section in Atlas doesn't indicate how to control the number of players (and their civs etc) that will be used when generating the map, and it's unintuitive that you have to switch to the Player section and edit the current map's settings to control it.

Maybe it would be sufficient for the "Random map" area to have a "Edit players" button that simply switches to the Player section (like the toolbar button) so people might be able to figure out they're linked, or some descriptive text, or something like that.

#875 fixed Out of memory errors should work nicer historic_bruno Kieran P
Description

See http://www.wildfiregames.com/forum/index.php?showtopic=14859

We should show them a warning in game about out of memory, not just in the logs.

#876 fixed [PATCH] Make CInput caret more visible kingadami Kenny Long
Description

Currently the caret (data entry point) for CInput is a small line that is drawn under the character position to the right of the current insert point. A flashing vertical line would be ideal and is standard practice. At a minimum we need to thicken up the line or do something to make it more visible.

This becomes more important as we start to use CInput for things like in game messaging. The blinking cursor would provide an indication that the input area is active and make it clear where you are in the text box.

#878 fixed Garrisoned prop point error on Iberian civil centre Art Department historic_bruno
Description

To reproduce, play any map with an Iberian civil centre and delete or destroy it. You get the following error:

ERROR: Failed to find matching prop point called "garrisoned" in model "art/meshes/structural/iber_civic_centre.dae" for actor "civil_centre"

Edit: Also occurs when garrisoning units in the civil centre.

#879 fixed Disable FoW for AI players Philip Taylor
Description

r9657 made UnitAI take account of FoW and refuse to move to targets unless they're visible. The AI players cheat and ignore FoW (to avoid a load of extra complexity and pain), but now their units will probably refuse orders and cause confusion if the AI decides to attack a hidden enemy. Things should be changed so the whole map is always revealed (from the perspective of GetLosVisibility at least) to AI players.

#880 fixed [PATCH] Fix unit selection cheat historic_bruno
Description

As reported on the forum, it's possible to add enemy units to a selection of your own units, and thus control them (make them build things for you, attack themselves, etc.)

This patch adds two checks to prevent this: one is in the GUI so it's not actually possible to add enemy units to your selection, but this is not foolproof. The other check is in the simulation code (Commands.js), which filters out the list of selected entities according to the player's ownership. The patch also tests the state of the "Control all units" dev command, so it's still possible to use that for testing.

#882 fixed Test failure fabio
Description

With current r9713 on Ubuntu 11.04:

Running 251 tests........................................................................ERROR: JavaScript error: simulation/components/UnitAI.js line 1413
TypeError: cmpOwnership is null
  (1)@simulation/components/UnitAI.js:1413
  TestFormationExiting(0)@simulation/components/tests/test_UnitAI.js:81
  ()@simulation/components/tests/test_UnitAI.js:133

In TestComponentScripts::test_scripts:
../../../source/pch/test/../../../source/simulation2/components/tests/test_scripts.h:44: Error: Test failed: L"Running script simulation/components/tests/test_UnitAI.js"
../../../source/pch/test/../../../source/simulation2/components/tests/test_scripts.h:44: Error: Assertion failed: scriptInterface.LoadScript(pathname, wcontent)
..................................................................................................................................................................................
Failed 1 of 251 tests
Success rate: 99%
#883 fixed Scenarios - missing template errors Art Department historic_bruno
Description

Think this is all, but might as well do a regexp search too.

Acropolis:

ERROR: Failed to find file: "simulation/templates/units/hele_super_ranged_polis.xml"
ERROR: Failed to find file: "simulation/templates/other/thebes_sacred_band_hoplitai.xml"

Miletus:

ERROR: Failed to find file: "simulation/templates/other/sparta_hellenistic_phalangitai.xml"
ERROR: Failed to find file: "simulation/templates/other/thebes_sacred_band_hoplitai.xml"

Necropolis:

ERROR: Failed to find file: "simulation/templates/other/thebes_sacred_band_hoplitai.xml"

Saharan Oases:

ERROR: Failed to find file: "simulation/templates/other/thebes_sacred_band_hoplitai.xml"

The Massacre of Delphi:

ERROR: Failed to find file: "simulation/templates/other/thebes_sacred_band_hoplitai.xml"
#885 fixed [PATCH] GUI code improvement kromxp
Description

--The problem--

The gui code (source/gui) uses many variables linked with js and the xml reader (I suppose), these variables are added using AddSetting(type, stringy_name). Later many of this variables are getted/setted using GUI<type>::SetSetting and GUI<type>::GetSetting

These getters and setters was searching on a std::map each time. Using a profiler (gprof) on my computer, these appears on the top, taking > 7% of the running time. Running the game for around 1 minute would generate ~20 millions calls to these functions, this is because many of this calls was done each loop when redrawing the screen.

--Suggested solution--

When creating the new types, the old code using a dynamically allocated variable. With the new changes it can use member variables of the calling class.

Then, because the values now are stored in member variables, almost all the parts that was using the old code to find the values now just get the value of the member variable which is an order of magnitude faster than searching a map.

In case the variables are "Setted", care has been taken to generate the set events so other parts of the code might receive it, just like it was done before.

After applying the changes, the numbers of calls to std::map::find reduced drastically (some thousands after couple of minutes), and those are mostly coming from js code (which should be the correct way in this case). Now takes less than 0.1% of the running time.

#886 fixed Prop point position within static Collada meshes do not get exported or interpreted correctly by the game. historic_bruno michael
Description

Prop points get moved and pitched 90 degrees when exported from Max to Collada and into the Game. Not sure if this is an exporter issue or a game engine issue where the game does not interpret the Collada data correctly.

#888 fixed AI speed has decreased James Baillie Kieran P
Description

The AI is slower in Alpha 6 than it was in the previous release. We need to really optimize this.

One AI on a map is unbearably slow as it progresses. The game should be able to easily cope with 8 AI (standard "big" game).

Work out ways to increase the AI speed and implement them.

#889 fixed [ATLAS] Map save / load rework historic_bruno brian
Description

We need to make the map saving/loading more mod friendly (per Philip's request). This means Atlas presents maps as files within mods, not arbitrary paths on the user's system. File extensions should be abstracted away, overwriting existing files should be handled nicely, etc.

Part of #1943.

#891 fixed Animals can attack buildings Erik Johansson
Description

Some animals are meant to be aggressive and attack the players units, that works fine as far as I can tell. However, at the moment they also attack buildings, something they shouldn't :) Perhaps it's something that's difficult to do, in that case it might benefit from being done at the same time that most cavalry/infantry units will be stopped from attacking buildings. Either way, the easiest way to limit it (especially since there is/might be edge cases like the Iberian Champion Javelinists which are cavalry units, but can attack buildings) is to add a new tag in the XMLs? Something like <CanAttackBuildings />?

#892 fixed Add paths to random maps historic_bruno historic_bruno
Description

One thing missing from the rmgen API is the ability to place paths. Paths are conceptually a line connecting two points, with some parametric variation in curviness. They can be used for roads, rivers, and many other things. The current plan for implementation is an area placer called PathPlacer which can be used in place of clumps.

An example of how this might look on the Cantabrian Highlands map: http://imgur.com/gIpf0

#893 fixed Unit spawning should respect passability class historic_bruno historic_bruno
Description

Unit spawning is broken because it only considers unit obstructions, meaning both trained and ungarrisoned units can be spawned on terrain that violates their passability class. This is one of the causes of "land ships", #771 and #818. I'm working on a fix for #804 which should also fix this (using the PassabilityClass defined in pathfinder.xml).

A few considerations:

  • The current behavior is bad, when spawning fails it just places the unit in the middle of the building which in the case of docks can expose a subtlety of the pathfinder: units on impassable border tiles (as between land and water) can move to other impassable tiles but not actually cross the boundary - meaning they get stuck as land ships if they move onto land.
  • Expand the search outward when spawning units, boats are large and docks have limited space to spawn units.
  • If a unit fails to spawn after training, it could be left blocking the training queue until it finds space or is cancelled. This will require some changes to the queue design and notification of the user.
  • If a unit fails to ungarrison, it could be left garrisoned unless the ejection is forced (e.g. a unit changes ownership while garrisoned)
#897 fixed javascript common api lexa
Description

In data/mods/public/simulation/ai/base.js

There seem to be an error at line 90:

this.OnUpdate();

Should be

this.OnUpdate(state);

#898 fixed Multiplayer game crashes in lobby when selecting text Kenny Long Luke Martinez
Description

Selecting text with the mouse in the lobby (or when selecting a name) crashes the game.

Reproduced on: Windows 7, Fedora.

#899 fixed snd_mgr causes crash at exit and during game historic_bruno
Description

OS: WinXP

Build: [9845] release or debug in VS2008 express


I can reproduce the first error by simply exiting the game:

Function call failed: return value was -100022 (Invalid handle)
Location: h_mgr.cpp:763 (h_force_free)

Call stack:

h_force_free (h_mgr.cpp:763)
    h = 42949673666 (0x0000000A000002C2)
    type = 0x00643298 -> 
        init = 0x00402CE0 -> (UniqueRangeDeleterNone)
        reload = 0x0041BC60 -> (SndData_reload)
        dtor = 0x0041AC60 -> (SndData_dtor)
        validate = 0x00419270 -> (SndData_validate)
        to_string = 0x00418510 -> (SndData_to_string)
        user_size = 24 (0x00000018)
        name = 0x005E6BF0 -> "SndData"


hsd_list_free_all (snd_mgr.cpp:861)

al_shutdown (snd_mgr.cpp:650)

Shutdown (gamesetup.cpp:664)
    __formal = 0 (0x00000000)
    LINE_624_ = 
        m_t0 = 7.21416e-307 (0x00603608402BC9C3)
        m_description = 0x005BA13D -> [8] { 50307, 32788, 52285, 25875, 0, 5493, 42125, 36 ('$') }

    LINE_629_ = 
        m_t0 = 7.21416e-307 (0x00603608402BC9C3)
        m_description = 0x005BA13D (see above)

    LINE_634_ = 
        m_t0 = 7.21416e-307 (0x00603608402BC9C3)
        m_description = 0x005BA13D (see above)

    LINE_641_ = 
        m_t0 = 7.21416e-307 (0x00603608402BC9C3)
        m_description = 0x005BA13D (see above)

    LINE_647_ = 
        m_t0 = 7.21416e-307 (0x00603608402BC9C3)
        m_description = 0x005BA13D (see above)

    LINE_651_ = 
        m_t0 = 7.21416e-307 (0x00603608402BC9C3)
        m_description = 0x005BA13D (see above)

    LINE_655_ = 
        m_t0 = 7.21416e-307 (0x00603608402BC9C3)
        m_description = 0x005BA13D (see above)

    LINE_661_ = 
        m_t0 = 7.21416e-307 (0x00603608402BC9C3)
        m_description = 0x005BA13D (see above)

    LINE_674_ = 
        m_t0 = 7.21416e-307 (0x00603608402BC9C3)
        m_description = 0x005BA13D (see above)


RunGameOrAtlas (main.cpp:493)
    argc = 1 (0x00000001)
    argv = 0x093F5880 -> 0x093F5990 -> "C:\devel\0ad\ps\binaries\system\pyrogenesis.exe"
    args = 
        m_Args = (error -100500 while analyzing vector<pair<CStr8,CStr8> >)
        m_Arg0 = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 576


    paths = 
        m_root = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 65068

        m_rdata = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 22823

        m_data = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 0

        m_config = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 0

        m_cache = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 65204

        m_logs = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 331


    replay = 
        m_Stream = 0x00000001

    mod = 
        path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
        separator = 65128

    zip = 
        path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
        separator = 4

    paths = 
        m_root = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 65068

        m_rdata = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 22823

        m_data = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 0

        m_config = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 0

        m_cache = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 65204

        m_logs = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 331


    builder = 
        m_VFS = 
            px = 0x00000000
            pn = 
                pi_ = 0x00000002


        m_Files = (error -100500 while analyzing vector<Path >)
        m_TempDir = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 47 ('/')



main (main.cpp:511)
    argc = 1 (0x00000001)
    argv = 0x093F5880 (see above)

wmain (wseh.cpp:380)
    argc = 1 (0x00000001)
    argv = 0x093F5210 -> 0x093F5218 -> "C:\devel\0ad\ps\binaries\system\pyrogenesis.exe"
    utf8_argv = (error -100500 while analyzing vector<char * >)
    ret = 6009910 (0x005BB436)
    utf8 = (error -100500 while analyzing string >)

__tmainCRTStartup (crtexe.c:583)
    nested = 0 (0x00000000)

CallStartupWithinTryBlock (wseh.cpp:397)
    ret = 2766642449 (0xA4E79D11)

RegisterWaitForInputIdle (:0)


errno = 0 (No error reported here)
OS error = 2 (The system cannot find the file specified.)

The second error occurs during the game, seemingly when I do something to trigger a sound, like tasking units to move or gather a resource.

Function call failed: return value was -100010 (Logic error in code)
Location: snd_mgr.cpp:114 (al_ReportError)

Call stack:

al_ReportError (snd_mgr.cpp:114)
    err = 40964 (0x0000A004)
    caller = 0x005E6E10 -> "al_buf_free"
    line = 436 (0x000001B4)

al_buf_free (snd_mgr.cpp:436)
    al_buf = 854772512 (0x32F2CB20)

h_reload (h_mgr.cpp:715)
    vfs = 0x0064F2EC -> 
        px = 0x093F64D0 -> (IVFS)
        pn = 
            pi_ = 0x093F7210 -> 
                use_count_ = 4 (0x00000004)
                weak_count_ = 1 (0x00000001)



    pathname = 0xEBDE1DD3 -> 
        path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
        separator = (unavailable - internal error)


    ret = 21675767935008767 (0x004D01FEFFFFFFFF)
    key = 4010463037 (0xEF0ACF3D)
    h = 23358192525442160 (0x0052FC270012FC70)

ReloadChangedFiles (filesystem.cpp:87)
    notifications = (error -100500 while analyzing vector<DirWatchNotification >)
    pathname = 
        path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
        separator = 53005


Frame (main.cpp:296)
    need_update = (bool)0x44
    TimeSinceLastFrame = -0.000000 (0x80000000)
    need_render = (bool)0x3E
    down = [3] { -0.866025 (0xBF5DB3D7), -0.500000 (0xBF000000), 0.000000 (0x0012FEB8) }

RunGameOrAtlas (main.cpp:492)
    argc = 1 (0x00000001)
    argv = 0x093F5880 -> 0x093F5990 -> "C:\devel\0ad\ps\binaries\system\pyrogenesis.exe"
    args = 
        m_Args = (error -100500 while analyzing vector<pair<CStr8,CStr8> >)
        m_Arg0 = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 576


    paths = 
        m_root = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 65068

        m_rdata = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 22823

        m_data = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 0

        m_config = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 0

        m_cache = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 65204

        m_logs = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 53133


    replay = 
        m_Stream = 0x00000001

    mod = 
        path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
        separator = 65128

    zip = 
        path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
        separator = 4

    paths = 
        m_root = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 65068

        m_rdata = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 22823

        m_data = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 0

        m_config = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 0

        m_cache = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 65204

        m_logs = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 53133


    builder = 
        m_VFS = 
            px = 0x00000000
            pn = 
                pi_ = 0x00000002


        m_Files = (error -100500 while analyzing vector<Path >)
        m_TempDir = 
            path = (error -100500 while analyzing basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 47 ('/')



main (main.cpp:511)
    argc = 1 (0x00000001)
    argv = 0x093F5880 (see above)

wmain (wseh.cpp:380)
    argc = 1 (0x00000001)
    argv = 0x093F5210 -> 0x093F5218 -> "C:\devel\0ad\ps\binaries\system\pyrogenesis.exe"
    utf8_argv = (error -100500 while analyzing vector<char * >)
    ret = 6009910 (0x005BB436)
    utf8 = (error -100500 while analyzing string >)

__tmainCRTStartup (crtexe.c:583)
    nested = 0 (0x00000000)

CallStartupWithinTryBlock (wseh.cpp:397)
    ret = 1606451003 (0x5FC07F3B)

RegisterWaitForInputIdle (:0)


errno = 0 (No error reported here)
OS error = 2 (The system cannot find the file specified.)
#901 fixed Troubleshoot Atlas camera lag historic_bruno
Description

Lately I notice the camera movement in Atlas is very laggy, the screen will freeze for roughly 1s and suddenly it has jumped across the map. I'm not sure if everyone experiences this, but mentioning it in IRC shows I'm not alone. Also it occurs on a fairly high spec computer: Win 7 64-bit, Intel Sandy Bridge i7-2600k, 8GB RAM, etc. Camera movement in Atlas should be very smooth and I haven't noticed an issue like this during games.

#902 fixed Allow setting rally points while constructing buildings Josh Raymond
Description

It is possible to set waypoints for construction buildings (different types of barracks) while this buildings are in construction? This is also possible in other real-time strategy games like StarCraft II.

#903 fixed [PATCH] Premake4 makefile dependency tracking broken for PCH Yves Philip Taylor
Description
  • Run make scriptinterface
  • Edit a file like lib/status.h and add #error 1
  • Run make scriptinterface
  • It doesn't try rebuilding anything at all

It ought to rebuild everything and hit the error. Looks like dependencies of the .gch file are being ignored entirely and not triggering rebuilds.

#905 fixed [PATCH] Improvement to bones' skinning gruby
Description

Bones' skinning can be improved by SSE for example.

#906 fixed [PATCH] Position cursor at end of line when browsing console history Ross Bearman
Description

After a request from vtsj on IRC, I've patched CConsole to position the cursor at the end of the line when browsing up or down through history.

Currently if you type something and then press up or dow it will show all entries that start with that string; however if the cursor is then moved to the end of the line the next search up or down will search for that entire string. Therefore in order to implement the positioning of the cursor at the end of the line, the prefix search would have to be removed.

Common shells (Windows cmd, bash and others) don't use this kind of prefix searching, although zsh implements a separate functionality for searching through history.

After a short discussion with Phillip on IRC I decided to submit this patch and allow the developers to decide whether it's more intuitive/useful to have the cursor at the end of the line or the prefix searching.

#907 fixed [PATCH] Wrong window position on Windows with taskbar on top vts
Description

On Windows, if the taskbar is at the top of the screen, windows spawned at (0,0) will slide under the taskbar and hide the min/max/X controls. This small patch first queries for the usable desktop area and spawns the window relative to that instead.

#908 fixed CCmpVision's AlwaysVisible is broken philip vts
Description

For the rally points, it is necessary to be able to render their marker flags inside the SoD. This can be specified by setting the AlwaysVisible property of the Vision component to true. However, this currently has no effect, and entities with this property remain invisible in the SoD.

To reproduce:

  • Edit templates/special/actor.xml and edit the AlwaysVisible property to true.
  • Observe that no actors are visible in the SoD.

After a discussion with Philip on IRC it became clear that this is a feature that didn't get implemented when the LOS rendering code was rewritten, and that it will probably involve non-trivial changes to rendering code.

#909 fixed Assertion failure on allocating 0 bytes from pool when rendering terrain iznogood
Description

Hi. When I start the game I can see the menu, but when I try to start to play on a map I got an error at the end of the loading.

#910 fixed Units disappear if ungarissoned too fast Deiz vts
Description

If several units are garrisoned inside a building and you ungarrison them all individually by clicking the unload button really fast, units are sometimes lost. The number of units that is garrisoned does not seem to matter, as I have observed it to happen even for 2 units.

To reproduce:

  • Start a new singleplayer game on Gallic Fields.
  • Select more than 2 of the starting units and garrison them in the Palisade Fort closest to the camera.
  • Select the palisade fort, set a rally point, and keep hitting the single-unit unload button as fast as you can.
  • Observe how fewer units exit the fort than were originally garrisoned.
#911 fixed Enemy goats count towards the victory condition Ross Bearman
Description

Enemy goats (possisbly all herd animals) must be killed and harvested in order to win. However it's impossible to harvest them after killing them as they "belong" to the enemy.

Suggested fix: Remove herd animals from the win condition. Allow players to harvest eachothers herd animals. Fix death animation for enemy herd animals.

#913 fixed [PATCH] Crash starting game on Oasis II Michael D. Hafer vts
Description

Starting a game on Oasis II crashes the game. An PSERROR_File_InvalidType exception is thrown in ps/trunk/ps/FileIo.cpp at line 138, because the file size recorded in the the maps/scenarios/Oasis II.pmp file header does not add up to the actual file size.

Commit [9921] last updated the file to 659.456 bytes, but apparently the filesize recorded in the header did not get updated accordingly. This value should be the total file size minus the header size (which is 12) in little-endian order, so this can be fixed by setting bytes 8-12 to F4 0F 0A 00 (=659.444).

Assigned to Mythos_Ruler as he requested for this to be looked at on IRC. No patch attachment since this is a binary edit.

#914 fixed [PATCH] Fixed-angle/huge bounding boxes cause unintuitive selection behaviour vts vts
Description

To determine which units are to be highlighted/selected when the mouse is at a certain position, a ray is cast from the camera to the point on the terrain pointed to by the mouse, and this ray is checked for intersections with the bounding boxes of all the Selectable entities in the scene. If multiple objects' bounding boxes are intersected, the one where the ray passes the closest by its center wins.

However, the bounding boxes ignore the rotation of the models. This can cause the visual outline of the object to differ greatly from the bounding boxes used for hit testing, which causes unintuitive selection/highlight behaviour: typically buildings or trees are selected even though the mouse is nowhere near them. Some trees have massive bounding boxes, which does not help.

Also, this prevents the user from setting the a building's rally point at many points in the terrain, because seemingly unrelated objects will be highlighted instead.

The example screenshots below are also attached:

http://i.imgur.com/kmcaO.jpg

The red outline is the bounding box of the currently highlighted tree. Even though the mouse is halfway up the screen, some random tree is selected all the way down.

http://i.imgur.com/Ggl6d.jpg

Again, the red outline is the bounding box, the blue is the actual floorplan. Any 2D mouse location within the red outlines will cause the building to be highlighted. This makes it impossible to set the rally point near the top of the outline under the metal mine, even though that location would otherwise be perfectly valid.

#915 fixed Crash on game exit Roland Häder
Description

The game crashes at exit, see attached crash log for details.

#916 fixed [PATCH] Spaces in paths might break SpiderMonkey build ben Philip Taylor
Description

Spaces in paths might break the SpiderMonkey build with errors like

Can't open perl script "../build/autoconf/acoutput-fast.pl": No such file or directory
not updating unwritable cache ./config.cache
creating ./config.status
creating Makefile
sed: can't read ../Makefile.in: No such file or directory
...

Ought to test and maybe fix that.

#918 fixed Fix rendering of territories with holes vts Philip Taylor
Description

Consider territory assignments like:

00000000
01111110
01012130
01111110
00000000

where 0 is neutral. CCmpTerritoryManager::ComputeBoundaries will find the outer edge of the 1s, but not the inner edge around the 0 hole or the 2 hole. (The 3 isn't a hole since the outer edge already surrounds it.)

Might need to add a 'already processed' flag to tiles instead of setting them to 0, and then add a 'already has territory boundary at the +j edge of this tile' flag which is set when walking the boundary, then if we find a tile with different owner to its -j neighbour and that neighbour isn't neutral and doesn't have the edge flag then start a new walk around that edge to produce the inner boundary (with inverted direction). Or something like that.

#920 fixed Crash on exit: Handle tag mismatch (stale reference?) historic_bruno
Description

OS: Win 7 Pro 64-bit
Version: [9967] release build (32-bit), compiled with VC 2010 express

First time I've seen this type of error on this computer and not sure that I can reproduce it :/ Hope there's some info here that helps.


Function call failed: return value was -120003 (Handle tag mismatch (stale reference?))
Location: h_mgr.cpp:235 (h_data_tag)

Call stack:

h_data_tag_type (h_mgr.cpp:247)
    h = 600834437 (0x0000000023D00185)
    type = 0x002D6060 -> 
        init = 0x0021D9D0 -> (OglTex_init)
        reload = 0x0021DA20 -> (OglTex_reload)
        dtor = 0x0021C820 -> (OglTex_dtor)
        validate = 0x0021D2A0 -> (OglTex_validate)
        to_string = 0x0021C860 -> (OglTex_to_string)
        user_size = 64 (0x00000040)
        name = 0x0029CFB8 -> "OglTex"

    hd = (unavailable)

h_free (h_mgr.cpp:583)
    h = 0x03A0F280 -> 60879008 (0x0000000003A0F0A0)
    type = 0x002D6060 (see above)
    hd = 0x03A0F280 (see above)

ogl_tex_free (ogl_tex.cpp:557)
    ht = 0x03A10E3C -> 0 (0x0000000000000000)

UniFont_dtor (unifont.cpp:70)
    f = 0x03A10E3C (see above)

Shutdown (h_mgr.cpp:747)

ModuleShutdown (module_init.cpp:72)
    initState = 0x002DA8CC -> 4294867266 (0xFFFE7942)
    shutdown = 0x0021FE60 -> (Shutdown)

h_mgr_shutdown (h_mgr.cpp:761)

Shutdown (gamesetup.cpp:672)
    __formal = 0 (0x00000000)
    LINE_624_ = 
        m_t0 = 56.3885 (0x404C31BA344CB175)
        m_description = 0x00280078 -> "resource modules"

    LINE_629_ = 
        m_t0 = 56.3885 (0x404C31BA344CB175)
        m_description = 0x00280078 (see above)

    LINE_634_ = 
        m_t0 = 56.3885 (0x404C31BA344CB175)
        m_description = 0x00280078 (see above)

    LINE_641_ = 
        m_t0 = 56.3885 (0x404C31BA344CB175)
        m_description = 0x00280078 (see above)

    LINE_647_ = 
        m_t0 = 56.3885 (0x404C31BA344CB175)
        m_description = 0x00280078 (see above)

    LINE_651_ = 
        m_t0 = 56.3885 (0x404C31BA344CB175)
        m_description = 0x00280078 (see above)

    LINE_655_ = 
        m_t0 = 56.3885 (0x404C31BA344CB175)
        m_description = 0x00280078 (see above)

    LINE_661_ = 
        m_t0 = 56.3885 (0x404C31BA344CB175)
        m_description = 0x00280078 (see above)

    LINE_674_ = 
        m_t0 = 56.3885 (0x404C31BA344CB175)
        m_description = 0x00280078 (see above)


RunGameOrAtlas (main.cpp:493)
    argc = 2 (0x00000002)
    argv = (unavailable)
    args = 
        m_Args = (unsupported vector<pair<CStr8,CStr8> >)
        m_Arg0 = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 92 ('\')


    paths = 
        m_root = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 0

        m_rdata = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 8

        m_data = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 62776

        m_config = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 10072

        m_cache = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 14458

        m_logs = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 10066


    replay = 
        m_Stream = 0x00000000

    mod = 
        path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
        separator = 57914

    zip = 
        path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
        separator = 23

    paths = 
        m_root = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 0

        m_rdata = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 8

        m_data = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 62776

        m_config = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 10072

        m_cache = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 14458

        m_logs = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 10066


    builder = 
        m_VFS = 
            px = 0x020A2750 -> (IVFS)
            pn = 
                pi_ = 0x002A0035 -> 
                    use_count_ = 1811939328 (0x6C000000)
                    weak_count_ = 1979737344 (0x76006500)



        m_Files = (unsupported vector<Path >)
        m_TempDir = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 335



main (main.cpp:511)
    argc = 2 (0x00000002)
    argv = 0x020A7B38 -> 0x01FC83F0 -> "C:\Users\Ben\devel\ps\binaries\system\pyrogenesis.exe"

wmain (wseh.cpp:380)
    argc = 2 (0x00000002)
    argv = 0x01FC7A00 -> 0x01FC7A0C -> "C:\Users\Ben\devel\ps\binaries\system\pyrogenesis.exe"
    utf8_argv = (unsupported vector<char * >)
    ret = 33323520 (0x01FC7A00)
    utf8 = (unsupported basic_string<char,char_traits<char> >)

CallStartupWithinTryBlock (wseh.cpp:397)
    ret = 0 (0x00000000)

RtlInitializeExceptionChain (:0)

RtlInitializeExceptionChain (:0)


errno = 0 (No error reported here)
OS error = 487 (Attempt to access invalid address.)
#921 fixed [PATCH] Improve UI notification for failing attempts to build historic_bruno historic_bruno
Description

There are now a number of restrictions on where a building can be placed and possible limitations on how many can be built, in addition to its cost. Currently we don't distinguish between all these cases, a failure is indicated by a red-colored placement preview or sometimes a UI notification. To make this clearer, the following are proposed:

  • Add return values that indicate the failing restriction(s) to at least the following functions: BuildRestrictions.CheckPlacement, BuildLimits.AllowedToBuild, GuiInterface.SetBuildingPlacementPreview CCmpObstruction.CheckFoundation, CCmpPathfinder.CheckBuildingPlacement, CCmpPathfinder.CheckUnitPlacement. Some examples:
    • Building site obstructed
    • Building site on invalid terrain (must be placed on [land, shore])
    • Building site outside world boundaries
    • Building site not allowed in [fog of war, shroud of darkness]
    • Building site not allowed in this territory (must be placed on [own, neutral, enemy, ally] territory)
    • Dock must be built facing into water(?)
    • [Building name] too close to an existing [building name] (must be placed at least [X] units away).
  • Show a tooltip like the trade setup tooltip that follows the cursor and gives a reason why the building can't be placed in the current location.
  • Numeric build limits don't rely on placement, so the user should be prevented from selecting the building in the UI. Maybe the icon can be greyed out, but the user can still click on it to get the exact message ("Limit of X reached for this building") and/or it could be indicated in the tooltip.
  • Similarly, if the user has insufficient resources, they shouldn't be able to try placing it. Instead we could change the icon tooltip to list in red the lacking resources (I've seen this in some RTS games and it's very clear), if they click the icon anyway it will tell them how much of each resource they need.
  • I think we'll want a similar system for technologies, where buildings with unsatisfied prerequisites can't be selected in the UI.
  • Of course all these restrictions must be checked not only by the UI (which is intended only to notify the user) but also within the simulation itself, to prevent cheats with modified UIs.
  • Some restrictions may be best indicated visually on the terrain, like minimum distance between civ centres or docks being restricted to shores.
#922 fixed Keep unit hitpoints percent unchanged when it promoted fcxSanya fcxSanya
Description

Currently when unit promoted it become full health. Health should be changed to the same percent as unit had before promotion. See discussion here: http://www.wildfiregames.com/forum/index.php?showtopic=1219&view=findpost&p=223855

#923 fixed Increase and balance stats for Carthaginian rank upgrades michael michael
Description

Each promoted citizen-soldier for Carthage needs new increased stats for each rank. Iberians, Greeks, and Celts all have these stat upgrades, but Carthage does not yet.

#924 fixed [PATCH] Fix Actor Editor build in Windows historic_bruno
Description

Actor Editor has never worked for me in Windows, but apparently it is still used. So I've tried fixing the manifest issues, based on the same "hacks" used in the game itself. I'm not sure it would work in a 64-bit build, but at least the 32-bit build works for me in Windows 7 64-bit (compiled with VC2010 Express).

#926 fixed Smooth Fog of War (FoW) Android GRRR
Description

do not let the fog of war be revealed jumpily, i mean do not let it go back tile by tile when a unit enters unexplored areas... rather make it draw back smoothly like in age of empires online: example

this would be a graphical feature only to make the game look fresh. no need to touch gameplay.

philip left a short comment on the issue in the forums.

#927 fixed [ATLAS] Increasing number of players is broken historic_bruno historic_bruno
Description

If you open a map in Atlas with e.g. 2 players, and increase that to 3 players, the PlayerManager component won't get updated because that only happens when a map is loaded. So PlayerManager and the player settings in Atlas are out of sync, which hasn't been a problem until lately. Now that we have territories and build limits, there will be warnings if you try to place a building for the newly created player (their ID doesn't exist) and even incorrect rendering of its territory borders.

A possible solution is to reload the map (at least run simulation init?) when the number of players is changed, which shouldn't happen too often. Or we can try to add some special logic to manually add/remove players, which seems like a hack.

Also I've noticed two related bugs that affect the Atlas UI:

  • When you load a map, the player dropdown on the object panel doesn't get updated to the correct number of players.
  • If you load a map and then increase the number of players, the default player data is not always loaded in the player panel. It seems like this worked in the past, maybe not.
#928 fixed [ATLAS] Invalid player ID warnings in actor viewer historic_bruno
Description

When you open actor viewer in Atlas, there are hundreds of warnings like these occurring in the background:

WARNING: GetPlayerByID: no player defined for id '0' (0)@simulation/components/PlayerManager.js:28

only they aren't rendered, so you don't notice them until returning to editor mode or checking the logs. There's no more call stack given, so it's likely some part of the engine is using PlayerManager when it shouldn't be.

#930 fixed [PATCH] Incremental update of pathfinder's passability grid Itms Sylvain Gadrat
Description

When there is changes of the terrain or passability obstructions on the map, the pathfinder has to update a tile based representation of the world. This grid of tiles is needed by the long pathfinder to compute speedily long range paths.

Currently, when the pathfinder need to update its grid, it recompute the full grid instead of taking care only about regions that are modified. It is a little waste of time.

Since the grid is easy to compute there is nothing worrying for now but it can become harmful when we will try to optimize the pathfinder. Optimizations will need to have a way to reprocess only modified tiles because it is basically done by precomputing more than the tile grid.

This ticket is related to some "TODOs" in the simulation code that can be found

  • in CCmpPathfinder::HandleMessage()
  • in CCmpPathfinder::UpdateGrid()
  • in CCmpObstructionManager::Rasterize()
#932 fixed Cast shadow onto water surface. wraitii Amish Coelho
Description

Currently shadows of objects next to water go right through and fall on the ground below the water. This makes objects that float on water(ships)seem unreal and as if they are floating on air, so to speak. It would be nice to have shadows cast on the surface of the water.

#934 fixed Remove Premake3 build scripts Kieran P
Description

Remove the old build scripts in favour of the Premake4 ones. We do not want to be supporting two build systems!

#935 fixed [PATCH] Use standard SDL in Windows (remove custom API) historic_bruno
Description

Via Philip in IRC (referring to #907):

It might be best to just try retiring wsdl and switching to standard SDL,
which would hopefully handle this stuff automatically
...
It should be pretty straightforward to set up (disable CONFIG2_WSDL
and provide the necessary DLLs etc) - the tricky bit is just
testing that everything still works (cursors, fullscreen, multi-
monitor, Atlas, etc)

Relevant code is source\lib\sysdep\os\win\wsdl.cpp

#936 fixed Fish cause strange Dock placement behavior michael
Description

Fish allow the player to place a dock foundation, but do not allow the building to be constructed, so the units will continue trying to build the dock forever. Fish, via a vis dock placement, should have one of two behaviors:

-- The foundation can be placed and the fish are "destroyed."

or

-- Fish block foundation placement.

This is particularly a problem for the Carthaginian Naval Harbour, since its foundation footprint is so large.

#937 fixed Delete/Kill command no longer works michael
Description

error: gui/session/input.js line: 1098

#939 fixed Match Setup Screen Does Not Render Player Color Correctly michael
Description

In match setup screen, sometimes the custom player colors do not render the correct color. I believe they are defaulting to black or something. Select the Cycladic Archipelago IV or Peloponnese map to see this.

#941 fixed [PATCH] Experiment with camera FOV Philip Taylor
Description

Extracts from #glest IRC:

15:48 <@softcoder> Philip`, i mentioned this before, people don't like the camera view in 0ad
15:48 <@softcoder> if the camera 'felt more 3d' like in glest I think it would make a lot more people happy
15:50 <@softcoder> A number of people have mentioned to me (When i told them to look at 0ad) its isometric
15:51 < Philip`> softcoder: Maybe it's an issue of having a narrow FOV?
15:51 <@softcoder> i think outs is 45
15:51 < Philip`> Ours is 20 degrees, I believe
15:52  * Philip` has no idea why it's that, other than it being what someone picked about eight years ago and then nobody bothered changing it
15:53 < Swyter> FYI: BFME2 uses a 45º camera

Might be good to try changing CGameView::defaultFOV to see if it can make things look better. (Also, move it into the config file so it's easier to experiment.)

#944 fixed [ATLAS] Apply image to terrain / import heightmap historic_bruno
Description

Making realistic maps would be easier if we could overlay map textures on the terrain and paint elevation accordingly. We could also add an import heightmap feature, where an existing bitmap image gets interpreted as heightmap data.

http://www.wildfiregames.com/forum/index.php?showtopic=14959

#947 fixed [PATCH] Fix OS X app bundle Yves historic_bruno
Description

The new build system with Premake4 creates an app bundle for GCC and Xcode. It's incomplete, only generating the binary, and won't run properly. It seems all the game data and libraries should be copied into the bundle using the appropriate structure, which would be a nice official distribution method for OS X. It doesn't seem practical for SVN users because they want the structure of the SVN, not an app bundle. So perhaps the default compile on OS X should be a plain binary, but using a new flag an app bundle gets generated (once we work out the technical details).

Also worth investigating is how Xcode3 manages to compile and run an incomplete bundle (it works for me).

#948 fixed [PATCH] Add buttonSound attribute to buttons historic_bruno brian
Description

We want all buttons to sound the same. To avoid editing all the onPress functions scattered throughout, we should add an attribute that can reference the sound file. Ideally, this attribute would be included in the style so it would only have to be changed in one place.

It will probably involve adding another GUI property and making CButton detect it and do whatever PlaySound does.

#949 fixed Use the system's mouse sensitivity until you have implemented an options page. alexhultman
Description

You should use the same mouse sensitivity as the operating system. Why? Because people are familiar with their own mouse sensitivity settings from the operating system. You could just get the absolute mouse position and draw the game cursor from that. This should be fair enough until you implement the options page. I'm on Linux and the game runs great but I can't play with this low sensitivity. On Windows the game seems to use another sensitivity.

#950 fixed Scenarios broken by territories Art Department historic_bruno
Description

Following is a list of scenarios that break with territories (isolated buildings are slowly destroyed):

  • Acropolis - scout towers (all players), Naos and Stoa (player 1)
  • Miletus - some walls extend outside the starting territory (player 1)
  • Necropolis: Naos and Stoa (player 1)
#951 fixed Make max population available to an AI Jonathan Waller
Description

The max population is useful for an AI to know when to stop building houses since they won't increase the limit any further. I have created a patch which adds a line to GuiInterface.js for this.

#953 fixed [PATCH] local.cfg adds keys instead of replacing them philip vts
Description

When defining custom keys in local.cfg, the keys appear to work in addition to the existing ones from default.cfg, rather than instead of them.

For instance. Specifying

hotkey.camera.left = Q, LeftArrow

in local.cfg causes the Q key to activate both camera.left and the existing camera.rotate.cw from default.cfg:

hotkey.camera.rotate.cw = "Ctrl+LeftArrow", "Ctrl+A", Q

The same is true for e.g. trying to change hotkey.console.toggle; the keys specified in local.cfg will work in addition to the ones from default.cfg, not instead of.

Also, using local.cfg to try and set the Escape key to certain commands does not work. hotkey.menu.toggle = Escape does not toggle the menu ingame when Escape is pressed, but the F10 key from default.cfg still does.

#954 fixed Icon needs be in higher resolution Art Department alexhultman
Description

Just a reminder. 256 x 256 should be enough.

EDIT: 128x128 icon committed.

An icon without the shadow should be better (as for OS X) see: http://www.wildfiregames.com/forum/index.php?showtopic=15902 Icon without shadow available at: http://www.wildfiregames.com/forum/index.php?showtopic=15902&st=0&p=237549&#entry237549

#955 fixed Please add alpha version also in main menu fabio
Description

Currently it only shows the svn revision. It will ease identification of game version.

Alpha version (along with svn revision) is alredy shown during gameplay.

#956 fixed In-Game music no longer plays brian michael
Description

Music no longer plays in the game. Greek peace track, Carthaginian peace track, etc. This has happened within the last day or two.

#957 fixed Test failure fabio
Description

On Ubuntu Linux using r10256:

Running 253 tests......................................................................ERROR: JavaScript error: simulation/components/GuiInterface.js line 63
TypeError: cmpPlayer.GetMaxPopulation is not a function
  ()@simulation/components/GuiInterface.js:63
  ()@simulation/components/tests/test_GuiInterface.js:123

In TestComponentScripts::test_scripts:
../../../source/pch/test/../../../source/simulation2/components/tests/test_scripts.h:44: Error: Test failed: L"Running script simulation/components/tests/test_GuiInterface.js"
../../../source/pch/test/../../../source/simulation2/components/tests/test_scripts.h:44: Error: Assertion failed: scriptInterface.LoadScript(pathname, wcontent)
......................................................................................................................................................................................
#958 fixed [PATCH] Allow building in fog of war, within player's territory historic_bruno historic_bruno
Description

A player's territory will always be explored (either visible or in FoW), so they should be allowed to build anywhere in that territory. CmpRangeManager::GetLosVisibility() can't be used to check FoW because it uses rendering concepts like RetainInFog that would break preview entities. The attached patch adds CmpRangeManager::GetLosState() which checks the internal LOS state and reveal all players flag, returning a value corresponding to explored, unexplored or visible. It also moves the visibility check into BuildRestrictions for consistency.

#959 fixed Simultaneous unit queuing for buildings historic_bruno
Description

If multiple of the same building are selected and a unit is trained, it will only queue in the first selected building. It would be more useful if the unit was queued in each of them simultaneously. I'm not sure how to handle this when multiple different buildings are selected (probably just hide the command panel buttons in that case since it's not clear which set should be displayed).

#960 fixed Add Latin Small Letter Schwa (ə) to fonts historic_bruno
Description

The native name of the Carthaginian infantry javelinists (Səḫīr Kidōn) references the small Latin schwa (U+0259 in IPA Extensions of the Unicode standard) which is not yet included in our fonts. I don't know how we usually handle this, should we add in all letters up to and including the schwa (we have a gap between U+0241 and U+1E00)? Need we include all the IPA Extensions for completeness (about 100 new characters)?

The characters are defined in charset.txt, all the fonts would need to be rebuilt (see the fontbuilder2 utility for details).

#961 fixed Music Manager stwf historic_bruno
Description

Currently the music code is a broken mess, full of hacks, and the GUI scripts are responsible for most of the logic. We need a music manager implemented in the engine, preferably with a worker thread so it's independent of the render loop. Maybe a reasonable level of abstraction is that of a simple media player:

  • Playlist/queue is created with track paths
  • Playlist can be played/stopped/paused
  • Fade when switching tracks
  • Play sequentially or randomly (default)
  • Optional looping
  • Gain setting

This task may require changes to snd_mgr as well, if it doesn't provide the functionality we need.

#963 fixed AI bot scripts - civic center trainingQueue lexa
Description

Between the alpha 7 and the svn versions, issues appeared with my AI bot, but it is not visible when you are a human.

Test case :

  • The game starts
  • The civic center trainingQueue starts empty, and make it build a woman
  • The trainingQueue has 1 entity and it builds it correctly
  • At the end, the entity is released but the trainingQueue still has 1 element

I have traced the element 0 in the queue and it has a progress property which is always 0 during the training of the unit, and it goes straight to a number close to 1 when the unit is released.

#964 fixed Crash during mission startup on Sis integrated card AlexanderR
Description

After starting match on any map game shows black space or glitches instead of textures and crashes sooner or later. Maybe this is caused by graphical driver without OpenGL support and therefore running in software emulation mode. Drivers are up to date, most DirectX games and many free (Lugaru, Warzone2100 and others) OpenGL-based run with low fps on my hardware, but very few crashes.

#965 fixed Allow media keys for changing volume in game alexhultman
Description

There is currently no way to change volume in game. You have to guess what volume to use, enter the game and test, leave the game and adjust, enter again and play. Media keys should be enabled to allow easy volume adjustment and control e.g. rhytmbox.

#966 fixed Incorrect Transparent Water Randering on core i3 HD 3000 Aritra Chakraborty
Description

On core i3 HD 3000 integrated graphics water does not render properly . Water rendered perfectly with alpha 5 and alpha 6 however alpha 7 water rendering error for better description see attached image . It shows part of the water of the tropical island map .

#969 fixed [PATCH] Territory support for the AI Jonathan Waller
Description

This patch gives the AI a map of the territories in the game.

The main issue with the patch is that territory data is regenerated each turn which is inefficient. I have tried looking at the DirtyID for the grid generated but it is always 0.

As historic_bruno mentioned build restrictions data needs to be added to the gamestate. Currently I don't think is is urgent since only docks and CCs are different and they need special handling already by an AI script.

There is a post on the forums here.

#971 fixed Sheep run away too fast for villagers to try to kill them Aritra Chakraborty
Description

Sheep reared for food run away to fast for villagers trying to kill them for food . (they should run at least at a speed less than wild animals ).

#972 fixed [PATCH] Pass events to AI Jonathan Waller
Description

An events array is created by AIInterface and AIProxy but isn't exposed by base.js. This patch just gives the array to the AI's.

#973 fixed [PATCH] Add naval / water map support to AIs mimo alexhultman
Description

The AI should build a dock, train a boat and then attack when it feels like it has a strong army.

#974 fixed JuBot should not be able to place non-civ center structures outside of its own territory alexhultman
Description

Currently JuBot is placing structures outside of its territory. You can place a civ center to capture new territory but often I see enemy structures that's not a civ center way out of territory.

#976 fixed Alpha 7 doesn't start in Windows Dionos
Description

In my case, the latest version won't run in Windows 7 32 bit (updated version). The version number is Alpha 7 (0ad-r10288-alpha-win32) and it is installed in the default directory. I tried completely uninstalling the previous version, restarting the system and running the executable as administrator.

When "pyrogenesis.exe" is opened, it seems to read on the harddisc, but nothing happens. After less than half a minute the HD is no longer accessed and the game remains visible in task manager using more than 90% CPU. It can only be stopped by ending the process. No logs are generated.

The debug output is in the attachment.

#977 fixed Random map generation on different platforms can cause multiplayer OOS error historic_bruno
Description

With certain combinations of systems, there are multiplayer out-of-sync errors when playing random maps. It appears to be a difference in floating point precision, some entity positions differ by 0.00001 or 0.00002 units.

One such configuration:

  • Host: Ubuntu 11.04 64-bit, Intel Core i7-2600K (SSE2), custom build GCC (Release)
  • Client: Windows XP 32-bit, Athlon XP 2000+ (non-SSE2), custom build VC2010 Express (Release)

OOS logs are attached for comparison.

#979 fixed [PATCH] Prop variations not working when attached to specific animations vts michael
Description

When a unit has been set up to attach a prop only when a certain animation is playing, it will only show the first variant, rather than randomly choosing a variant from the list.

Examples:

  • All the fauna units' blood decals don't randomize.
  • If you set multiple people farming, there ought to be two variants of the hoe being used, but only one is ever chosen.
#981 fixed Carthage StartEntities - no merceneries Kephra Nurmi
Description

Carthage should have only own troops as StartEntities and not mercenaries.

#982 fixed Add "debugging mode" to command handling historic_bruno
Description

Since we've temporarily disabled build restrictions for AIs, it has revealed subtle flaws in AI logic, since previously commands would silently fail under certain conditions. So a "debugging mode" is proposed for Commands.js, which would optionally show errors that occur during command handling ("Gather failed: resource not owned by player", "Construct failed: invalid location", etc.) The idea is this mode could be used by AI developers to test changes in their scripts (and possibly UI devs?). Really it only needs to be a flag set somewhere, which parts of Commands.js would check before displaying a message on failure. Even a simple message would be helpful.

#983 fixed [PATCH] Add AI metadata and rawEntity to destroy events Jonathan Waller
Description

Currently when an entity is destroyed the metadata is lost with no way for the AI to access it. This means when an entity is destroyed an AI can find out nothing about it unless it has cached the detail somewhere else. Forcing AI's to make a secondary metadata cache is not good so this patch puts the metadata into the event object.

The metadata is added to an array so player 2's metadata is in metadata[2] etc. This is because the events object is shared between AI's.

#985 fixed test show: "APIC: all zero" Jan Wassenberg fabio
Description

Since some days when I run the tests on my Ubuntu 10.10 I get this output:

Running 253 tests.............................................................APIC: all zero
................................................................................................................................................................................................OK!

Dunno if it's a problem or not...

#986 fixed [ATLAS] Crashes when trying to open non-existant file Luke Martinez
Description

Hi, Atlas crashes when trying to open non-existent file.

I was trying to save but must have mindlessly clicked open instead.

Reproduce:
Open Atlas
Press Open
Type filename
Press Open
ERROR Message.

Lost my work, :)
Thanks,

Asmartgoat
me@… (without the name of the editor)

#987 fixed editor: OpenGL errors fabio
Description

When running '0ad -editor' I get the following GL errors (note also that I am using mesa compiled with --enable-debug which shows also some other useful errors):

$ ./0ad -editor
[Thread debugging using libthread_db enabled]
TIMER| LoadDLL: 621.435 ms
[New Thread 0xb5befb70 (LWP 2897)]
Cache: 200 (total: 1493) MiB
[New Thread 0xa7adfb70 (LWP 2898)]
TIMER| InitVfs: 2.28409 ms
TIMER| InitScripting: 1.73954 ms
TIMER| CONFIG_Init: 5.40969 ms
[New Thread 0xa6cffb70 (LWP 2899)]
[New Thread 0xa64feb70 (LWP 2900)]
[New Thread 0xa44feb70 (LWP 2901)]
r300: DRM version: 2.9.0, Name: ATI RV530, ID: 0x71c5, GB: 1, Z: 2
r300: GART size: 509 MB, VRAM size: 256 MB
r300: AA compression RAM: YES, Z compression RAM: YES, HiZ RAM: YES
APIC: not unique
TIMER| RunHardwareDetection: 19.6156 ms
[New Thread 0xa37e8b70 (LWP 2902)]
TIMER| InitRenderer: 3.03768 ms
TIMER| ps_console: 15.347 ms
TIMER| ps_lang_hotkeys: 1.26615 ms
TIMER| common/emptyinit.xml: 817.491 us
GAME STARTED, ALL INIT COMPLETE
Mesa: User error: GL_INVALID_VALUE in glScissor
GL_INVALID_VALUE
OpenGL error(s) occurred: 0501
Mesa: User error: GL_INVALID_VALUE in glOrtho
ERROR: CRenderer::EndFrame: GL errors occurred
TIMER| shutdown actor stuff: 2.654 us
TIMER| shutdown TexMan: 3.562 us
[Thread 0xa37e8b70 (LWP 2902) exited]
TIMER| shutdown Renderer: 4.92157 ms
TIMER| shutdown SDL: 655.111 us
TIMER| shutdown UserReporter: 2.445 us
TIMER| shutdown ScriptingHost: 596.235 us
TIMER| shutdown ConfigDB: 2.165 us
TIMER| resource modules: 12.4155 ms
TIMER TOTALS (9 clients)
-----------------------------------------------------
  xml_validation: 21.1427 Mc (19x)
  tc_ShaderValidation: 8672.78 kc (17x)
  tc_pool_alloc: 10.9776 Mc (3494x)
  tc_linkProgram: 0 c (0x)
  tc_compileShader: 0 c (0x)
  tc_transform: 1554.28 kc (126x)
  tc_plain_transform: 346.502 kc (126x)
  tc_dds_transform: 1018.72 kc (378x)
  tc_png_decode: 12.245 Mc (16x)
-----------------------------------------------------
TIMER| shutdown misc: 573.187 us
[Thread 0xb5befb70 (LWP 2897) exited]
lost connection to FAM[Thread 0xa7adfb70 (LWP 2898) exited]
[Thread 0xa64feb70 (LWP 2900) exited]
[Thread 0xa6cffb70 (LWP 2899) exited]
[Thread 0xa44feb70 (LWP 2901) exited]

Program exited normally.

I recall I see something similar already reported on the forums. EDIT: forum thread: http://www.wildfiregames.com/forum/index.php?showtopic=15164

#988 fixed SIGSEGV: fScrollConstant (msg=0x87ea6b0) at ../../../source/tools/atlas/GameInterface/Handlers/CameraCtrlHandlers.cpp:66 fabio
Description

While using the editor I got the following Segmentation fault:

$ ./0ad -editor
[Thread debugging using libthread_db enabled]
TIMER| LoadDLL: 1.10503 s
[New Thread 0xb5befb70 (LWP 2872)]
Cache: 200 (total: 1493) MiB
[New Thread 0xa7cdfb70 (LWP 2873)]
TIMER| InitVfs: 4.095 ms
TIMER| InitScripting: 3.27695 ms
TIMER| CONFIG_Init: 19.3886 ms
[New Thread 0xa6effb70 (LWP 2874)]
[New Thread 0xa66feb70 (LWP 2875)]
[New Thread 0xa4624b70 (LWP 2876)]
r300: DRM version: 2.9.0, Name: ATI RV530, ID: 0x71c5, GB: 1, Z: 2
r300: GART size: 509 MB, VRAM size: 256 MB
r300: AA compression RAM: YES, Z compression RAM: YES, HiZ RAM: YES
APIC: all zero
TIMER| RunHardwareDetection: 61.2039 ms
[New Thread 0xa3c3cb70 (LWP 2877)]
TIMER| InitRenderer: 11.5959 ms
TIMER| ps_console: 38.365 ms
TIMER| ps_lang_hotkeys: 1.27956 ms
TIMER| common/emptyinit.xml: 28.337 ms
GAME STARTED, ALL INIT COMPLETE
Mesa: User error: GL_INVALID_VALUE in glScissor
GL_INVALID_VALUE
OpenGL error(s) occurred: 0501
Mesa: User error: GL_INVALID_VALUE in glOrtho
ERROR: CRenderer::EndFrame: GL errors occurred
TIMER| shutdown actor stuff: 2.863 us
TIMER| shutdown TexMan: 2.934 us
[Thread 0xa3c3cb70 (LWP 2877) exited]
TIMER| shutdown Renderer: 4.99875 ms
TIMER| shutdown SDL: 641.912 us
TIMER| shutdown UserReporter: 1.956 us
TIMER| shutdown ScriptingHost: 536.591 us
TIMER| shutdown ConfigDB: 1.955 us
TIMER| resource modules: 15.4666 ms
TIMER TOTALS (9 clients)
-----------------------------------------------------
  xml_validation: 43.1689 Mc (19x)
  tc_ShaderValidation: 29.8825 Mc (17x)
  tc_pool_alloc: 25.0317 Mc (2409x)
  tc_linkProgram: 0 c (0x)
  tc_compileShader: 0 c (0x)
  tc_transform: 2809.59 kc (126x)
  tc_plain_transform: 858.286 kc (126x)
  tc_dds_transform: 1504.18 kc (378x)
  tc_png_decode: 28.9777 Mc (16x)
-----------------------------------------------------
TIMER| shutdown misc: 594.838 us

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb5befb70 (LWP 2872)]
fScrollConstant (msg=0x87ea6b0) at ../../../source/tools/atlas/GameInterface/Handlers/CameraCtrlHandlers.cpp:66
66		if (g_Game->GetView()->GetCinema()->IsPlaying())
Undefined command: "".  Try "help".
Kill the program being debugged? (y or n) [answered Y; input not from terminal]

I am however unable to reproduce it and it may be related to #987.

#990 fixed [PATCH] build with system provided libmozjs185 infyquest
Description

This is a build system patch to build with system provided libmozjs185 especially on linux. This helps in removing dependency on building SpiderMonkey on linux.

#991 fixed [PATCH] add attackStrengths and armorStrengths functions to ai api for bots infyquest
Description

Adds attackStrengths and armorStrengths functions to ai api for bots. This will help for all the bots in accessing their strengths and enemies strengths.

this removes todo in entity.js for attack and armor

#992 fixed error: attributes are not allowed on a function-definition fcxSanya
Description

I have following error when trying to compile r10384 with gcc 4.5.2:

../../../source/lib/allocators/unique_range.cpp:53:80: error: attributes are not allowed on a function-definition
#996 fixed [PATCH] Capturing Buildings sanderd17 historic_bruno
Description

This should fit in nicely with our new territories implementation and proposed unit conversion. Currently all units can attack structures, but this will change so that only siege units destroy buildings while capturing will replace their attacking behavior. Some outdated info from the design doc:

  • Longest capture time
  • Small capture radius
  • No capture if enemy already has ownership and is within one of their unit's LOS
  • Cannot capture if garrisoned
  • Cannot capture if hitpoints are not reduced to a specified percentage
  • Capturing an enemy structure changes the ownership of a structure from the previous owner to the new owner. It does not allow the player to research another civilisation's technologies or train units that are unavailable to the player's civilisation. However the visual structure remains the same.
#998 fixed gfx::CardName gets confused by multiple GPUs Jan Wassenberg Philip Taylor
Description

I have an Intel HD Graphics 3000 plus a GeForce GTX 560 Ti, both enabled in the BIOS, on 64-bit Win7. My monitor is connected to the GF card, and that card is used for rendering the game. Also I have Lucid Virtu installed but set to "off" (I don't know if that will affect anything).

(If I switch the monitor connection to the motherboard's video output, then restart the game, the Intel GPU is used for rendering instead (judging by performance and the list of extensions), but I'm not doing that in this bug.)

system_info.txt says

Graphics Card  : Intel(R)  HD Graphics Family

which is wrong or at least misleading. (GL_RENDERER gives a more correct value of "NVIDIA Corporation GeForce GTX 560 Ti/PCI/SSE2".)

This happens because gfx::CardName calls wgfx_CardName which gets a wmiMap of

[0]	("AcceleratorCapabilities", NULL)
[1]	("AdapterCompatibility", BSTR = 0x00478a14 "Intel Corporation")
[2]	("AdapterDACType", BSTR = 0x00468854 "Internal")
[3]	("AdapterRAM", I4 = -244785152)
[4]	("Availability", I4 = 8)
[5]	("CapabilityDescriptions", NULL)
[6]	("Caption", BSTR = 0x00478a5c "Intel(R)  HD Graphics Family")
[7]	("ColorTableEntries", NULL)
[8]	("ConfigManagerErrorCode", I4 = 0)
[9]	("ConfigManagerUserConfig", BOOL =  0)
[10]	("CreationClassName", BSTR = 0x00478ab4 "Win32_VideoController")
[11]	("CurrentBitsPerPixel", NULL)
[12]	("CurrentHorizontalResolution", NULL)
[13]	("CurrentNumberOfColors", NULL)
[14]	("CurrentNumberOfColumns", NULL)
[15]	("CurrentNumberOfRows", NULL)
[16]	("CurrentRefreshRate", NULL)
[17]	("CurrentScanMode", NULL)
[18]	("CurrentVerticalResolution", NULL)
[19]	("Description", BSTR = 0x00478afc "Intel(R)  HD Graphics Family")
[20]	("DeviceID", BSTR = 0x0047844c "VideoController2")
[21]	("DeviceSpecificPens", NULL)
[22]	("DitherType", NULL)
[23]	("DriverDate", BSTR = 0x00478b54 "20110831000000.000000-000")
[24]	("DriverVersion", BSTR = 0x00478be4 "8.15.10.2509")
[25]	("ErrorCleared", NULL)
[26]	("ErrorDescription", NULL)
[27]	("ICMIntent", NULL)
[28]	("ICMMethod", NULL)
[29]	("InfFilename", BSTR = 0x00478c1c "oem2.inf")
[30]	("InfSection", BSTR = 0x00478c54 "iSNBD0")
[31]	("InstallDate", NULL)
[32]	("InstalledDisplayDrivers", BSTR = 0x00478d44 "igdumd64.dll,igd10umd64.dll,igd10umd64.dll,igdumdx32,igd10umd32,igd10umd32")
[33]	("LastErrorCode", NULL)
[34]	("MaxMemorySupported", NULL)
[35]	("MaxNumberControlled", NULL)
[36]	("MaxRefreshRate", NULL)
[37]	("MinRefreshRate", NULL)
[38]	("Monochrome", BOOL =  0)
[39]	("Name", BSTR = 0x00478dfc "Intel(R)  HD Graphics Family")
[40]	("NumberOfColorPlanes", NULL)
[41]	("NumberOfVideoPages", NULL)
[42]	("PNPDeviceID", BSTR = 0x004786fc "PCI\VEN_8086&DEV_0112&SUBSYS_D0001458&REV_09\3&13C0B0C5&0&10")
[43]	("PowerManagementCapabilities", NULL)
[44]	("PowerManagementSupported", NULL)
[45]	("ProtocolSupported", NULL)
[46]	("ReservedSystemPaletteEntries", NULL)
[47]	("SpecificationVersion", NULL)
[48]	("Status", BSTR = 0x00478e54 "OK")
[49]	("StatusInfo", NULL)
[50]	("SystemCreationClassName", BSTR = 0x00478ec4 "Win32_ComputerSystem")
[51]	("SystemName", BSTR = 0x00478f0c "PHILIP-PC")
[52]	("SystemPaletteEntries", NULL)
[53]	("TimeOfLastReset", NULL)
[54]	("VideoArchitecture", I4 = 5)
[55]	("VideoMemoryType", I4 = 2)
[56]	("VideoMode", NULL)
[57]	("VideoModeDescription", NULL)
[58]	("VideoProcessor", BSTR = 0x00478f44 "Intel(R) HD Graphics Family")

so it's only seeing the Intel one.

#999 fixed [PATCH] Healing leper historic_bruno
Description

The Heal Action is used by the Healer unit to regenerate the health of the player's organic units. While the action is applied to a viable damaged target, his hitpoints increase until restored to maximum, while the entity performs his "Heal" animation.

Note that as with most actions, multiple entities can be tasked to the same target to speed up the rate of regeneration.

XML.Entity.Actions.Heal

#1000 fixed Please consider enabling https on trac and forum fabio
Description

At least with a self signed certificate, but google reveals that at least a CA ( http://www.godaddy.com/ssl/ssl-open-source.aspx ) gives a 1 year free certificate to open source projects. There were too many security problems involving open source projects recently. Https is just a little step on improving security.

#1001 fixed [PATCH] Attack Move Jonathan Waller
Description

The attack-move command should be implemented. This is a move command where the units attack any enemies that come into sight along the route, once the enemies are destroyed the units continue walking to the destination.

#1004 fixed [PATCH] ActorEditor fails to load libAtlasUI at runtime Yves Yves
Description

Description

Running ActorEditor, ArchiveViewer or FileConverter return this error on Linux/Mac systems when build with the generated makefiles or XCode:

Linux:

./ArchiveViewer: error while loading shared libraries: ../../../binaries/system/libAtlasUI.so: cannot open shared object file: No such file or directory

Mac:

dyld: Library not loaded: ../../../binaries/system/libAtlasUI.dylib
  Referenced from: /Users/[User]/Projects/0ad/binaries/system/./ActorEditor
  Reason: image not found
Trace/BPT trap

Running "objdump -p ActorEditor | grep AtlasUI" on Linux returns

  NEEDED               ../../../binaries/system/libAtlasUI.so

This relative path is wrong when the binary is in binaries/system. Removing the path from LDDEPS in the makefile or replacing it by a correct one solves the problem on Linux.

On OSX for both the makefiles and Xcode, there's an additional -install_name option required for linking libAtlasUI.


PATCH:

I've created a patch to only add static library projects to LDDEPS in makefiles. Unfortunately I'm not sure if I fully understand the reason why some libraries are added with the -l flag and also with a full relative path as LDDEPS. Premake only does this with Projects defined in its scripts as "StaticLib" or "SharedLib" and not for external libraries. I've tried replacing "links" with "linkoptions" only for the action "gmake", but it doesn't work because build-order-dependencies get lost this way. The advantage of my solution is that it won't change anything for the other platforms (e.g. Visual Studio).

For the Mac I've added an install_name option. It's probably not a very clean solution like I did it, but I didn't want to change too much and risk other bugs just to fix this one.


Question:

What is ColourTester? It has the same problem but I couldn't find any sources or buildscripts for it.

#1007 fixed Female Citizens change clothes before dying ben Aritra Chakraborty
Description

I noticed this strange bug when killing some female citizens with archers in oasis 2 map. Just when they are struck by the final arrow they change there look clothes , hair colour etc just before the death animation kicked in . Tested on alpha 7 . I played carthagian faction . Jubot played greek faction .

#1009 fixed JuBot doesn't understand territory limitations for mills historic_bruno
Description

JuBot is trying to build mills close to resources outside it's territory (which isn't allowed due to build restrictions, see [10408]), but the influence map for building placement leads it to the edges of its territory and it keeps trying to place more and more mills during the game. I think it should do two things: not worry about trying to build mills for a resource far outside it's own territory, and more importantly, have some logic for territory expansion. But at least the broken mill placement should be fixed.

#1012 fixed [PATCH] COLLADA: Support special vertex weight index on skinned models historic_bruno historic_bruno
Description

For skinned models, the COLLADA 1.4.1 spec allows a special vertex weight index of -1, which indicates the weight applies to the bind-shape matrix* instead of a particular bone, as seen in this example:

<skin>
  <source id="joints"/>
  <source id="weights"/>
  <vertex_weights count="4">
    <input semantic="JOINT" source="#joints"/>
    <input semantic="WEIGHT" source="#weights"/>
    <vcount>3 2 2 3</vcount>
    <v>
      -1 0 0 1 1 2
      -1 3 1 4
      -1 3 2 4
      -1 0 3 1 2 2
    </v>
  </vertex_weights>
</skin>

(*The bind-shape matrix represents the transform of the bind-shape prior to skinning, it transforms the bind-shape from object space to bind-space. It's specified by a <bind_shape_matrix> element in the <skin> or assumed to be an identity transform. See pages 4.6-4.8 of the COLLADA spec for more notes.)

Currently if you try to add such a model to the game, it will fail to import since the PMD converter thinks there are more than 256 bones (the -1 index is typecast to an unsigned int). Apparently Blender 2.60a likes to export such models and seems to have made general improvements to animation exporting, so we should find a way to implement this.

As a workaround, it may be possible to export animations with Blender 2.6 and the corresponding models with an older version.

#1013 fixed Atlas will not run Darth_Malloc Darth_Malloc
Description

When the user tries to go into the atlas editor, it crashes. As a result of one or more of the changes made, it seems that the editor is unable to locate some of the files needed for it to run.

#1014 fixed Health Bar Bug on Cavalry Art Department fiasco
Description

Health bar covers the face of cavalry; perhaps present on other units as well.

#1016 fixed [PATCH] Fix frame rate counter ben historic_bruno
Description

The frame rate counter (Shift+F) jumps around too much, the implementation should be filtering the time between frames to produce a smooth average, but it's obviously not working as intended.

#1019 fixed [PATCH] AIProxy doesn't receive garrison updates. Jonathan Waller
Description

AIProxy provides the .garrisoned property which holds the units garrisoned. This is not updated however so it is always empty. This patch adds an update message to GarrisonHolder and listens for it in AIProxy.

#1021 fixed Atlas crashes any time there is a change within the game's directory. michael
Description

Open Atlas. Now SVN commit something. Atlas will crash upon completion of SVN commit.

Open Atlas. Save a new texture anywhere in the art folder. Atlas will crash.

Here is the error message:

Much to our regret we must report the program has encountered an error.

Please let us know at http://trac.wildfiregames.com/ and attach the crashlog.txt and crashlog.dmp files.

Details: unhandled exception (__int64(""))

Location: unknown:0 (RtlInitializeExceptionChain)

Call stack:

(error while dumping stack: No stack frames found)
errno = 13 (Insufficient access rights to open file)
OS error = 0 (no error code was set)
#1022 fixed [PATCH] Changing selection in actor viewer should display correct player colour Mitchell K historic_bruno
Description

If you change selections in the object panel with actor viewer open, the player colour of the displayed entity becomes grey, but it should match the colour of the selected player. Probably this involves sending a player ID in the SetActorViewer message (because the AtlasUI is in a separate thread from the engine and they communicate by messages), and then getting the player colour however it's done in other parts of the engine. If you select a player after switching actors, the colour updates correctly, so this is only a problem when switching actors.

#1023 fixed Wrong smoke position Art Department fabio
Description

It's happening since about 1-2 weeks on SVN:

http://img685.imageshack.us/img685/9518/screenshot0001l.png

I also installed official alpha VII and it's ok (just to confirm the regression is not from a graphic driver update).

#1025 fixed [PATCH] Add config option to toggle pause on window focus loss Mark Cho historic_bruno
Description

If you're playing a single player game and the window loses focus, the game will be paused until you return, which is OK but not everyone wants this behavior. It seems trivial to fix this by adding a new option to default.cfg such as

pauseonfocusloss = true
#1026 fixed Render preview entities regardless of LOS historic_bruno
Description

Preview entities are used when placing a new building, but currently the renderer treats them like any other entity and they get shaded by FoW/SoD. Instead there should be a new flag IgnoreLOS in the VisualActor component. From discussion in IRC:

<Philip`> (It's just something I've vaguely wanted to do, but vaguely think
it'll need some non-trivial changes to the renderer to allow per-model flags
that influence the shader selection)
#1027 fixed [PATCH] [ATLAS] Assertion failure in CBrush::Slice while editing map vts michael
Description

Assertion failed: "idx < si.newv.size()" Location: Brush.cpp:246 (CBrush::Slice)

Call stack:

(error while dumping stack: No stack frames found) errno = 0 (No error reported here) OS error = 0 (no error code was set)

#1028 fixed [PATCH] UI Enhancement: Right Click selection removal kingadami michael
Description

Currently, when multiple units are selected, the player can remove a unit (or group of like units) from the selection by ctrl+left clicking the icon portrait of that unit in the selection UI (center panel).

An enhancement here would be to also allow removal of units from the selection via simply right-clicking their icons in the center panel (no Ctrl key necessary). This does not replace the ctrl-left click, but adds a redundant method. Currently right-clicking icons in the center panel does nothing.

This is a GUI enhancement only/does not effect ctrl-clicking behavior in the game world.

#1029 fixed [PATCH] Spell colour/color properly ben Philip Taylor
Description

Currently the code and data files use a random mixture of "colour" and "color". To minimise confusion, we should change everything to use one form of spelling consistently. (Which form?) (There may be some other words with similar spelling problems.) (I don't think spelling in comments is worth caring about; only class names, XML element/attribute names, etc.)

#1030 fixed Bounding box changes broke farm selection vtsj Kieran P
Description

After the awesome changes to the bounding box selection, it seems farms are no longer selectable via single click. You need to drag select them. Bug in the code or just missing an XML on the entity?

#1031 fixed Config option to render cursors with OpenGL Philip Taylor Pureon
Description

Add a config option to render cursors using OpenGL instead of native Windows cursors. This will allow 0AD cursors to appear in game video recordings, rather than showing the default windows cursor.

#1033 fixed Profiler-related GL errors historic_bruno
Description

Here is the first error and the associated call stack from gDEBugger:

Breaked-on: glGetQueryiv(GL_CURRENT_TIME_NV , GL_QUERY_COUNTER_BITS , 0x0020E718)
Error-Code: GL_INVALID_ENUM
Error-Description: An unacceptable value is specified for an enumerated argument. The offending command is ignored, and has no other side effect than to set the error flag.
ReportGLLimits - hwdetect.cpp, line 493
RunHardwareDetection - hwdetect.cpp, line 197
InitGraphics - gamesetup.cpp, line 892
RunGameOrAtlas - main.cpp, line 494
main - main.cpp, line 516
wmain - wseh.cpp, line 380
__tmainCRTStartup - crtexe.c, line 552
CallStartupWithinTryBlock - wseh.cpp, line 396
BaseThreadInitThunk - kernel32.dll
RtlInitializeExceptionChain - ntdll.dll

That error occurs during startup and is not reported. The next occurs when enabling the profiler (F11) and is reported:

Breaked-on: glGenQueries(8 , 0x05A8B798)
Error-Code: GL_INVALID_OPERATION
Error-Description: The specified operation is not allowed in the current state. The offending function is ignored, having no side effect other than to set the error flag.
CProfiler2GPU_ARB_timer_query::RecordRegion - profiler2gpu.cpp, line 198
CProfiler2GPU::RegionLeave - profiler2gpu.cpp, line 835
CProfileViewer::RenderProfile - profileviewer.cpp, line 292
Render - gamesetup.cpp, line 273
Frame - main.cpp, line 385
RunGameOrAtlas - main.cpp, line 497
main - main.cpp, line 516
wmain - wseh.cpp, line 380
__tmainCRTStartup - crtexe.c, line 552
CallStartupWithinTryBlock - wseh.cpp, line 396
BaseThreadInitThunk - kernel32.dll
RtlInitializeExceptionChain - ntdll.dll
#1034 fixed Make qBot the default AI Jonathan Waller Kieran P
Description

Import qBot into 0 A.D. and make it the default bot for Alpha 8.

qBot development can (and probably should) still happen in the Git repo, and periodically, when features are completed and tested, pulled back into 0 A.D.

Therefore, I suggest quantumstate bring qBot AI into as stable a release as possible for the next Alpha release.

#1035 fixed Crash in JS_free when starting random map fabio
Description

When I try to start a random map sometimes I get this segmentation fault.

Program received signal SIGSEGV, Segmentation fault.
0xb799ab01 in JS_free () from /usr/lib/libmozjs185.so.1.0

I am on Ubuntu 11.04 32 bit and I am compiling r10615 against Ubuntu version of libmozjs.

#1036 fixed Path case-insensitivity causes problems with deleting files Philip Taylor
Description

The goal is to have file layout a bit like

mods/
  public/
    public.zip
      Carthage_Peace_2.ogg
    update.zip
      carthage_peace_2.ogg
      Carthage_Peace_2.ogg.DELETED

so the result after loading public.zip then update.zip is that there will be a single enumerable file carthage_peace_2.ogg.

Apparently that doesn't work. I think the problem may be that VFS uses std::map<VfsPath, ...> and VfsPath::operator< uses wcscasecmp, so the C.ogg and c.ogg will be considered equivalent paths and the c.ogg will override the C.ogg, then the C.ogg.DELETED will delete the c.ogg, ending up with no enumerable files.

Do paths really need to be compared case insensitively? That seems invalid on Unix, and insufficient (therefore probably not necessary?) on Windows (the paths "foobarbaz" and "FOOBARBAZ" are equivalent, but so is "FOOBAR~1", and I don't think we check for that amount of equivalence).

#1037 fixed CMapGeneratorWorker creates dangling JSContext pointers Philip Taylor
Description

CMapGeneratorWorker::RunThread deletes its m_ScriptInterface, while m_MapData still contain some StructuredClones generated via that ScriptInterface's context. StructuredClone stores a pointer to that context, which is used for JS_free in its destructor, so JS_free is being called later on a non-existent context, which can cause crashes.

The ScriptInterface mustn't be deleted until everything that refers to it (StructuredClones, CScriptValRooteds, etc) has been cleaned up.

#1042 fixed Assertion failure in CCmpRallyPointRenderer::CreateMarker while using Atlas vts historic_bruno
Description

Possibly a component initialization order bug? (some info about that here)

To reproduce:

  1. Open Atlas.
  2. Create a civil centre.
  3. Start the simulation.
  4. Reset the simulation. Get the following assertion failure:
Assertion failed: "!cmpPlayerManager.null()"
Location: CCmpRallyPointRenderer.cpp:446 (CCmpRallyPointRenderer::CreateMarker)

Call stack:

CCmpRallyPointRenderer::CreateMarker (ccmprallypointrenderer.cpp:446)
    this = (unavailable)
    ownerId = 1 (0x00000001)

CCmpRallyPointRenderer::Init (ccmprallypointrenderer.cpp:413)
    this = (unavailable)
    paramNode = 0x0DFC7000 -> 
        m_Value = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
        m_Childs = (unsupported map<basic_string<char,char_traits<char> >,CParamNode >)
        m_IsOk = true 
        m_ScriptVal = 
            m_Val = 
                px = 0x00000000
                pn = 
                    pi_ = 0x00000000




    texturePropsBase = 
        m_Path = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 47 ('/')

        m_Filter = 9987 (0x00002703)
        m_WrapS = 33069 (0x0000812D)
        m_WrapT = 33071 (0x0000812F)
        m_Aniso = 4.000000 (0x40800000)

    texturePropsMask = 
        m_Path = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 47 ('/')

        m_Filter = 9987 (0x00002703)
        m_WrapS = 33069 (0x0000812D)
        m_WrapT = 33071 (0x0000812F)
        m_Aniso = 4.000000 (0x40800000)


CCmpProjectileManager::Deserialize (ccmpprojectilemanager.cpp:80)
    this = (unavailable)
    paramNode = 0x0DFC7000 (see above)
    __formal = 0x039AFA80 -> (IDeserializer)

CComponentManager::DeserializeState (componentmanagerserialization.cpp:311)
    this = (unavailable)
    stream = 0x0CA618B0 -> (basic_istream<char,char_traits<char> >)
    rng = (unsupported basic_string<char,char_traits<char> >)
    deserializer = 
        (IDeserializer)
        m_ScriptBackrefs = (unsupported map<size_t,JSObject * >)
        m_ScriptInterface = 0x0053FE80 -> 
            m = (auto_ptr<ScriptInterface_impl>)

        m_Stream = 0x0CA618B0 (see above)

    noParam = 
        m_Value = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
        m_Childs = (unsupported map<basic_string<char,char_traits<char> >,CParamNode >)
        m_IsOk = true 
        m_ScriptVal = 
            m_Val = 
                px = 0x00000000
                pn = 
                    pi_ = 0x00000000




    templateManager = 0x0DB0B1F8 -> 
        
            m_EntityId = 1 (0x00000001)
            m_SimContext = 0x0053FE70 -> 
                m_ComponentManager = 0x0053FE80 (see above)
                m_UnitManager = 0x00515BB8 -> 
                    m_Units = (unsupported vector<CUnit * >)
                    m_ObjectManager = 0x0B527ED4 -> 
                        m_MeshManager = 0x0B527E8C -> 
                            m_MeshMap = 
                                table_ = 
                                    
                                        
                                            buckets_ = 0x0D00CBA0 -> 
                                                next_ = 0x0B680EE0 -> 
                                                    next_ = 0x0B680C40 -> 
                                                        next_ = 0x00000000



                                            bucket_count_ = 11 (0x0000000B)
                                            allocators_ = 
                                                
                                                    (unsupported )
                                                    (unsupported )



                                        
                                            current_ = false
                                            funcs_ = "s/i"

                                        size_ = 8 (0x00000008)
                                        mlf_ = 1.000000 (0x3F800000)
                                        cached_begin_bucket_ = 0x0D00CBA0 (see above)
                                        max_load_ = 11 (0x0000000B)



                            m_ColladaManager = 0x0B527E88 -> 
                                m = 0x00515BF8 -> 
                                    dll = 
                                        m_Name = 0x015A288C -> "Collada"
                                        m_Handle = 0x00000000

                                    set_logger = 0x00000014
                                    set_skeleton_definitions = 0x00000019
                                    convert_dae_to_pmd = 0x0000001A
                                    convert_dae_to_psa = 0x0000001D



                        m_SkeletonAnimManager = 0x0B527EB0 -> 
                            m_Animations = 
                                table_ = 
                                    
                                        
                                            buckets_ = 0x0DD105A8 -> 
                                                next_ = 0x00000000

                                            bucket_count_ = 11 (0x0000000B)
                                            allocators_ = 
                                                
                                                    (unsupported )
                                                    (unsupported )



                                        
                                            (too much output; skipping to next top-level symbol)

                                        size_ = 1 (0x00000001)
                                        mlf_ = 1.000000 (0x3F800000)
                                        cached_begin_bucket_ = 0x0DD105C4 -> 
                                            next_ = 0x0D636AD0 -> 
                                                next_ = 0x00000000


                                        max_load_ = 11 (0x0000000B)



                            m_ColladaManager = 0x0B527E88 (see above)

                        m_Simulation = 0x004F96B8 -> 
                            m = 0x0053FE70 (see above)

                        m_Objects = (unsupported map<CObjectManager::ObjectKey,CObjectEntry * >)
                        m_ObjectBases = (unsupported map<CStrW,CObjectBase * >)


                m_Terrain = 0x00515B98 -> 
                    m_MapSize = 257 (0x00000101)
                    m_MapSizePatches = 16 (0x00000010)
                    m_Patches = 0x0A790024 -> 
                        
                            m_WorldBounds = 
                                m_Data = [2] 
                                    
                                        X = 0.000000 (0x00000000)
                                        Y = 0.000000 (0x00000000)
                                        Z = 0.000000 (0x00000000)

                                    
                                        X = 64.000000 (0x42800000)
                                        Y = 22.382513 (0x41B30F63)
                                        Z = 64.000000 (0x42800000)


                            m_Transform = 
                                _11 = 1.000000 (0x3F800000)
                                _21 = 0.000000 (0x00000000)
                                _31 = 0.000000 (0x00000000)
                                _41 = 0.000000 (0x00000000)
                                _12 = 0.000000 (0x00000000)
                                _22 = 1.000000 (0x3F800000)
                                _32 = 0.000000 (0x00000000)
                                _42 = 0.000000 (0x00000000)
                                _13 = 0.000000 (0x00000000)
                                _23 = 0.000000 (0x00000000)
                                _33 = 1.000000 (0x3F800000)
                                _43 = 0.000000 (0x00000000)
                                _14 = 0.000000 (0x00000000)
                                _24 = 0.000000 (0x00000000)
                                _34 = 0.000000 (0x00000000)
                                _44 = 1.000000 (0x3F800000)
                                _data = [16] 
                                    1.000000 (0x3F800000)
                                    0.000000 (0x00000000)
                                    0.000000 (0x00000000)
                                    0.000000 (0x00000000)
                                    0.000000 (0x00000000)
                                    1.000000 (0x3F800000)
                                    0.000000 (0x00000000)
                                    0.000000 (0x00000000)
                                    0.000000 (0x00000000)
                                    0.000000 (0x00000000)
                                    1.000000 (0x3F800000)
                                    0.000000 (0x00000000) ...
                                _data2d = [4] 
                                    [4] { 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                                    [4] { 0.000000 (0x00000000), 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                                    [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000), 0.000000 (0x00000000) }
                                    [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000) }

                            m_InvTransform = 
                                _11 = 0.000000 (0x00000000)
                                _21 = 0.000000 (0x00000000)
                                _31 = 0.000000 (0x00000000)
                                _41 = 0.000000 (0x00000000)
                                _12 = 0.000000 (0x00000000)
                                _22 = 0.000000 (0x00000000)
                                _32 = 0.000000 (0x00000000)
                                _42 = 0.000000 (0x00000000)
                                _13 = 0.000000 (0x00000000)
                                _23 = 0.000000 (0x00000000)
                                _33 = 0.000000 (0x00000000)
                                _43 = 0.000000 (0x00000000)
                                _14 = 0.000000 (0x00000000)
                                _24 = 0.000000 (0x00000000)
                                _34 = 0.000000 (0x00000000)
                                _44 = 0.000000 (0x00000000)
                                _data = [16] 
                                    0.000000 (0x00000000)
                                    0.000000 (0x00000000)
                                    0.000000 (0x00000000)
                                    0.000000 (0x00000000)
                                    0.000000 (0x00000000)
                                    0.000000 (0x00000000)
                                    0.000000 (0x00000000)
                                    0.000000 (0x00000000)
                                    0.000000 (0x00000000)
                                    0.000000 (0x00000000)
                                    0.000000 (0x00000000)
                                    0.000000 (0x00000000) ...
                                _data2d = [4] 
                                    [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                                    [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                                    [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                                    [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }

                            m_RenderData = 0x00000000
                            m_BoundsValid = true 

                        m_bWillBeDrawn = false
                        m_MiniPatches = [16] 
                            [16] 
                                
                                    Tex = 0x0D835CB8 -> 
                                        m_Tag = { (unsupported basic_string<char,char_traits<char> >) }
                                        m_pProperties = 
                                            px = 0x0D7EA718 -> 
                                                m_pParent = 
                                                    px = 0x0D730B78 -> 
                                                        m_pParent = 
                                                            px = 0x00000000
                                                            pn = 
                                                                pi_ = 0x00000000


                                                        m_BaseColor = 0 (0x00000000)
                                                        m_HasBaseColor = false
                                                        m_MovementClass = { (unsupported basic_string<char,char_traits<char> >) }
                                                        m_Groups = (unsupported vector<CTerrainGroup * >)

                                                    pn = 
                                                        pi_ = 0x0B5301F8 -> 
                                                            use_count_ = 20 (0x00000014)
                                                            weak_count_ = 1 (0x00000001)



                                                m_BaseColor = 0 (0x00000000)
                                                m_HasBaseColor = false
                                                m_MovementClass = { (unsupported basic_string<char,char_traits<char> >) }
                                                m_Groups = (unsupported vector<CTerrainGroup * >)

                                            pn = 
                                                pi_ = 0x0D836698 -> 
                                                    use_count_ = 16 (0x00000010)
                                                    weak_count_ = 1 (0x00000001)



                                        m_Texture = 
                                            px = 0x0D8425E0 -> 
                                                m_Properties = 
                                                    m_Path = 
                                                        path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
                                                        separator = "/r✃"

                                                    m_Filter = 9987 (0x00002703)
                                                    m_WrapS = 10497 (0x00002901)
                                                    m_WrapT = 10497 (0x00002901)
                                                    m_Aniso = 2.000000 (0x40000000)

                                                m_Handle = 9502865 (0x0000000000910091)
                                                m_BaseColour = 4287075159 (0xFF879357)
                                                m_State = LOADED
                                                m_TextureManager = 0x00503310 -> 
                                                    m_VFS = 
                                                        px = 0x0048DA40 -> (IVFS)
                                                        pn = 
                                                            pi_ = 0x0048CDB8 -> 
                                                                use_count_ = 4 (0x00000004)
                                                                weak_count_ = 1 (0x00000001)



                                                    m_CacheLoader = 
                                                        m_VFS = 
                                                            px = 0x0048DA40 (see above)
                                                            pn = 
                                                                pi_ = 0x0048CDB8 (see above)


                                                        m_FileExtension = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)

                                                    m_DisableGL = false
                                                    m_TextureConverter = 
                                                        m_VFS = 
                                                            px = 0x0048DA40 (see above)
                                                            pn = 
                                                                pi_ = 0x0048CDB8 (see above)


                                                        m_HighQuality = false
                                                        m_WorkerThread = 952 (0x000003B8)
                                                        m_WorkerMutex = 0x005E09B0
                                                        m_WorkerSem = 0x000003B4
                                                        m_RequestQueue = (unsupported deque<boost::shared_ptr<CTextureConverter::ConversionRequest> >)
                                                        m_ResultQueue = (unsupported deque<boost::shared_ptr<CTextureConverter::ConversionResult> >)
                                                        m_Shutdown = false

                                                    m_DefaultHandle = 65537 (0x0000000000010001)
                                                    m_ErrorHandle = 131074 (0x0000000000020002)
                                                    m_ErrorTexture = 
                                                        px = 0x0048BDB8 -> 
                                                            m_Properties = 
                                                                m_Path = 
                                                                    path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
                                                                    separator = "/f✃"

                                                                m_Filter = 9987 (0x00002703)
                                                                m_WrapS = 10497 (0x00002901)
                                                                m_WrapT = 10497 (0x00002901)
                                                                m_Aniso = 1.000000 (0x3F800000)

                                                            m_Handle = 131074 (0x0000000000020002)
                                                            m_BaseColour = 0 (0x00000000)
                                                            m_State = LOADED
                                                            m_TextureManager = 0x00503310 (see above)
                                                            m_Self = 
                                                                px = 0x0048BDB8 (see above)
                                                                pn = 
                                                                    pi_ = 0x005173E8 -> 
                                                                        use_count_ = 1 (0x00000001)
                                                                        weak_count_ = 2 (0x00000002)




                                                        pn = 
                                                            pi_ = 0x005173E8 (see above)


                                                    m_TextureCache = 
                                                        table_ = 
                                                            
                                                                
                                                                    buckets_ = 0x0D858F30 -> 
                                                                        next_ = 0x00000000

                                                                    bucket_count_ = 769 (0x00000301)
                                                                    allocators_ = 
                                                                        
                                                                            (unsupported )
                                                                            (unsupported )



                                                                
                                                                    current_ = false
                                                                    funcs_ = [2] { { data_ = { buf = [2] { [8] { 3, 3, 0, 0, 0, 0, 0, 183 }, 3 }, align_ = 
                                                                                    t0 = 3
                                                                                    t1 = 3
                                                                                    t2 = 3
                                                                                    t3 = 3
                                                                                    t4 = 3
                                                                                    t5 = 3
                                                                                    t6 = 3
                                                                                    t7 = 3
                                                                                    t8 = 3
                                                                                    t9 = 3
                                                                                    t10 = 3
                                                                                    t11 = 3
                                                                                    t12 = 3
                                                                                    t13 = 3
                                                                                    t14 = 3
                                                                                    t15 = 3
                                                                                    t16 = 3
                                                                                    t17 = 3
                                                                                    t18 = 3
                                                                                    t19 = 3
                                                                                    t20 = 3
                                                                                    t21 = 3
                                                                                    t22 = 3
                                                                                    t23 = 3
 } }, { data_ = { buf = [2] { [8] { 0, 0, 0, 0, 0, 183, 2, 0 }, 0 }, align_ = 
                                                                                    t0 = 0
                                                                                    t1 = 0
                                                                                    t2 = 0
                                                                                    t3 = 0
                                                                                    t4 = 0
                                                                                    t5 = 0
                                                                                    t6 = 0
                                                                                    t7 = 0
                                                                                    t8 = 0
                                                                                    t9 = 0
                                                                                    t10 = 0
                                                                                    t11 = 0
                                                                                    t12 = 0
                                                                                    t13 = 0
                                                                                    t14 = 0
                                                                                    t15 = 0
                                                                                    t16 = 0
                                                                                    t17 = 0
                                                                                    t18 = 0
                                                                                    t19 = 0
                                                                                    t20 = 0
                                                                                    t21 = 0
                                                                                    t22 = 0
                                                                                    t23 = 0
 } } }

                                                                size_ = 695 (0x000002B7)
                                                                mlf_ = 1.000000 (0x3F800000)
                                                                cached_begin_bucket_ = 0x0D858F34 -> 
                                                                    next_ = 0x0D8A21B0 -> 
                                                                        next_ = 0x0D78C838 -> 
                                                                            next_ = 0x00000000



                                                                max_load_ = 769 (0x00000301)



                                                    m_HotloadFiles = 
                                                        table_ = 
                                                            
                                                                
                                                                    buckets_ = 0x0D859BB8 -> 
                                                                        next_ = 0x00000000

                                                                    bucket_count_ = 769 (0x00000301)
                                                                    allocators_ = 
                                                                        
                                                                            (unsupported )
                                                                            (unsupported )



                                                                
                                                                    current_ = false
                                                                    funcs_ = [2] { { data_ = { buf = [1] { [8] { 4, 0, 0, 214, 2, 0, 0, 0 } }, align_ = 
                                                                                    t0 = 4
                                                                                    t1 = 4
                                                                                    t2 = 4
                                                                                    t3 = 4
                                                                                    t4 = 4
                                                                                    t5 = 4
                                                                                    t6 = 4
                                                                                    t7 = 4
                                                                                    t8 = 4
                                                                                    t9 = 4
                                                                                    t10 = 4
                                                                                    t11 = 4
                                                                                    t12 = 4
                                                                                    t13 = 4
                                                                                    t14 = 4
                                                                                    t15 = 4
                                                                                    t16 = 4
                                                                                    t17 = 4
                                                                                    t18 = 4
                                                                                    t19 = 4
                                                                                    t20 = 4
                                                                                    t21 = 4
                                                                                    t22 = 4
                                                                                    t23 = 4
 } }, { data_ = { buf = [1] { [8] { 0, 0, 214, 2, 0, 0, 0, 0 } }, align_ = 
                                                                                    t0 = 0
                                                                                    t1 = 0
                                                                                    t2 = 0
                                                                                    t3 = 0
                                                                                    t4 = 0
                                                                                    t5 = 0
                                                                                    t6 = 0
                                                                                    t7 = 0
                                                                                    t8 = 0
                                                                                    t9 = 0
                                                                                    t10 = 0
                                                                                    t11 = 0
                                                                                    t12 = 0
                                                                                    t13 = 0
                                                                                    t14 = 0
                                                                                    t15 = 0
                                                                                    t16 = 0
                                                                                    t17 = 0
                                                                                    t18 = 0
                                                                                    t19 = 0
                                                                                    t20 = 0
                                                                                    t21 = 0
                                                                                    t22 = 0
                                                                                    t23 = 0
 } } }

                                                                size_ = 726 (0x000002D6)
                                                                mlf_ = 1.000000 (0x3F800000)
                                                                cached_begin_bucket_ = 0x0D859BBC -> 
                                                                    next_ = 0x0D8329A8 -> 
                                                                        next_ = 0x00000000


                                                                max_load_ = 769 (0x00000301)



                                                    m_SettingsFiles = 
                                                        table_ = 
                                                            
                                                                
                                                                    buckets_ = 0x0B606B60 -> 
                                                                        next_ = 0x0B5D7BE8 -> 
                                                                            next_ = 0x00000000


                                                                    bucket_count_ = 53 (0x00000035)
                                                                    allocators_ = 
                                                                        
                                                                            (unsupported )
                                                                            (unsupported )



                                                                
                                                                    current_ = false
                                                                    funcs_ = [2] { { data_ = { buf = [1] { [8] { 0, 0, 0, 31, 0, 0, 0, 0 } }, align_ = 
                                                                                    t0 = 0
                                                                                    t1 = 0
                                                                                    t2 = 0
                                                                                    t3 = 0
                                                                                    t4 = 0
                                                                                    t5 = 0
                                                                                    t6 = 0
                                                                                    t7 = 0
                                                                                    t8 = 0
                                                                                    t9 = 0
                                                                                    t10 = 0
                                                                                    t11 = 0
                                                                                    t12 = 0
                                                                                    t13 = 0
                                                                                    t14 = 0
                                                                                    t15 = 0
                                                                                    t16 = 0
                                                                                    t17 = 0
                                                                                    t18 = 0
                                                                                    t19 = 0
                                                                                    t20 = 0
                                                                                    t21 = 0
                                                                                    t22 = 0
                                                                                    t23 = 0
 } }, { data_ = { buf = [1] { [8] { 0, 0, 31, 0, 0, 0, 0, 0 } }, align_ = 
                                                                                    t0 = 0
                                                                                    t1 = 0
                                                                                    t2 = 0
                                                                                    t3 = 0
                                                                                    t4 = 0
                                                                                    t5 = 0
                                                                                    t6 = 0
                                                                                    t7 = 0
                                                                                    t8 = 0
                                                                                    t9 = 0
                                                                                    t10 = 0
                                                                                    t11 = 0
                                                                                    t12 = 0
                                                                                    t13 = 0
                                                                                    t14 = 0
                                                                                    t15 = 0
                                                                                    t16 = 0
                                                                                    t17 = 0
                                                                                    t18 = 0
                                                                                    t19 = 0
                                                                                    t20 = 0
                                                                                    t21 = 0
                                                                                    t22 = 0
                                                                                    t23 = 0
 } } }

                                                                size_ = 31 (0x0000001F)
                                                                mlf_ = 1.000000 (0x3F800000)
                                                                cached_begin_bucket_ = 0x0B606B60 (see above)
                                                                max_load_ = 53 (0x00000035)




                                                m_Self = 
                                                    px = 0x0D8425E0 (see above)
                                                    pn = 
                                                        pi_ = 0x0D836710 -> 
                                                            use_count_ = 2 (0x00000002)
                                                            weak_count_ = 9 (0x00000009)




                                            pn = 
                                                pi_ = 0x0D836710 (see above)


                                        m_BaseColor = 4287075159 (0xFF879357)
                                        m_BaseColorValid = true 
                                        m_Groups = (unsupported vector<CTerrainGroup * >)

                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)
 ...
                            [16] 
                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)
 ...
                            [16] 
                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)
 ...
                            [16] 
                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)
 ...
                            [16] 
                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)
 ...
                            [16] 
                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)
 ...
                            [16] 
                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)
 ...
                            [16] 
                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)

                                
                                    Tex = 0x0D835CB8 (see above)
                                    Priority = 0 (0x00000000)
 ... ...
                        m_X = 0 (0x00000000)
                        m_Z = 0 (0x00000000)
                        m_Parent = 0x00515B98 (see above)

                    m_Heightmap = 0x0D8C1B88 -> 16384 (0x4000)
                    m_BaseColour = 
                        R = [8] { 255 (0xFF), 255 (0xFF), 255 (0xFF), 255 (0xFF), 0 (0x00), 0 (0x00), 0 (0x00), 0 (0x00) }
                        G = 255 (0xFF)
                        B = 255 (0xFF)
                        A = 255 (0xFF)





    numComponentTypes = 47 (0x0000002F)
    i = 13 (0x0000000D)
    ctid = 27 (0x0000001B)
    ctname = (unsupported basic_string<char,char_traits<char> >)
    numComponents = 1 (0x00000001)
    j = 0 (0x00000000)
    ent = 11 (0x0000000B)

SimState::Thaw (simstate.cpp:41)
    this = (unavailable)

ViewGame::RestoreState (view.cpp:325)
    this = (unavailable)
    label = 0x039AFB60 -> (unsupported basic_string<wchar_t,char_traits<wchar_t> >)

AtlasMessage::fSimStateRestore_wrapper (mischandlers.cpp:131)
    msg = 0x0D2E4B28 -> (AtlasMessage::IMessage)

RunEngine (gameloop.cpp:171)
    data = 0x003DF6B4
    hooks = 
        override_gl_upload_caps = 0x00000000
        get_log_dir = 0x00000000
        bundle_logs = 0x00000000
        translate = 0x00000000
        translate_free = 0x00000000
        log = 0x00000000
        display_error = 0x01495AC0 -> (AtlasDisplayError)

    msgPasser = 0x003DEC98 -> 
        (AtlasMessage::MessagePasser)
        m_Mutex = 
            m_Mutex = 0x005951F0

        m_SemaphoreName = { (unsupported basic_string<char,char_traits<char> >) }
        m_Semaphore = 0x00427CA8 -> 540 (0x0000021C)
        m_Queue = (unsupported queue<AtlasMessage::IMessage *,deque<AtlasMessage::IMessage * > >)
        m_Trace = false

    last_activity = 35.0672 (0x4041889A50029B49)
    args = 
        m_Args = (unsupported vector<pair<CStr8,CStr8> >)
        m_Arg0 = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = 92 ('\')


    recent_activity = true 
    time = 2.10768e-307 (0x0042F1E02C5814E4)
    ev = 
        ev = 
            type = 10 (0x0A)
            active = { type = 10 (0x0A), gain = 209 (0xD1), state = 130 (0x82) }
            key = 
                type = 10 (0x0A)
                keysym = { sym = 1076594528, unicode = 63328 (0xF760) }

            motion = { type = 10 (0x0A), x = 3970 (0x0F82), y = 34656 (0x8760) }
            button = 
                type = 10 (0x0A)
                button = 209 (0xD1)
                state = 130 (0x82)
                x = 34656 (0x8760)
                y = 16427 (0x402B)

            resize = { type = 10 (0x0A), w = 1076594528 (0x402B8760), h = 5371744 (0x0051F760) }
            expose = { type = 10 (0x0A) }
            quit = { type = 10 (0x0A) }
            user = { type = 10 (0x0A), code = 1076594528 (0x402B8760), data1 = 0x0051F760 }


    length = 0.000000 (0x0D2E4B28)
    last_time = 35.1173 (0x40418F05381DA643)
    msg = 0x0D2E4B28 (see above)
    name = (unsupported basic_string<char,char_traits<char> >)
    sleepUntil = 2.10768e-307 (0x0042F1E02C5814E4)

thread_start (wpthread.cpp:624)
    param = 0x005993E8
    ret = 0x6B980350

endthreadex (:0)

endthreadex (:0)

RtlInitializeExceptionChain (:0)

RtlInitializeExceptionChain (:0)


errno = 0 (No error reported here)
OS error = 0 (no error code was set)
#1043 fixed Marker line to rally point still drawn after rally point is unset vts Jonathan Waller
Description

Steps to reproduce:

  1. Set the rally point for a building.
  2. Unset the rally point by right licking on the building itself. (Line and marker vanish).
  3. Deselect the building.
  4. Reselect the building.

Now the rally point is drawn as going to the point which you set initially. Units act properly by staying where they are spawned.

#1044 fixed [PATCH] Autogarrison newly trained units in the production building mimo Jonathan Waller
Description

The player should be able to set the rally point of a building on itself so that trained units are automatically garrisoned. Units should not appear outside of the building at all and ungarrisoning should result in the units being ejected. Will also require a fix for the rally point line drawing code so that the rally point line is removed when the rally point position is set.

#1046 fixed [PATCH] Setting rally point on attackable entities maveric Jonathan Waller
Description

Players may want to set the rally point on an enemy entity and have the trained/ungarrisoned units attack. How should this be implemented for mobile enemies?

#1047 fixed Error on Game Startup gerbilOFdoom
Description

OS: Windows 7 Professional SP1 x32
GPU: nVidia GeForce GTS 250
CPU: Intel Core 2 Duo E6750
RAM: 4GB DDR2 (I know only 3.5 gigs are usable)

Assertion failed: "period_fs <= 0x05F5E100" Location: hpet.cpp:72 (CounterHPET::Activate)

Call stack:

013BE7C2

013B031E

013702BF

errno = 0 (Unknown error (0, 0x0)) OS error = 0 (no error code was set)
#1048 fixed Units can't attack goats michael
Description

Goats trained from the Corral are no longer attackable.

#1049 fixed Error when setting corral rally point on resource historic_bruno
Description

To reproduce:

  1. Build a corral.
  2. Set rally point on any resource.
  3. Train a goat. When it's trained, you get this error:
ERROR: Animal got moved into INDIVIDUAL.* state
#1050 fixed [PATCH] Codeblocks not relinking after static libraries change Yves Yves
Description

Changing something in the static libraries and running "build" does correctly recompile the changed files but does not relink pyrogenesis. The dependency-settings under "Project settings>Project's dependencies" are set correctly, but they only seem to affect the build order rather than the linking behaviour.

According to the Codeblocks Wiki it looks like the dependencies for linking have to be specified separately under "Build targets>Dependencies...>External dependency files". After doing this, the linking worked correctly.

Because our version of premake doesn't support this, another customization is required.

#1052 fixed Rally points set on resource droppoff buildings/farms being constructed should allow for change of focus if building is completed mimo Erik Johansson
Description

Not really a requirement, but it would be a nice improvement if units would e.g. start to gather from a farm if a rally point was set on it before it was finished and start looking for nearby resources if the rally point was set on a farmstead/mill. 

#1053 fixed Add queued / multiple orders to rally points leper historic_bruno
Description

Units support queued orders (waypoints) which the player can use by holding down the shift key when assigning orders. So our rally points should also support queued orders, with the same hotkey. For instance if you want trained units to follow a specific path, you could give multiple rally points with the same shift hotkey. I guess this would require changes to the rally point line renderer to support connecting multiple way points (maybe it should share its implementation with #657) and instead of having a single rally point order, there would be an array with all orders after the first being queued.

#1054 fixed [PATCH] multiplayer with no humans broken Matt Doerksen daemacles
Description

It is possible to host a multiplayer game with only bots. When launched, gui/session/session.js fails because playerState is undefined.

#1057 fixed Fauna animations Zaggy1024 Zaggy1024
Description

Since Blender works for getting animations in the game now, I'm going to start working on making fauna animations.

#1058 fixed [PATCH] Refuse to run as root leper Philip Taylor
Description

Sometimes people try running the game as root (via sudo etc) on Linux. That's terribly insecure, and causes problems if the game tries creating directories like ~/.config/0ad/ in the (non-root) user's home directory while running as root (which I think happens occasionally), because the directory ownership will be wrong.

The game should probably detect on startup that the user is root, and print some error message (saying how it's terribly insecure) and terminate, to stop people doing dangerous things.

#1061 fixed [PATCH] There are identical sub-expressions 'm_totalDeallocatedBytes' to the left and to the right of the '<=' operator. Echelon9
Description

There are identical sub-expressions to the left and to the right of the '<=' operator, likely a logic error.

Proposed patch, based on the surrounding lines as context is attached.

#1062 fixed [PATCH] It is odd that pointer to 'char' type is compared with the '\0' value. Probably meant: *ext == '\0'. Echelon9
Description

A potential error: a pointer to the char type is compared to value '\0'. It is highly probable that the pointer dereferencing operation is missing.

Proposed patch attached.

#1063 fixed [PATCH] The return value of function 'remove_if' is required to be utilized. Echelon9
Description

Calls of some functions are senseless if their results are not used.

Example: The std::remove function does not remove elements from the container. It only shifts the elements and brings the iterator back to the beginning of the trash. Suppose we have the vector<int> container that contains elements 1,2,3,1,2,3,1,2,3. If we execute the code "remove( v.begin(), v.end(), 2 )", the container will contain elements 1,3,1,3,?,?,?, where ? is some trash. The function will bring the iterator back to the first senseless element, so if we want to remove these trash elements, we must write the code this way: "v.erase(remove(v.begin(), v.end(), 2), v.end())".

Proposed code is attached.

#1064 fixed [PATCH] Performance improvement. It is more effective to use the prefix form of ++iterator (vs iterator++) Echelon9
Description

An iterator is changed in the program code by the increment/decrement postfix operator. Since the previous iterator's value is not used, you may replace the postfix operator with the prefix one. In some cases, the prefix operator will work faster than the postfix one, especially in Debug-versions.

The prefix increment operator changes the object's state and returns itself already changed.

The situation with the postfix increment operator is more complicated. The object's state must change but it is the previous state which is returned. So an additional temporary object is created.

Reference: Scott Meyers' Rule 6. Distinguish between prefix increment and decrement operators, in:

Meyers, Scott. More Effective C++: 35 New Ways to Improve Your Programs and Designs. Addison-Wesley, Reading, Mass., 1996. ISBN-10: 020163371X. ISBN-13: 9780201633719.

#1065 fixed [PATCH] Incorrect format on the third actual argument of the 'fprintf' function. The SIGNED integer type argument is expected. Echelon9
Description

Within the ScriptingInterface.cpp file, two occurrences of a format string expecting signed ints when the data itself is an unsigned int.

Proposed fix attached for the two cases in this file.

#1067 fixed Attack bonuses Kieran P
Description

Certain units are stronger against others and weaker against others.

Change Attack.js to support this functinoality.

#1073 fixed Mac OS Lion : compilation script forgets to move dylib files in .app package. pbernery
Description

The produced .app folder is not usable as is because the .dylib files built are not copied or linked in the pyrogenesis folder. When trying to execute pyrogenesis, the following error occurs:

dyld: Library not loaded: @executable_path/libmozjs185-ps-release.1.0.dylib
  Referenced from: <ad>/binaries/system/pyrogenesis.app/Contents/MacOS/./pyrogenesis
  Reason: image not found

I managed to make it work by making a symbolic link of all dylib files in the pyrogenesis folder:

cd <ad>/binaries/system/pyrogenesis.app/Contents/MacOS
ln -s ../../../*.dylib .

The executable launches (on the command line only by typing ./pyrogenesis, not by opening the .app folder) and works pretty well. I just miss the sound but this should be another problem.

#1074 fixed [PATCH] Compile on GCC broken by r10815 Echelon9
Description

An addition in r10815 breaks compilation on GCC flavours with:

source/lib/sysdep/arch/x86_x64/cache.cpp:643: error: explicit qualification in declaration of 'const x86_x64::Cache* x86_x64::Caches(size_t)'

Fix attached.

#1075 fixed Mac OS Lion: building with libSDL from MacPorts disable fullscreen pbernery
Description

The wiki page for build process says to use the libSDL from MacPorts as it the easiest way to install. However, the current version (1.2.14) has a bug on Lion: it can't create fullscreen OpenGL screen (see bug report here).

The bug is fixed in 1.2 development version. We should may be update the install Wiki page.

#1076 fixed Boost spews excessive warnings Josh Matthews
Description

It can be frustrating to find actual errors among all of the boost output. I don't know if this is just an OSX 10.6.8, gcc 4.2.1 thing (since I see mentions of CLANG in the warnings), but it would be nice to get this cleaned up.

#1077 fixed [PATCH] Add bool operator conversion to CmpPtr leper Josh Matthews
Description

Consider the elegance of |if (cmpVisual)| instead of |if (!cmpVisual.null())|.

#1078 fixed [PATCH] Fix unreachable resources on random maps O.Davoodi historic_bruno
Description

Try to avoid placing resources on hills because of the pathfinding issues they cause.

#1082 fixed [PATCH] Add "Random" option for selecting civilizations in match setup. ben O.Davoodi
Description

All of the games have such option when player wants to choose a civ from dropbox.

#1083 fixed Function call failed: wsysdep.cpp:357 and mahaf.cpp:300 Programmer B. Guns
Description

I just tried to build the latest revision (r10828) in Microsoft visual C++ 2010 Express (Administrator) I have windows 7 64 bit. The errors happen both in release and debug mode.

This happens:

  1. This project is out of date: engine - Release Win32 Would you like to build it? I click YES
  1. 2 errors - I posted in Original post. When I suppress both I can start the game though. Starting a game appears to give no problems, Although in debug mode Oasis is painfully slow ( even with my top rig)..
#1084 fixed qBot fails to handle not having a civ center Jonathan Waller gerbilOFdoom
Description

On map Gallic Fields, the Romans do not have a civ center. qBot throws errors because "myCivCentres.toEntityArray()[0]" returns a null value when a civ center is not present. I added a null check, but the error popped back up when the economy portion of qBot couldn't find "accessibility" because it wasn't defined due to my null check. I read something about the game slowing down excessively when a civ center is destroyed, don't know if it has been fixed or not but this is probably the issue. Assigning to quantumstate, pretty sure he's the developer of qBot.

#1085 fixed [PATCH] It's odd that the argument of sizeof() operator is &freqMhz Echelon9
Description

Using the reference operator (&) is going to return the size of the pointer from sizeof(), rather than the size of the object.

Should be using the dereference operator (*).

#1086 fixed [PATCH] Incorrect format on the fourth actual argument of the 'swprintf_s' function. The SIGNED integer type argument is expected. Echelon9
Description

Within the ogl_tex.cpp file, an occurrence of a format string expecting signed int when the data itself is an unsigned int, GLuint.

Proposed patch attached.

#1087 fixed [PATCH] (snd_mgr) Incorrect format on the fourth actual argument of the 'swprintf_s' function. The SIGNED integer type argument is expected. Echelon9
Description

Within the snd_mgr.cpp file, two occurrences of a format string expecting signed int when the data itself is an unsigned int, ALuint.

Proposed patch attached.

#1089 fixed [PATCH] Properly serialize AI data in saved games mimo historic_bruno
Description

AIs require some serializer enhancements to properly save/load their data, unlike the rest of the simulation. We used a hack in Alpha 8, basically resetting the AIs to their initial state when loading a saved game. This is less than ideal because an AI might be in the middle of planning some task when the game was saved, information it would lose under the current system.

#1090 fixed [PATCH] Improve load game UI mimo historic_bruno
Description

Currently when loading a saved game, it shows a list with timestamp and map name for each game. I would like to see at minimum:

  • Timestamp
  • Map name
  • User's description of the game
  • Players
    • Name / player number
    • Civ
    • Status (defeated/active)
  • Elapsed time

Possible enhancements:

  • Small screenshot
  • Game version; mod(s) used

It doesn't all have to be shown on one line, but rather have a common UI panel to display details for the currently selected game.

#1091 fixed Using Windows SDL libs results in manifest problem ben historic_bruno
Description

While working on #935, I noticed the game wouldn't start due to an "application configuration" error after disabling wsdl. It turns out the prebuilt SDL static libs have a different VC80 manifest dependency (8.0.50727.762) than the rest of the game, this results in multiple VC80.CRT entries in the embedded manifest and the error. So the SDL libs should be rebuilt with VC 8.0.50727.4053, which is VC++ 2005 SP 1 with the July 2009 security update applied. Unless there's some other way of solving this :)

#1092 fixed Crash saving games in debug-mode: Compartment mismatch Yves Yves
Description

When saving a game in debug-mode it crashes. Apparently the reason is that SavedGames::Save tries calling "SetProperty" with a value returned by the GUI's scriptinterface using it's own instance of scriptinterface (simulation.GetScriptInterface()).

simulation.GetScriptInterface().SetProperty(metadata.get(), "gui", gui->GetSavedGameData());

Each scriptinterface uses its own Spidermonkey runtime with an own compartment. the Value returned by gui->GetSavedGameData() "contains" another compartment than the one contained in the scriptinterface object of simulation. Spidermonkey checks if they match and raises an exception in debug mode because they don't.

In release mode everything seems to work fine, but there are probably some hidden problems there too because the compartments don't match either.

According to the Spidermonkey documentation objects of one compartment can't be used in another one by default, but there seem to be ways to interchange objects between compartments. I've started looking into spidermonkey a few hours ago, so I don't yet fully understand it. I'll need a bit more time before I know more details and what an appropriate solution would be.

#1093 fixed Create multiple instances of WP Brian Stempin Brian Stempin
Description

We need to create multiple instances of WordPress so that teams can work without fear of accidentally stepping on another team's toes. We need the following installations:

Platform dev Content Skinning/Theme work

plus an additional installation for bringing completed parts of the 3 dev instances together.

#1094 fixed Move current WP installation in with the others Brian Stempin Brian Stempin
Description

The database is full of stuff already. Instead of cluttering it with additional DBs, it would be nice if the current WP installation would move into the development database.

#1095 fixed Identify and install WP plugins Brian Stempin Brian Stempin
Description

The skinning and content folks will need some plugins to do some of their jobs, so plugin installation and testing needs to start. Once installed, others will need to verify that they work as expected and then get those plugins installed into their regions.

#1096 fixed Clean out DB Jan Middelkoop Brian Stempin
Description

Our DB has a lot of cruft in it. Cleaning it out makes DB development easier and saves us some much-needed disk space.

#1097 fixed Clean out the web server's file system Jan Middelkoop Brian Stempin
Description

Our web server has several directories that have fallen out of use and take up space. Some of them are past attempts at creating a new website. Some of them are of unknown origin. Cleaning them out would save space and make site development easier.

#1098 fixed Garrisoned units heal instantly Jonathan Waller
Description

If you garrison and eject a unit it will come out with full health, they should heal gradually over time instead.

#1099 fixed Configure and eval the Musopress Discography WP plugin gerbilOFdoom Brian Stempin
Description

This plugin is for Bandcamp integration. It's installed and needs to be set up and demo-ed.

#1100 fixed Configure and eval the WPBandcamp plugin gerbilOFdoom Brian Stempin
Description

The WPBandcamp plugin has been installed on our plugin-dev WP instance. It needs to be configured and demo-ed.

#1101 fixed Configure and eval the TubePress plugin Brian Stempin Brian Stempin
Description

The TubePress plugin was installed in the plugin-dev WP instance. It needs to be configured and evaluated.

#1102 fixed Configure and eval the NextGEN plugin Brian Stempin Brian Stempin
Description

The NextGEN gallery plugin was installed in the plugin-dev WP instance. It needs to be set up an eval-ed.

#1103 fixed Configure and eval the Google Analytics plugin Geek337 Brian Stempin
Description

This plugin was installed in our plugin-dev WP instance. It needs to be configured and evaluated.

#1106 fixed Repair permission issues with the WP installs Brian Stempin Brian Stempin
Description

File due to: http://www.wildfiregames.com/forum/index.php?showtopic=15524&view=findpost&p=232300

When WP was installed, write permissions weren't given to any of the subdirs. Some of these directories need write permissions in order to have files uploaded, etc. All instances within /0adwebdev must be repaired.

#1107 fixed Identify, install, and eval a few syntax highlighting plugins gerbilOFdoom Brian Stempin
Description

Filed due to: http://www.wildfiregames.com/forum/index.php?showtopic=15524&view=findpost&p=232300

If we're going to have a dev blog, then we definitely need a nice way to show code snippets. I'd like to install a few plugins, let people play with them, and then settle on one.

#1109 fixed [PATCH] Atlas Enhancement: Map re-sizing position Stan michael
Description

In Atlas, I want to be able to choose from where to re-size a map--corners or center.

Attached image may make it clearer.

#1111 fixed [PATCH] aoe3ed - Support WxWidgets 2.9 for ArchiveViewer and FileConverter Yves
Description

I've discussed it with Philip and even though we've decided to remove those components from the repository, I'm uploading the Patch here. It's tested on Ubuntu with wxWidgets 2.8 and on Snow Leopard with wxWidgets 2.9. Maybe someone can use it sometime...

#1112 fixed Script to build OS X dependencies historic_bruno historic_bruno
Description

Developing the game on OS X is a pain, because not only does Xcode need to be installed to get a Unix build environment, but we currently need Mac Ports or equivalent to acquire all the dependencies, since OS X doesn't have a real package manager. This also has the side effect of making the game more difficult to distribute, as it's unknown what versions of the dependencies Mac Ports might have pulled in or how they were built. For Windows developers we already provide prebuilt libraries, the same can be achieved on OS X.

It's proposed to eliminate the Mac Ports requirement by having a script that downloads (optionally) and builds the game's dependencies from source. I'm working on a script now that does just that. This script is only for developers, not the end users. Currently it builds static libs (.a) which get linked into the engine. This avoids the need for install_name_tool fiddling later and other problems like dylib search paths.

We can even go so far as to distribute the prebuilt libraries on separate SVN directories, arranged by OS, similar to what Blender does. This would greatly speed the development process as most have no need or desire to build the dependencies.

#1113 fixed changeset 10895 breaks compilation on mac Juicyfruit
Description

Commit 10895 introduced the use of std::map in globals.h. With my setup the header for map does not seem to be included.

adding the one include did solve the issue

#1114 fixed LLVM warning: Value stored to '*' is never read Echelon9
Description

LLVM compiler warnings of the form -- Value stored to '*' is never read -- have been highlighted in the attached patch.

Each line marked is an assignment to a variable which is then never subsequently read. Some appear redundant, whereas others like ok = JS_CallFunctionValue() are valid function calls where there is no need to save the return value, if we aren't using it later in the codebase.

Any concerns against adjusting or removing each dead store variable accordingly?

#1117 fixed Replace unifont interface with CFontManager philip historic_bruno
Description

Font textures and associated data are currently handled by unifont, which is a low-level C style wrapper around the h_mgr system. It would be better if we had a CFontManager instead to abstract this and provide a central point for loading and reloading fonts (useful for fixing #741). It would mirror other managers we have like CTextureManager and CShaderManager. gDEBugger also indicates we're leaking font textures, maybe implementing this would provide a better means of cleaning them up?

#1118 fixed Identify, install, and eval a twitter plugin MishFTW Brian Stempin
Description

Discussion thread: http://www.wildfiregames.com/forum/index.php?showtopic=15563

#1121 fixed Flat actors cause problems with new selection boxes vts historic_bruno
Description

Some actors like props/flora/water_lillies.xml which are not decals but flat models, can cause selection problems in Atlas. They have a selection box, but the calculation of the box and/or the the algorithm in RayIntersect is failing and causing unpredictable behavior. It's especially noticeable on Belgian Bog, due to the high concentration of such lillies in the center. Clicking in a seemingly open area of the map might select a lilly by mistake. Strangely props/flora/pond_lillies_large.xml does not have this problem.

It's easy to test on a blank map. I put a breakpoint in the selection code and found the CBoundingBoxOriented data for water_lillies:

m_Center = {X=298.17743 Y=22.402514 Z=378.40604 }
m_HalfSizes = {X=1.8804212 Y=0.00000000 Z=1.8804319 }
m_Basis
   [0] = {X=0.70711076 Y=0.00000000 Z=0.70710266 }
   [1] = {X=-1.#IND000 Y=-1.#IND000 Z=-1.#IND000 }
   [2] = {X=-0.70709860 Y=0.00000000 Z=0.70711488 }

compared with the data for pond_lillies_large:

m_Center = {X=297.05060 Y=22.391361 Z=382.82440 }
m_HalfSizes = {X=10.045100 Y=9.5367432e-007 Z=9.4280548 }
m_Basis
   [0] = {X=0.70711213 Y=0.00000000 Z=0.70710146 }
   [1] = {X=0.00000000 Y=1.0000000 Z=0.00000000 }
   [2] = {X=-0.70710194 Y=0.00000000 Z=0.70711166 }

Notice the first example has -1.#IND000 values in one of its basis vectors, which means "indeterminate" value. The height of the bounding box (m_HalfSizes.Y) is exactly 0. The second example has sane values. Maybe we could detect completely flat models and give them a small selection box height or specially handle 2D intersection in 3D space. I guess a similar problem would occur with a vertically-oriented flat model, so the best solution is probably independent of orientation.

#1122 fixed [PATCH] Add terrain eyedropper tool / show current texture ben historic_bruno
Description

Patch to add an eyedropper tool to Atlas, like what most paint programs have. It samples the terrain texture under the brush and makes it the currently selected texture. It's very handy for expanding texture areas. The patch also adds a box in the terrain panel to show current brush texture.

#1124 fixed [PATCH] Deposit resources when garrisoned in a dropsite Matt Doerksen Jonathan Waller
Description

When you garrison units in a dropsite (e.g. Civil Centre) they should deposit any resources which they are carrying.

#1128 fixed WP Theming - Rough Body MishFTW Brian Stempin
Description

This ticket is for modifying index.php, home.php, and style.css to create a rough version of our theme. index.php handles things like the page width, background, etc. Once basic CSS, HTML, and PHP are put into place, artwork needs to be identified and requested.

#1129 fixed WP Theming - Rough Header MishFTW Brian Stempin
Description

This ticket is for modifying header.php and style.css to create a rough version of our theme's header. Once basic CSS, HTML, and PHP are put into place, artwork needs to be identified and requested.

#1130 fixed WP Theming - Rough Footer MishFTW Brian Stempin
Description

This ticket is for modifying footer.php and style.css to create a rough version of our theme. Once basic CSS, HTML, and PHP are put into place, artwork needs to be identified and requested.

#1131 fixed WP Theming - Theme boilerplate Brian Stempin Brian Stempin
Description

In order to create a theme, we need to create some boilerplate. It was suggested that we base our theme off of the WP default theme. We need to make a copy of a base theme, rename it, change the license and other information in the comments of each file within the theme, and check it into GitHub so that others can begin work.

#1132 fixed WP Theming - Rough Page Brian Stempin Brian Stempin
Description

This ticket is for modifying page.php and style.css to create a rough version of our theme. Once basic CSS, HTML, and PHP are put into place, artwork needs to be identified and requested.

#1134 fixed Install WP jQuery UI Plugin MishFTW MishFTW
Description

The jQuery User Interface library is now easier to integrate with WordPress via this plugin. Very customizable and a time saver.

#1136 fixed SSE skinning bug (seen on sheep) historic_bruno
Description

There's a problem with the SSE skinning code, which is most noticeable on sheep: the upper back part of the sheep model "flashes" when animated and it looks bad. The problem is not noticeable when using the non-SSE path.

#1137 fixed WP Theming - Rough Sidebar MishFTW MishFTW
Description

This ticket is for modifying sidebar.php (to include all widgets and plugins) and call it it in all pages.

#1138 fixed [PATCH] Resolve GLSL shader support compile errors Echelon9
Description

Changeset r10978 introduced GLSL support (http://trac.wildfiregames.com/changeset/10978)

There is a mistake in the way the class CShaderProgramGLSL implements pglCreateShaderObjectARB(). pglCreateShaderObjectARB()'s return type is GLhandleARB, and thus m_Program, m_VertexShader and m_FragmentShader should be variables of type GLhandleARB.

Patch attached to fix this.

#1140 fixed Signed/unsigned comparison warning on FreeBSD philip historic_bruno
Description

This warning occurs almost constantly when building on FreeBSD:

../../../source/lib/os_path.h: In function 'std::string OsString(const OsPath&)':
../../../source/lib/os_path.h:48: warning: comparison between signed and unsigned integer expressions

I checked the system headers and UCHAR_MAX is indeed defined as 0xffU, but it seems wchar_t is actually an int on FreeBSD.

#1141 fixed SEO Plugin Brian Stempin Kieran P
Description

Should test and install SEO plugins to:

  • Get pretty URLs
  • Improve search results (for any sites that still use meta tag data)
#1142 fixed [PATCH] TestCLogger::test_unicode() failure on FreeBSD leper historic_bruno
Description
Running 258 tests............................................................................................................APIC: all zero
..............................................................................................................
In TestCLogger::test_unicode:
../../../source/ps/tests/../../../source/ps/tests/test_CLogger.h:100: Error: Expected (lines[0] == "\xC3\xA2 \xC4\xA7"), found ("" != �� ��)
.......................................
Failed 1 of 258 tests
Success rate: 99%
#1143 fixed Assertion failed: "p" Location: trace.cpp:218 (Trace::Allocate) philip historic_bruno
Description

People are starting to report this error and I'm encountering it too, both in Atlas and in-game. Not sure how to reproduce it yet, but it seems to occur when loading cached shader effects (with pathnames like {cache/shaders/effects/gui_text.xml.5b6f514af325a701.xmb}):

Assertion failed: "p"
Location: trace.cpp:218 (Trace::Allocate)

pyrogenesis.exe!Trace::NotifyLoad(const Path & pathname, unsigned int size)  Line 160 + 0x39 bytes	C++
pyrogenesis.exe!VFS::LoadFile(const Path & pathname, boost::shared_ptr<unsigned char> & fileContents, unsigned int & size)  Line 187	C++
pyrogenesis.exe!CXeromyces::ReadXMBFile(const boost::shared_ptr<IVFS> & vfs, const Path & filename)  Line 162 + 0x1c bytes	C++
pyrogenesis.exe!CXeromyces::Load(const boost::shared_ptr<IVFS> & vfs, const Path & filename)  Line 90 + 0x10 bytes	C++
pyrogenesis.exe!CShaderManager::LoadEffect(const char * name, const std::map<CStr8,CStr8,std::less<CStr8>,std::allocator<std::pair<CStr8 const ,CStr8> > > & baseDefines)  Line 259	C++
pyrogenesis.exe!CGUI::DrawText(SGUIText & Text, const CColor & DefaultColor, const CPos & pos, const float & z, const CRect & clipping)  Line 907 + 0x86 bytes	C++
pyrogenesis.exe!IGUITextOwner::DrawText(int index, const CColor & color, const CPos & pos, float z, const CRect & clipping)  Line 97 + 0x1c bytes	C++
pyrogenesis.exe!CButton::Draw()  Line 120	C++
pyrogenesis.exe!GUI<int>::RecurseObject(int RR, IGUIObject * pObject, void (void)* pFunc)  Line 324	C++
pyrogenesis.exe!GUI<int>::RecurseObject(int RR, IGUIObject * pObject, void (void)* pFunc)  Line 326 + 0xd bytes	C++
pyrogenesis.exe!GUI<int>::RecurseObject(int RR, IGUIObject * pObject, void (void)* pFunc)  Line 326 + 0xd bytes	C++
pyrogenesis.exe!GUI<int>::RecurseObject(int RR, IGUIObject * pObject, void (void)* pFunc)  Line 326 + 0xd bytes	C++
pyrogenesis.exe!GUI<int>::RecurseObject(int RR, IGUIObject * pObject, void (void)* pFunc)  Line 326 + 0xd bytes	C++
pyrogenesis.exe!GUI<int>::RecurseObject(int RR, IGUIObject * pObject, void (void)* pFunc)  Line 326 + 0xd bytes	C++
pyrogenesis.exe!GUI<int>::RecurseObject(int RR, IGUIObject * pObject, void (void)* pFunc)  Line 326 + 0xd bytes	C++
pyrogenesis.exe!CGUI::Draw()  Line 453 + 0x17 bytes	C++
pyrogenesis.exe!CGUIManager::Draw()  Line 278 + 0x8 bytes	C++
pyrogenesis.exe!Render()  Line 253	C++
pyrogenesis.exe!Frame()  Line 391	C++
pyrogenesis.exe!RunGameOrAtlas(int argc, const char * * argv)  Line 501 + 0x5 bytes	C++
pyrogenesis.exe!main(int argc, char * * argv)  Line 536 + 0xc bytes	C++
pyrogenesis.exe!wmain(int argc, wchar_t * * argv)  Line 380 + 0xa bytes	C++
pyrogenesis.exe!__tmainCRTStartup()  Line 552 + 0x17 bytes	C
pyrogenesis.exe!CallStartupWithinTryBlock()  Line 397	C++
kernel32.dll!7651339a()
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	
ntdll.dll!77b89ef2()
ntdll.dll!77b89ec5()
#1144 fixed [PATCH] Add PreferredClasses and RestrictedClasses to Attack component Zsolt Dollenstein historic_bruno
Description

This is an idea to solve the following problems:

  • Some units can attack entities they shouldn't be allowed to attack:
    • Females can attack anything
    • Animals can attack buildings
  • Units always attack the nearest enemy entity when not otherwise occupied:
    • Siege weapons chase units when they should be attacking structures instead

PreferredClasses is proposed to list classes of entities that the unit prefers to attack, in other words this would change the current UnitAI behavior.

RestrictedClasses is proposed to list classes of entities the unit is never allowed to attack, this could be checked in UnitAI as well as the Attack component.

The classes would come from those specified in the Identity component ("Unit", "Structure", "Cavalry", etc.)

#1145 fixed [PATCH] Improve game data paths in OS X and Windows historic_bruno historic_bruno
Description

Paths could be greatly improved for usability and to follow OS conventions on Windows and OS X. The current vision is something like this table with a few tweaks as I go along. To summarize discussions to this point:

  • On Windows, %appdata% or %localappdata% are used for behind-the-scenes data the game creates, and are considered more obscure locations than, say, My Documents. Most users don't even know they exist. So we should use %localappdata% for cache for the reasons given here, and My Documents for most other things like saved games, screenshots, and the proposed user mod. Config and log locations are still up in the air, because at this stage people are often wanting to access the config and log files directly (for troubleshooting things), hopefully less often as we get closer to beta.
    • Implementation is straightforward, just copying and pasting code in wutil.
  • On OS X, ~/Library/Application Support is what we're supposed to use for our run-time game data, with the exception of preferences and cache. Since we're unlikely to switch to using NSPreferences, we can ignore than suggestion, but cache should probably go in ~/Library/Caches (the main distinction is that Application Support is included in backups but Caches is not). However, Application Support is hidden on Lion, so it doesn't seem the best place for saved games, screenshots, and other friendly data. We can use ~/Documents instead.
    • Implementation should use NSSearchPathForDirectoriesInDomains implemented in Objective-C with a plain C wrapper. I hope this will work with Premake and gcc with little extra work, I don't know because we don't have any Objective-C code yet :)
    • There may be some weird cases to test, like what happens if the app bundle is run in "sandbox" mode or if the directory doesn't exist.
#1148 fixed Problem building Objective-C/C++ with Premake ben historic_bruno
Description

While working on #1145, I noticed there are problems building Objective-C/C++ code, used for the Cocoa API on OS X. Until now this hasn't been a problem, but I do need to write some Obj-C to solve that ticket. Premake supports Obj-C source files (*.m, *.mm) and GCC is capable of compiling them, so I think the problem is how we're using Premake.

The first issue is *.m and *.mm files are not being picked up when Premake searches for files to include in the project. That doesn't seem too difficult to fix, I just modified one line of premake4.lua. The other problem is that the C++ precompiled headers are automatically getting included in the Objective-C source, which is bad, many of the libraries can't be compiled in Obj-C and we don't need them, so we shouldn't even try that. I don't think we'll have enough Obj-C code that we'll need precompiled headers just for them, so maybe we can leave PCH out entirely for Obj-C source files?

I manually edited the Makefile and removed the PCH bits for my one Obj-C source file, everything compiled and ran fine, so we're tantalizingly close to supporting this :)

#1150 fixed Units don't autohunt animals over 10 HP historic_bruno
Description

Since [9046] units tasked to hunt are allowed to hunt any animals but afterward they will filter out remaining nearby animals over 10HP as "unhuntable", which excludes most animals except chickens at 5HP. This is a workaround for AIs, which have no clue what their units are doing if not idle.

It's proposed to remove this hack entirely: let units autohunt everything and fix the real bug on the AI side, by providing UnitAI state info (at least current order and target entity). Then the AI can monitor it's own entities and keep them from doing what it considers a waste of time.

#1152 fixed [PATCH] Rome support, defense tower fix for Jubot James Baillie gudo
Description

The attached patch does:

Adds support for Rome Fixes scout_tower/defense_tower naming issues Improves documentation tweaks some internal values

#1153 fixed WP Theming - Rough Post MishFTW Brian Stempin
Description

Our rough page is in place, but we now need to make sure that posts display correctly.

#1154 fixed WP Theming - Rough Donation Widget Brian Stempin Brian Stempin
Description

Our front page is supposed to have a donation widget. We need to figure out how to get this moving and to request any needed artwork.

#1155 fixed WP Widget Dev - Community Activity Brian Stempin Brian Stempin
Description

We have a widget on our page that is supposed to scrape an RSS feed from our forum to show some of the latest activity. We need to figure out how to make this work (eg, setting parameters and configurations).

#1156 fixed WP Widget Dev - YouTube Widget gerbilOFdoom Brian Stempin
Description

We want to be able to put a YT video right into the side bar.

#1157 fixed WP Theming - Rough Menus MishFTW Brian Stempin
Description

The menus described in the prototype image are pretty complex. Time to whip out some CSS-FU!

#1158 fixed WP Theming - Rough image carrousel Brian Stempin Brian Stempin
Description

The top of our prototype has an image carrousel before the rest of the page content. This needs to be implemented and styled.

#1159 fixed WP Theming - header image Brian Stempin
Description

We need to get our artwork for the header down. We can simply make that "download" button into an image map.

#1160 fixed WP Theming - Menu header backgrounds Art Department Brian Stempin
Description

We need the image for the background on the menu bar underneath the header image. In order to make things more maintainable, it'd be nice if we were told which color to make the div and we were supplied with a texture PNG to layer over top. That way, we could easily change parts of our theme without requesting new art.

#1161 fixed WP Theming - Menu item mouse-over arg Art Department Brian Stempin
Description

We need the art work for what should appear when a user mouses over a menu item. It would be nice if we were supplied with a texture that we could apply a solid color underneath via CSS, allowing us to change colors without requesting new art.

#1162 fixed WP Theming - Arrow images for image carrousel Art Department Brian Stempin
Description

The image carrousel in our prototype has some fancy-dancy arrows used to scroll through the images. We need art for these arrows so that we can appropriately style the gallery on the front page.

#1163 fixed [PATCH][ATLAS] Object placement constraints trompetin17 historic_bruno
Description

I think this would be a good addition to Atlas, to prevent problems like #656, where entities can be placed on the very fringe of the map circle, but because of pathfinder passability they get stuck. Of course it should still be possible to place objects anywhere on the map for unusual circumstances, but as an option, we can add placement constraints. For instance boats shouldn't be built on land, most buildings shouldn't be built in water. I think this can all be done by adding some logic to the create object handler to make it check pathfinding classes, similar to what building restrictions and unit spawning already do in-game. Though that wouldn't work for gaia objects like trees unless we assign them some default passability, maybe there's a better way to handle it.

As a visual indicator, we can apply some shading to the entity preview if it's hovering an invalid location, like we do for building previews.

#1164 fixed [PATCH] Add garrison related functions to AI common API Jonathan Waller gudo
Description

While sorting through the changes that Rootbot made to entity.js, I came across a few garrison related changes that I think could be useful for inclusion in the official common API.

#1165 fixed [PATCH] remaining rootbot modifications Jonathan Waller gudo
Description

I've finished digging through rootbot's modifications to entity.js. These are the last of the changes I think should be considered for inclusion in the mainline common api.

#1166 fixed [PATCH] Add <RubbleActor> tag in <VisualActor> Element for Building Templates ben michael
Description

It would be nice to have a <RubbleActor> tag added for the <VisualActor> element in building entity templates, like so:

  <VisualActor>
    <FoundationActor>structures/fndn_2x2.xml</FoundationActor>
    <Actor>props/special/palisade_rocks_outpost.xml</Actor>
    <RubbleActor>structures/rubble_2x2.xml</RubbleActor>
  </VisualActor>

The specified Rubble actor would appear on the ground when a building dies and collapses. It would then "decay" sink or fade at some specified rate. Perhaps with another new element, like:

  <RubbleDecay>
    <DelayTime>30.0</DelayTime>
    <SinkRate>0.5</SinkRate>
    <SinkAccel>0.5</SinkAccel>
  </RubbleDecay>

The above is similar to the <Decay> element, but specifically for the <RubbleActor>.

Like animal or human corpses, these "Rubble" actors can be built over. They have no obstruction or footprint.


This ticket has been split off from ticket #131.

Ticket #819 (Destruction dust) is related, but will possibly need a different solution.

#1167 fixed [PATCH] Improve COLLADA caching and add to archive builder ben historic_bruno
Description

Problems solved in this patch:

  • Modifying skeletons.xml should invalidate the model/animation cache, since the COLLADA converter depends on it for skeletal models, this will reduce modeling confusion
  • CColladaManager uses a weird old caching technique, it should use CCacheLoader instead, with hash keyed on skeletons.xml and converter version. Also essential for using archive builder
  • Archive builder should convert DAEs like it does textures and XML, this will give a slight performance boost and smaller release download, but the main benefit is not requiring the COLLADA converter
    • Note: it skips over broken DAEs, these would trigger errors if used in the game anyway, so there's no advantage in archiving them
  • Fixes archive builder on Windows, there was a minor OS path separator issue when mounting the archive cache
#1168 fixed [PATCH] civ typos ben bird
Description

Just fixed some typos in the civ history folder.

==

History section

-under Romans->heroes->Sulla

missing hyphen between dates

-Iberian heroes change to B.C. instead of BCE for consistency

==

sorry if I made any mistakes!

#1169 fixed [PATCH] BCE/BC consistency bird
Description

On the pregame tips screen, the Variato had "BCE". I just changed this to B.C. for consistency's sake.

#1170 fixed [PATCH] Granicus river map minor typo bird
Description

Another minor typo.

Thefirst --> The first.

Edited the XML file.

#1172 fixed Rally lines take circuitous routes for non-square buildings vts michael
Description

Rally lines sometimes look goofy. "Goofy" is defined by looking at the attached image.

This looks like mostly an issue with round buildings, though rectangular or non-square buildings have goofiness as well (see image).

#1173 fixed [PATCH] Make rally points work for trade Deiz Jonathan Waller
Description

When setting the rally point for a market on another market, any trained traders should automatically start a trade route between the two markets.

#1174 fixed Buildings rise into place as they are constructed historic_bruno michael
Description

As creating multiple instances of buildings in various states of construction would be cost prohibitive in manpower, a good alternative would be to have the buildings rise into place as they are being constructed. Their position would be relative to their percentage complete. They would rise up through the foundation and through the construction dust into place.

#1175 fixed WP Theming - Rough Download Button MishFTW MishFTW
Description

http://www.wildfiregames.com/forum/index.php?showtopic=15688

#1176 fixed [PATCH] Fix Atlas starting canvas resolution on OS X Mitchell K historic_bruno
Description

Looks like the Atlas canvas init problem is back on OS X, the resolution is stuck on the default 320x240 instead of being updated to the full window size. I remember fixing this at some point but it's broken again. If you resize the window, the resolution gets updated properly, so it's just a matter of getting the initialization correct, I remember there's a specific init order that needs to be followed with our combination of SDL and wxWidgets.

#1177 fixed WP Themeing - Download Button Art michael MishFTW
Description

An image overlay for the download button.

#1178 fixed precompiled.h: clang warnings about c-header ben historic_bruno
Description

Building on OS X with their Command Line Tools for Xcode - February 2012 package, I get warnings like the following related to precompiled.h:

precompiled.h
clang: warning: treating 'c-header' input as 'c++-header' when in C++ mode, this behavior is deprecated

Compiler info:

  • i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.9.00)
  • Apple clang version 3.1 (tags/Apple/clang-318.0.45) (based on LLVM 3.1svn) Target: x86_64-apple-darwin11.3.0 Thread model: posix

Philip noticed this last year and mentioned a possible solution.

#1179 fixed Warnings building Premake on OS X leper historic_bruno
Description

I get the following warnings running ./update-workspaces.sh with Apple's Command Line Tools for Xcode - February 2012:

Linking Premake4
clang: warning: argument unused during compilation: '-rdynamic'
ld: warning: option -s is obsolete and being ignored

The ld warning is not new, but seems the more serious, if that option gets removed in the future it would turn into an error. I don't know if that will happen since it would break compatibility. From the ld manpage on OSX:

     -s          Completely strip the output, including removing the sym-
                 bol table.  This file format variant is no longer sup-
                 ported.  This option is obsolete.

Doesn't seem like an especially useful option anyway :)

Is it possible to generate the contents of premake4\build\gmake.unix for each OS? FreeBSD even encounters an error building Premake, as there's no libdl (the -ldl linker flag causes an error). It seems best if we don't assume a single "Unix" build is good enough because there are a variety of conflicting situations.

#1180 fixed h_mgr crashes with "Not enough memory" historic_bruno
Description

Build: r11165 Visual C++ 2010 EE
OS: Windows 7 Pro 64-bit

To reproduce:

  • Start Atlas
  • Open Combat demo (huge) map
  • Start simulation test
  • Send armies rushing into each other
  • Wait a few minutes
  • Crash!

I understand this happens on other maps as well and seems to be triggered by sounds during battle.

Full error message:

Function call failed: return value was -100033 (Not enough memory)
Location: h_mgr.cpp:464 (alloc_new_handle)

Call stack:

alloc_new_handle (h_mgr.cpp:464)
    type = 0x01A2FA80 -> 
        init = 0x01466760 -> (VSrc_init)
        reload = 0x014667F0 -> (VSrc_reload)
        dtor = 0x01466780 -> (VSrc_dtor)
        validate = 0x01466D60 -> (VSrc_validate)
        to_string = 0x01466F70 -> (VSrc_to_string)
        user_size = 80 (0x00000050)
        name = 0x019000C4 -> "VSrc"

    vfs = 0x01A31908 -> 
        px = 0x00611858 -> (IVFS)
        pn = 
            pi_ = 0x005F8E90 -> 
                use_count_ = 6 (0x00000006)
                weak_count_ = 1 (0x00000001)



    pathname = 0x048FF2BC -> 
        path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
        separator = [8] { 47 ('/'), (uninitialized), (uninitialized), (uninitialized), (uninitialized), (uninitialized), (uninitialized), (uninitialized) }

    key = 1061576240 (0x3F465E30)
    flags = 17 (0x00000011)
    init_args = 0x048FF208 -> 0x048FF25C -> [8] { 68 ('D'), 243, 143, 4, 230, 47 ('/'), 24, 1 }
    hd = 0x00000000
    err = (uninitialized)
    idx = (uninitialized)
    tag = (uninitialized)
    h = (uninitialized)

h_alloc (h_mgr.cpp:536)
    type = 0x01A2FA80 (see above)
    vfs = 0x01A31908 (see above)
    pathname = 0x048FF2BC (see above)
    flags = 17 (0x00000011)
    key = 1061576240 (0x3F465E30)
    s = (H_ScopedLock)
    h = 0 (0x0000000000000000)
    args = 0x048FF25C (see above)

snd_open (snd_mgr.cpp:1333)
    vfs = 0x01A31908 (see above)
    pathname = 0x048FF2BC (see above)

CSoundGroup::PlayNext (soundgroup.cpp:157)
    pathname = 
        path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
        separator = 47 ('/')

    hs = (uninitialized)
    this = 0x0DE30638 -> 
        m_index = 9 (0x00000009)
        m_hReplacement = -3617008641903833651 (0xCDCDCDCDCDCDCDCD)
        snd_group = (unsupported vector<__int64 >)
        filenames = (unsupported vector<basic_string<wchar_t,char_traits<wchar_t> > >)
        playtimes = (unsupported vector<float >)
        m_filepath = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = "/췍ꉘⅧ㭐✜췍췍췍췍췍췍"

        m_intensity_file = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
        m_CurTime = 0.000000 (0x00000000)
        m_TimeWindow = -431602080.000000 (0xCDCDCDCD)
        m_IntensityThreshold = 100 (0x00000064)
        m_Intensity = 100 (0x00000064)
        m_Decay = 3.000000 (0x40400000)
        m_Flags = [8] { 7 (0x07), 205 (0xCD), 205 (0xCD), 205 (0xCD), 154 (0x9A), 153 (0x99), 153 (0x99), 62 (0x3E) }
        m_Gain = 0.300000 (0x3E99999A)
        m_Pitch = 1.000000 (0x3F800000)
        m_Priority = 100.000000 (0x42C80000)
        m_ConeOuterGain = 1.000000 (0x3F800000)
        m_PitchUpper = 1.100000 (0x3F8CCCCD)
        m_PitchLower = 0.900000 (0x3F666666)
        m_GainUpper = 0.500000 (0x3F000000)
        m_GainLower = 0.400000 (0x3ECCCCCD)
        m_ConeInnerAngle = 360.000000 (0x43B40000)
        m_ConeOuterAngle = 360.000000 (0x43B40000)

    position = 0x048FF3E0 -> 
        X = 211.190659 (0x435330CF)
        Y = 22.381821 (0x41B30DF8)
        Z = 330.809692 (0x43A567A4)


CCmpSoundManager::PlaySoundGroup (ccmpsoundmanager.cpp:130)
    this = 0x09921878 -> 
        
            
                m_EntityId = 1 (0x00000001)
                m_SimContext = 0x097FCC20 -> 
                    m_ComponentManager = 0x097FCC30 -> 
                        m_ScriptInterface = 
                            m = (auto_ptr<ScriptInterface_impl>)

                        m_SimContext = 0x097FCC20 (see above)
                        m_CurrentComponent = 0 (0x00000000)
                        m_CurrentlyHotloading = false
                        m_ComponentTypesById = (unsupported map<int,CComponentManager::ComponentType >)
                        m_ComponentsByInterface = (unsupported vector<boost::unordered_map<size_t,IComponent *,boost::hash<size_t>,equal_to<size_t> > >)
                        m_ComponentsByTypeId = (unsupported map<int,map<size_t,IComponent * > >)
                        m_LocalMessageSubscriptions = (unsupported map<int,vector<int > >)
                        m_GlobalMessageSubscriptions = (unsupported map<int,vector<int > >)
                        m_ComponentTypeIdsByName = (unsupported map<basic_string<char,char_traits<char> >,int >)
                        m_MessageTypeIdsByName = (unsupported map<basic_string<char,char_traits<char> >,int >)
                        m_MessageTypeNamesById = (unsupported map<int,basic_string<char,char_traits<char> > >)
                        m_InterfaceIdsByName = (unsupported map<basic_string<char,char_traits<char> >,int >)
                        m_DestructionQueue = (unsupported vector<size_t >)
                        m_NextScriptComponentTypeId = 78 (0x0000004E)
                        m_NextEntityId = 1300 (0x00000514)
                        m_NextLocalEntityId = 536870946 (0x20000022)
                        m_RNG = 
                            lcf = 
                                _x = 160475196953485 (0x000091F38B1C138D)



                    m_UnitManager = 0x006A1EE8 -> 
                        m_Units = (unsupported vector<CUnit * >)
                        m_ObjectManager = 0x0986A8A4 -> 
                            m_MeshManager = 0x0986A85C -> 
                                m_MeshMap = 
                                    table_ = 
                                        
                                            
                                                buckets_ = 0x005F1978 -> 
                                                    next_ = 0x00000000

                                                bucket_count_ = 29 (0x0000001D)
                                                allocators_ = 
                                                    
                                                        (unsupported )
                                                        (unsupported )



                                            
                                                current_ = false
                                                funcs_ = [2] { (too much output; skipping to next top-level symbol),  }

                                            size_ = 27 (0x0000001B)
                                            mlf_ = 1.000000 (0x3F800000)
                                            cached_begin_bucket_ = 0x005F197C -> 
                                                next_ = 0x20C87D80 -> 
                                                    next_ = 0x00000000


                                            max_load_ = 29 (0x0000001D)



                                m_ColladaManager = 0x0986A850 -> 
                                    m = 0x09851A58 -> 
                                        dll = 
                                            m_Name = 0x01873018 -> "Collada"
                                            m_Handle = 0x00000000

                                        set_logger = 0xCDCDCDCD -> 
                                        set_skeleton_definitions = 0xCDCDCDCD (see above)
                                        convert_dae_to_pmd = 0xCDCDCDCD (see above)
                                        convert_dae_to_psa = 0xCDCDCDCD (see above)
                                        m_VFS = 
                                            px = 0x00611858 (see above)
                                            pn = 
                                                pi_ = 0x005F8E90 (see above)



                                    m_VFS = 
                                        px = 0x00611858 (see above)
                                        pn = 
                                            pi_ = 0x005F8E90 (see above)




                            m_SkeletonAnimManager = 0x0986A880 -> 
                                m_Animations = 
                                    table_ = 
                                        
                                            
                                                buckets_ = 0x005EAFD0 -> 
                                                    next_ = 0x0B86B010 -> 
                                                        next_ = 0x0B86AF60 -> 
                                                            next_ = 0x00000000



                                                bucket_count_ = 29 (0x0000001D)
                                                allocators_ = 
                                                    
                                                        (unsupported )
                                                        (unsupported )



                                            
                                                current_ = false
                                                funcs_ = [2] { { data_ = { buf = [1] { [8] { 205, 205, 205, 21, 0, 0, 0, 0 } }, align_ = 
                                                                t0 = 205
                                                                t1 = 205
                                                                t2 = 205
                                                                t3 = 205
                                                                t4 = 205
                                                                t5 = 205
                                                                t6 = 205
                                                                t7 = 205
                                                                t8 = 205
                                                                t9 = 205
                                                                t10 = 205
                                                                t11 = 205
                                                                t12 = 205
                                                                t13 = 205
                                                                t14 = 205
                                                                t15 = 205
                                                                t16 = 205
                                                                t17 = 205
                                                                t18 = 205
                                                                t19 = 205
                                                                t20 = 205
                                                                t21 = 205
                                                                t22 = 205
                                                                t23 = 205
 } }, { data_ = { buf = [1] { [8] { 205, 205, 21, 0, 0, 0, 0, 0 } }, align_ = 
                                                                t0 = 205
                                                                t1 = 205
                                                                t2 = 205
                                                                t3 = 205
                                                                t4 = 205
                                                                t5 = 205
                                                                t6 = 205
                                                                t7 = 205
                                                                t8 = 205
                                                                t9 = 205
                                                                t10 = 205
                                                                t11 = 205
                                                                t12 = 205
                                                                t13 = 205
                                                                t14 = 205
                                                                t15 = 205
                                                                t16 = 205
                                                                t17 = 205
                                                                t18 = 205
                                                                t19 = 205
                                                                t20 = 205
                                                                t21 = 205
                                                                t22 = 205
                                                                t23 = 205
 } } }

                                            size_ = 21 (0x00000015)
                                            mlf_ = 1.000000 (0x3F800000)
                                            cached_begin_bucket_ = 0x005EAFD0 (see above)
                                            max_load_ = 29 (0x0000001D)



                                m_ColladaManager = 0x0986A850 (see above)

                            m_Simulation = 0x097E20A8 -> 
                                m = 0x097FCC20 (see above)

                            m_Objects = (unsupported map<CObjectManager::ObjectKey,CObjectEntry * >)
                            m_ObjectBases = (unsupported map<CStrW,CObjectBase * >)


                    m_Terrain = 0x097FFB10 -> 
                        m_MapSize = 145 (0x00000091)
                        m_MapSizePatches = 9 (0x00000009)
                        m_Patches = 0x0E0CF7C4 -> 
                            
                                m_WorldBounds = 
                                    m_Data = [2] 
                                        
                                            X = 0.000000 (0x00000000)
                                            Y = 0.000000 (0x00000000)
                                            Z = 0.000000 (0x00000000)

                                        
                                            X = 64.000000 (0x42800000)
                                            Y = 22.382513 (0x41B30F63)
                                            Z = 64.000000 (0x42800000)


                                m_Transform = 
                                    _11 = 1.000000 (0x3F800000)
                                    _21 = 0.000000 (0x00000000)
                                    _31 = 0.000000 (0x00000000)
                                    _41 = 0.000000 (0x00000000)
                                    _12 = 0.000000 (0x00000000)
                                    _22 = 1.000000 (0x3F800000)
                                    _32 = 0.000000 (0x00000000)
                                    _42 = 0.000000 (0x00000000)
                                    _13 = 0.000000 (0x00000000)
                                    _23 = 0.000000 (0x00000000)
                                    _33 = 1.000000 (0x3F800000)
                                    _43 = 0.000000 (0x00000000)
                                    _14 = 0.000000 (0x00000000)
                                    _24 = 0.000000 (0x00000000)
                                    _34 = 0.000000 (0x00000000)
                                    _44 = 1.000000 (0x3F800000)
                                    _data = [16] 
                                        1.000000 (0x3F800000)
                                        0.000000 (0x00000000)
                                        0.000000 (0x00000000)
                                        0.000000 (0x00000000)
                                        0.000000 (0x00000000)
                                        1.000000 (0x3F800000)
                                        0.000000 (0x00000000)
                                        0.000000 (0x00000000)
                                        0.000000 (0x00000000)
                                        0.000000 (0x00000000)
                                        1.000000 (0x3F800000)
                                        0.000000 (0x00000000) ...
                                    _data2d = [4] 
                                        [4] { 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                                        [4] { 0.000000 (0x00000000), 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                                        [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000), 0.000000 (0x00000000) }
                                        [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000) }

                                m_InvTransform = 
                                    _11 = -431602080.000000 (0xCDCDCDCD)
                                    _21 = -431602080.000000 (0xCDCDCDCD)
                                    _31 = -431602080.000000 (0xCDCDCDCD)
                                    _41 = -431602080.000000 (0xCDCDCDCD)
                                    _12 = -431602080.000000 (0xCDCDCDCD)
                                    _22 = -431602080.000000 (0xCDCDCDCD)
                                    _32 = -431602080.000000 (0xCDCDCDCD)
                                    _42 = -431602080.000000 (0xCDCDCDCD)
                                    _13 = -431602080.000000 (0xCDCDCDCD)
                                    _23 = -431602080.000000 (0xCDCDCDCD)
                                    _33 = -431602080.000000 (0xCDCDCDCD)
                                    _43 = -431602080.000000 (0xCDCDCDCD)
                                    _14 = -431602080.000000 (0xCDCDCDCD)
                                    _24 = -431602080.000000 (0xCDCDCDCD)
                                    _34 = -431602080.000000 (0xCDCDCDCD)
                                    _44 = -431602080.000000 (0xCDCDCDCD)
                                    _data = [16] 
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD) ...
                                    _data2d = [4] 
                                        [4] { -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD) }
                                        [4] { -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD) }
                                        [4] { -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD) }
                                        [4] { -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD) }

                                m_RenderData = 0x24017758 -> 
                                    m_UpdateFlags = 0 (0x00000000)

                                m_BoundsValid = true 

                            m_bWillBeDrawn = false
                            m_MiniPatches = [16] 
                                [16] 
                                    
                                        Tex = 0x0BA83E80 -> 
                                            m_Tag = { (unsupported basic_string<char,char_traits<char> >) }
                                            m_pProperties = 
                                                px = 0x0D004520 -> 
                                                    m_pParent = 
                                                        px = 0x0D0044A8 -> 
                                                            m_pParent = 
                                                                px = 0x0D3504C8 -> 
                                                                    m_pParent = 
                                                                        px = 0x00000000
                                                                        pn = 
                                                                            pi_ = 0x00000000


                                                                    m_BaseColor = 0 (0x00000000)
                                                                    m_HasBaseColor = false
                                                                    m_MovementClass = { (unsupported basic_string<char,char_traits<char> >) }
                                                                    m_TextureAngle = 0.785398 (0x3F490FDB)
                                                                    m_TextureSize = 32.000000 (0x42000000)
                                                                    m_Groups = (unsupported vector<CTerrainGroup * >)

                                                                pn = 
                                                                    pi_ = 0x0E0CD718 -> 
                                                                        use_count_ = 20 (0x00000014)
                                                                        weak_count_ = 1 (0x00000001)



                                                            m_BaseColor = 0 (0x00000000)
                                                            m_HasBaseColor = false
                                                            m_MovementClass = { (unsupported basic_string<char,char_traits<char> >) }
                                                            m_TextureAngle = 0.785398 (0x3F490FDB)
                                                            m_TextureSize = 32.000000 (0x42000000)
                                                            m_Groups = (unsupported vector<CTerrainGroup * >)

                                                        pn = 
                                                            pi_ = 0x0E0CEE18 -> 
                                                                use_count_ = 21 (0x00000015)
                                                                weak_count_ = 1 (0x00000001)



                                                    m_BaseColor = 4278190080 (0xFF000000)
                                                    m_HasBaseColor = true 
                                                    m_MovementClass = { (unsupported basic_string<char,char_traits<char> >) }
                                                    m_TextureAngle = 0.785398 (0x3F490FDB)
                                                    m_TextureSize = 32.000000 (0x42000000)
                                                    m_Groups = (unsupported vector<CTerrainGroup * >)

                                                pn = 
                                                    pi_ = 0x0E0CEE58 -> 
                                                        use_count_ = 1 (0x00000001)
                                                        weak_count_ = 1 (0x00000001)



                                            m_Texture = 
                                                px = 0x0DF30800 -> 
                                                    m_Properties = 
                                                        m_Path = 
                                                            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
                                                            separator = [8] { 47 ('/'), 52685, 9987, 0, 10497, 0, 10497, 0 }

                                                        m_Filter = 9987 (0x00002703)
                                                        m_WrapS = 10497 (0x00002901)
                                                        m_WrapT = 10497 (0x00002901)
                                                        m_Aniso = 2.000000 (0x40000000)

                                                    m_Handle = 22282429 (0x00000000015400BD)
                                                    m_BaseColour = 3422552064 (0xCC000000)
                                                    m_State = LOADED
                                                    m_TextureManager = 0x097F94E0 -> 
                                                        m_VFS = 
                                                            px = 0x00611858 (see above)
                                                            pn = 
                                                                pi_ = 0x005F8E90 (see above)


                                                        m_CacheLoader = 
                                                            m_VFS = 
                                                                px = 0x00611858 (see above)
                                                                pn = 
                                                                    pi_ = 0x005F8E90 (see above)


                                                            m_FileExtension = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)

                                                        m_DisableGL = false
                                                        m_TextureConverter = 
                                                            m_VFS = 
                                                                px = 0x00611858 (see above)
                                                                pn = 
                                                                    pi_ = 0x005F8E90 (see above)


                                                            m_HighQuality = false
                                                            m_WorkerThread = 956 (0x000003BC)
                                                            m_WorkerMutex = 0x00775ED8
                                                            m_WorkerSem = 0x000003B8
                                                            m_RequestQueue = (unsupported deque<boost::shared_ptr<CTextureConverter::ConversionRequest> >)
                                                            m_ResultQueue = (unsupported deque<boost::shared_ptr<CTextureConverter::ConversionResult> >)
                                                            m_Shutdown = false

                                                        m_DefaultHandle = 65537 (0x0000000000010001)
                                                        m_ErrorHandle = 131074 (0x0000000000020002)
                                                        m_ErrorTexture = 
                                                            px = 0x097E2410 -> 
                                                                m_Properties = 
                                                                    m_Path = 
                                                                        path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
                                                                        separator = [8] { 47 ('/'), 52685, 9987, 0, 10497, 0, 10497, 0 }

                                                                    m_Filter = 9987 (0x00002703)
                                                                    m_WrapS = 10497 (0x00002901)
                                                                    m_WrapT = 10497 (0x00002901)
                                                                    m_Aniso = 1.000000 (0x3F800000)

                                                                m_Handle = 131074 (0x0000000000020002)
                                                                m_BaseColour = 0 (0x00000000)
                                                                m_State = LOADED
                                                                m_TextureManager = 0x097F94E0 (see above)
                                                                m_Self = 
                                                                    px = 0x097E2410 (see above)
                                                                    pn = 
                                                                        pi_ = 0x097FEB90 -> 
                                                                            use_count_ = 1 (0x00000001)
                                                                            weak_count_ = 2 (0x00000002)




                                                            pn = 
                                                                pi_ = 0x097FEB90 (see above)


                                                        m_TextureCache = 
                                                            table_ = 
                                                                
                                                                    
                                                                        buckets_ = 0x0DED4A28 -> 
                                                                            next_ = 0x00000000

                                                                        bucket_count_ = 769 (0x00000301)
                                                                        allocators_ = 
                                                                            
                                                                                (unsupported )
                                                                                (unsupported )



                                                                    
                                                                        current_ = false
                                                                        funcs_ = [2] { { data_ = { buf = [2] { (uninitialized), (uninitialized) }, align_ = 
                                                                                        t0 = (uninitialized)
                                                                                        t1 = (uninitialized)
                                                                                        t2 = (uninitialized)
                                                                                        t3 = (uninitialized)
                                                                                        t4 = (uninitialized)
                                                                                        t5 = (uninitialized)
                                                                                        t6 = (uninitialized)
                                                                                        t7 = (uninitialized)
                                                                                        t8 = (uninitialized)
                                                                                        t9 = (uninitialized)
                                                                                        t10 = (uninitialized)
                                                                                        t11 = (uninitialized)
                                                                                        t12 = (uninitialized)
                                                                                        t13 = (uninitialized)
                                                                                        t14 = (uninitialized)
                                                                                        t15 = (uninitialized)
                                                                                        t16 = (uninitialized)
                                                                                        t17 = (uninitialized)
                                                                                        t18 = (uninitialized)
                                                                                        t19 = (uninitialized)
                                                                                        t20 = (uninitialized)
                                                                                        t21 = (uninitialized)
                                                                                        t22 = (uninitialized)
                                                                                        t23 = (uninitialized)
 } }, { data_ = { buf = [2] { [8] { 205, 205, 205, 205, 205, 125 ('}'), 2, 0 }, 205 }, align_ = 
                                                                                        t0 = 205
                                                                                        t1 = 205
                                                                                        t2 = 205
                                                                                        t3 = 205
                                                                                        t4 = 205
                                                                                        t5 = 205
                                                                                        t6 = 205
                                                                                        t7 = 205
                                                                                        t8 = 205
                                                                                        t9 = 205
                                                                                        t10 = 205
                                                                                        t11 = 205
                                                                                        t12 = 205
                                                                                        t13 = 205
                                                                                        t14 = 205
                                                                                        t15 = 205
                                                                                        t16 = 205
                                                                                        t17 = 205
                                                                                        t18 = 205
                                                                                        t19 = 205
                                                                                        t20 = 205
                                                                                        t21 = 205
                                                                                        t22 = 205
                                                                                        t23 = 205
 } } }

                                                                    size_ = 637 (0x0000027D)
                                                                    mlf_ = 1.000000 (0x3F800000)
                                                                    cached_begin_bucket_ = 0x0DED4A2C -> 
                                                                        next_ = 0x0DF3F1E8 -> 
                                                                            next_ = 0x0DE583E8 -> 
                                                                                next_ = 0x00000000



                                                                    max_load_ = 769 (0x00000301)



                                                        m_HotloadFiles = 
                                                            table_ = 
                                                                
                                                                    
                                                                        buckets_ = 0x0DF46D48 -> 
                                                                            next_ = 0x00000000

                                                                        bucket_count_ = 769 (0x00000301)
                                                                        allocators_ = 
                                                                            
                                                                                (unsupported )
                                                                                (unsupported )



                                                                    
                                                                        current_ = false
                                                                        funcs_ = [2] { { data_ = { buf = [1] { [8] { 205, 205, 205, 157, 2, 0, 0, 0 } }, align_ = 
                                                                                        t0 = 205
                                                                                        t1 = 205
                                                                                        t2 = 205
                                                                                        t3 = 205
                                                                                        t4 = 205
                                                                                        t5 = 205
                                                                                        t6 = 205
                                                                                        t7 = 205
                                                                                        t8 = 205
                                                                                        t9 = 205
                                                                                        t10 = 205
                                                                                        t11 = 205
                                                                                        t12 = 205
                                                                                        t13 = 205
                                                                                        t14 = 205
                                                                                        t15 = 205
                                                                                        t16 = 205
                                                                                        t17 = 205
                                                                                        t18 = 205
                                                                                        t19 = 205
                                                                                        t20 = 205
                                                                                        t21 = 205
                                                                                        t22 = 205
                                                                                        t23 = 205
 } }, { data_ = { buf = [1] { [8] { 205, 205, 157, 2, 0, 0, 0, 0 } }, align_ = 
                                                                                        t0 = 205
                                                                                        t1 = 205
                                                                                        t2 = 205
                                                                                        t3 = 205
                                                                                        t4 = 205
                                                                                        t5 = 205
                                                                                        t6 = 205
                                                                                        t7 = 205
                                                                                        t8 = 205
                                                                                        t9 = 205
                                                                                        t10 = 205
                                                                                        t11 = 205
                                                                                        t12 = 205
                                                                                        t13 = 205
                                                                                        t14 = 205
                                                                                        t15 = 205
                                                                                        t16 = 205
                                                                                        t17 = 205
                                                                                        t18 = 205
                                                                                        t19 = 205
                                                                                        t20 = 205
                                                                                        t21 = 205
                                                                                        t22 = 205
                                                                                        t23 = 205
 } } }

                                                                    size_ = 669 (0x0000029D)
                                                                    mlf_ = 1.000000 (0x3F800000)
                                                                    cached_begin_bucket_ = 0x0DF46D4C -> 
                                                                        next_ = 0x0DF074B0 -> 
                                                                            next_ = 0x00000000


                                                                    max_load_ = 769 (0x00000301)



                                                        m_SettingsFiles = 
                                                            table_ = 
                                                                
                                                                    
                                                                        buckets_ = 0x097F63E0 -> 
                                                                            next_ = 0x0DEDC8B0 -> 
                                                                                next_ = 0x00000000


                                                                        bucket_count_ = 53 (0x00000035)
                                                                        allocators_ = 
                                                                            
                                                                                (unsupported )
                                                                                (unsupported )



                                                                    
                                                                        current_ = false
                                                                        funcs_ = [2] { { data_ = { buf = [1] { [8] { 205, 205, 205, 32 (' '), 0, 0, 0, 0 } }, align_ = 
                                                                                        t0 = 205
                                                                                        t1 = 205
                                                                                        t2 = 205
                                                                                        t3 = 205
                                                                                        t4 = 205
                                                                                        t5 = 205
                                                                                        t6 = 205
                                                                                        t7 = 205
                                                                                        t8 = 205
                                                                                        t9 = 205
                                                                                        t10 = 205
                                                                                        t11 = 205
                                                                                        t12 = 205
                                                                                        t13 = 205
                                                                                        t14 = 205
                                                                                        t15 = 205
                                                                                        t16 = 205
                                                                                        t17 = 205
                                                                                        t18 = 205
                                                                                        t19 = 205
                                                                                        t20 = 205
                                                                                        t21 = 205
                                                                                        t22 = 205
                                                                                        t23 = 205
 } }, { data_ = { buf = [1] { [8] { 205, 205, 32 (' '), 0, 0, 0, 0, 0 } }, align_ = 
                                                                                        t0 = 205
                                                                                        t1 = 205
                                                                                        t2 = 205
                                                                                        t3 = 205
                                                                                        t4 = 205
                                                                                        t5 = 205
                                                                                        t6 = 205
                                                                                        t7 = 205
                                                                                        t8 = 205
                                                                                        t9 = 205
                                                                                        t10 = 205
                                                                                        t11 = 205
                                                                                        t12 = 205
                                                                                        t13 = 205
                                                                                        t14 = 205
                                                                                        t15 = 205
                                                                                        t16 = 205
                                                                                        t17 = 205
                                                                                        t18 = 205
                                                                                        t19 = 205
                                                                                        t20 = 205
                                                                                        t21 = 205
                                                                                        t22 = 205
                                                                                        t23 = 205
 } } }

                                                                    size_ = 32 (0x00000020)
                                                                    mlf_ = 1.000000 (0x3F800000)
                                                                    cached_begin_bucket_ = 0x097F63E0 (see above)
                                                                    max_load_ = 53 (0x00000035)




                                                    m_Self = 
                                                        px = 0x0DF30800 (see above)
                                                        pn = 
                                                            pi_ = 0x0DF176A0 -> 
                                                                use_count_ = 2 (0x00000002)
                                                                weak_count_ = 9 (0x00000009)




                                                pn = 
                                                    pi_ = 0x0DF176A0 (see above)


                                            m_TextureMatrix = 
                                                _11 = 0.022097 (0x3CB504F3)
                                                _21 = -0.022097 (0xBCB504F3)
                                                _31 = 0.000000 (0x00000000)
                                                _41 = 0.000000 (0x00000000)
                                                _12 = 0.000000 (0x00000000)
                                                _22 = 0.000000 (0x00000000)
                                                _32 = 0.000000 (0x00000000)
                                                _42 = 0.000000 (0x00000000)
                                                _13 = -0.022097 (0xBCB504F3)
                                                _23 = -0.022097 (0xBCB504F3)
                                                _33 = 0.000000 (0x00000000)
                                                _43 = 0.000000 (0x00000000)
                                                _14 = 0.000000 (0x00000000)
                                                _24 = 0.000000 (0x00000000)
                                                _34 = 0.000000 (0x00000000)
                                                _44 = 1.000000 (0x3F800000)
                                                _data = [16] 
                                                    0.022097 (0x3CB504F3)
                                                    -0.022097 (0xBCB504F3)
                                                    0.000000 (0x00000000)
                                                    0.000000 (0x00000000)
                                                    0.000000 (0x00000000)
                                                    0.000000 (0x00000000)
                                                    0.000000 (0x00000000)
                                                    0.000000 (0x00000000)
                                                    -0.022097 (0xBCB504F3)
                                                    -0.022097 (0xBCB504F3)
                                                    0.000000 (0x00000000)
                                                    0.000000 (0x00000000) ...
                                                _data2d = [4] 
                                                    [4] { 0.022097 (0x3CB504F3), -0.022097 (0xBCB504F3), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                                                    [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                                                    [4] { -0.022097 (0xBCB504F3), -0.022097 (0xBCB504F3), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                                                    [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000) }

                                            m_BaseColor = 4278190080 (0xFF000000)
                                            m_BaseColorValid = true 
                                            m_Groups = (unsupported vector<CTerrainGroup * >)

                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)
 ...
                                [16] 
                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)
 ...
                                [16] 
                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)
 ...
                                [16] 
                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)
 ...
                                [16] 
                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)
 ...
                                [16] 
                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)
 ...
                                [16] 
                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)
 ...
                                [16] 
                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)
 ... ...
                            m_X = 0 (0x00000000)
                            m_Z = 0 (0x00000000)
                            m_Parent = 0x097FFB10 (see above)

                        m_Heightmap = 0x0B7AB178 -> 16384 (0x4000)
                        m_BaseColour = 
                            R = [8] { 255 (0xFF), 255 (0xFF), 255 (0xFF), 255 (0xFF), 253 (0xFD), 253 (0xFD), 253 (0xFD), 253 (0xFD) }
                            G = 255 (0xFF)
                            B = 255 (0xFF)
                            A = 255 (0xFF)





        m_SoundGroups = (unsupported map<basic_string<wchar_t,char_traits<wchar_t> >,CSoundGroup * >)

    name = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
    source = 948 (0x000003B4)
    cmpRangeManager = 
        m = 0x097F4808 -> 
            
                m_EntityId = 1 (0x00000001)
                m_SimContext = 0x097FCC20 (see above)



    vis = VIS_VISIBLE
    group = 0x0DE30638 (see above)

CUnitAnimation::Update (unitanimation.cpp:193)
    animDef = 0x20D88500 -> 
        m_FrameTime = 33.000000 (0x42040000)
        m_NumKeys = 29 (0x0000001D)
        m_NumFrames = 311 (0x00000137)
        m_Keys = 0x20DAB968 -> 
            m_Translation = 
                X = -0.158727 (0xBE228942)
                Y = 1.941809 (0x3FF88D2F)
                Z = -0.642303 (0xBF246DFC)

            m_Rotation = 
                m_V = 
                    X = -0.000000 (0x80000000)
                    Y = -0.973917 (0xBF7952A6)
                    Z = -0.000000 (0x80000000)

                m_W = -0.226903 (0xBE685940)



    duration = 10263.000000 (0x46205C00)
    hasLoadPos = true 
    actionPos = 8620.919922 (0x4606B3AE)
    hasActionPos = true 
    speed = 5.131500 (0x40A4353F)
    advance = 375480.218750 (0x48B75707)
    loadPos = 1642.079956 (0x44CD428F)
    it = (_Vector_iterator<_Vector_val<CUnitAnimation::SModelAnimState > >)
    this = 0x225E8540 -> 
        m_AnimStates = (vector<CUnitAnimation::SModelAnimState >)
        m_Entity = 948 (0x000003B4)
        m_Model = 0x277CD250 -> 
            
                
                    m_WorldBounds = 
                        m_Data = [2] 
                            
                                X = 208.543396 (0x43508B1C)
                                Y = 22.410460 (0x41B3489F)
                                Z = 330.337708 (0x43A52B3A)

                            
                                X = 211.407562 (0x43536856)
                                Y = 26.773624 (0x41D63062)
                                Z = 332.683350 (0x43A65778)


                    m_Transform = 
                        _11 = -0.047295 (0xBD41B8D2)
                        _21 = 0.000000 (0x00000000)
                        _31 = -0.998881 (0xBF7FB6A9)
                        _41 = 0.000000 (0x00000000)
                        _12 = 0.000000 (0x00000000)
                        _22 = 1.000000 (0x3F800000)
                        _32 = 0.000000 (0x00000000)
                        _42 = 0.000000 (0x00000000)
                        _13 = 0.998881 (0x3F7FB6A9)
                        _23 = 0.000000 (0x00000000)
                        _33 = -0.047295 (0xBD41B8D2)
                        _43 = 0.000000 (0x00000000)
                        _14 = 211.190659 (0x435330CF)
                        _24 = 22.382513 (0x41B30F63)
                        _34 = 330.809692 (0x43A567A4)
                        _44 = 1.000000 (0x3F800000)
                        _data = [16] 
                            -0.047295 (0xBD41B8D2)
                            0.000000 (0x00000000)
                            -0.998881 (0xBF7FB6A9)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            1.000000 (0x3F800000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.998881 (0x3F7FB6A9)
                            0.000000 (0x00000000)
                            -0.047295 (0xBD41B8D2)
                            0.000000 (0x00000000) ...
                        _data2d = [4] 
                            [4] { -0.047295 (0xBD41B8D2), 0.000000 (0x00000000), -0.998881 (0xBF7FB6A9), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.998881 (0x3F7FB6A9), 0.000000 (0x00000000), -0.047295 (0xBD41B8D2), 0.000000 (0x00000000) }
                            [4] { 211.190659 (0x435330CF), 22.382513 (0x41B30F63), 330.809692 (0x43A567A4), 1.000000 (0x3F800000) }

                    m_InvTransform = 
                        _11 = -0.047295 (0xBD41B8D4)
                        _21 = 0.000000 (0x00000000)
                        _31 = 0.998881 (0x3F7FB6AB)
                        (too much output; skipping to next top-level symbol)

                    m_RenderData = 0x229D9748 -> 
                        m_UpdateFlags = 0 (0x00000000)

                    m_BoundsValid = true 

                m_Parent = 0x00000000
                m_PositionValid = false
                m_PlayerID = 2 (0x00000002)
                m_ShadingColor = 
                    r = 1.000000 (0x3F800000)
                    g = 1.000000 (0x3F800000)
                    b = 1.000000 (0x3F800000)
                    a = 1.000000 (0x3F800000)

                m_SelectionBox = 
                    m_Center = 
                        X = 209.969635 (0x4351F83A)
                        Y = 24.592041 (0x41C4BC80)
                        Z = 331.387024 (0x43A5B18A)

                    m_HalfSizes = 
                        X = 1.232382 (0x3F9DBEB2)
                        Y = 2.181582 (0x400B9F0C)
                        Z = 1.381192 (0x3FB0CAE5)

                    m_Basis = [3] 
                        
                            X = -0.047297 (0xBD41BB02)
                            Y = 0.000000 (0x00000000)
                            Z = -0.998881 (0xBF7FB6A7)

                        
                            X = 0.000000 (0x00000000)
                            Y = 1.000000 (0x3F800000)
                            Z = 0.000000 (0x00000000)

                        
                            X = 0.998881 (0x3F7FB6AA)
                            Y = 0.000000 (0x00000000)
                            Z = -0.047295 (0xBD41B7F4)


                m_SelectionBoxValid = false
                m_CustomSelectionShape = 0x00000000

            m_Flags = 5 (0x00000005)
            m_Texture = 
                px = 0x0DEB70E0 -> 
                    m_Properties = 
                        m_Path = 
                            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = [8] { 47 ('/'), 52685, 9987, 0, 33071, 0, 33071, 0 }

                        m_Filter = 9987 (0x00002703)
                        m_WrapS = 33071 (0x0000812F)
                        m_WrapT = 33071 (0x0000812F)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 22151355 (0x00000000015200BB)
                    m_BaseColour = 2679807625 (0x9FBA9E89)
                    m_State = LOADED
                    m_TextureManager = 0x097F94E0 (see above)
                    m_Self = 
                        px = 0x0DEB70E0 (see above)
                        pn = 
                            pi_ = 0x20D88300 -> 
                                use_count_ = 359 (0x00000167)
                                weak_count_ = 8 (0x00000008)




                pn = 
                    pi_ = 0x20D88300 (see above)


            m_Material = 
                m_Texture = { (unsupported basic_string<char,char_traits<char> >) }
                m_Alpha = false
                m_PlayerID = 2 (0x00000002)
                m_TextureColor = 
                    r = 1.000000 (0x3F800000)
                    g = 1.000000 (0x3F800000)
                    b = 1.000000 (0x3F800000)
                    a = 1.000000 (0x3F800000)

                m_UsePlayerColor = true 
                m_UseTextureColor = false

            m_pModelDef = 
                px = 0x203417A0 -> 
                    m_NumVertices = 302 (0x0000012E)
                    m_pVertices = 0x0BAF9178 -> 
                        m_Coords = 
                            X = 0.507903 (0x3F0205F2)
                            Y = 1.466088 (0x3FBBA8C2)
                            Z = 0.157111 (0x3E20E1AC)

                        m_Norm = 
                            X = 0.788361 (0x3F49D206)
                            Y = 0.047649 (0x3D432B98)
                            Z = 0.613365 (0x3F1D057C)

                        m_U = 0.810705 (0x3F4F8A5D)
                        m_V = 0.125270 (0x3E0046C7)
                        m_Blend = 
                            m_Bone = [4] { [8] { 19 (0x13), 255 (0xFF), 255 (0xFF), 255 (0xFF), 0 (0x00), 0 (0x00), 128 (0x80), 63 (0x3F) }, 255 (0xFF), 255 (0xFF), 255 (0xFF) }
                            m_Weight = [4] { 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }


                    m_NumFaces = 390 (0x00000186)
                    m_pFaces = 0x0B92DAE0 -> 
                        m_Verts = [3] { 0 (0x0000), 1 (0x0001), 2 (0x0002) }

                    m_NumBones = 29 (0x0000001D)
                    m_Bones = 0x0D350C38 -> 
                        m_Translation = 
                            X = 0.000000 (0x00000000)
                            Y = 0.000000 (0x00000000)
                            Z = 0.000000 (0x00000000)

                        m_Rotation = 
                            m_V = 
                                X = 0.000000 (0x00000000)
                                Y = 0.000000 (0x00000000)
                                Z = 0.000000 (0x00000000)

                            m_W = -1.000000 (0xBF800000)


                    m_NumBlends = 91 (0x0000005B)
                    m_pBlends = 0x0D2C7780 -> 
                        m_Bone = [4] { [8] { 19 (0x13), 20 (0x14), 255 (0xFF), 255 (0xFF), 249 (0xF9), 162 (0xA2), 121 (0x79), 63 (0x3F) }, 20 (0x14), 255 (0xFF), 255 (0xFF) }
                        m_Weight = [4] { 0.975143 (0x3F79A2F9), 0.024857 (0x3CCBA0E8), 0.000000 (0x00000000), 0.000000 (0x00000000) }

                    m_pBlendIndices = 0x0993AE20 -> 19 (0x00000013)
                    m_PropPoints = (unsupported vector<SPropPoint >)
                    m_Name = 
                        path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
                        separator = [8] { 47 ('/'), 52685, 48224, 3377, 52685, 52685, 8488, 3575 }

                    m_RenderData = (unsupported map<void const *,CModelDefRPrivate * >)

                pn = 
                    pi_ = 0x0D2CD708 -> 
                        use_count_ = 2712 (0x00000A98)
                        weak_count_ = 3 (0x00000003)



            m_ObjectBounds = 
                m_Data = [2] 
                    
                        X = -1.751325 (0xBFE02B6B)
                        Y = 0.027947 (0x3CE4F097)
                        Z = -2.628159 (0xC02833C0)

                    
                        X = 0.466159 (0x3EEEAC59)
                        Y = 4.391111 (0x408C83FC)
                        Z = 0.134224 (0x3E0971EA)


            m_Anim = 0x27454E38 -> 
                m_Name = { (unsupported basic_string<char,char_traits<char> >) }
                m_AnimDef = 0x20D88500 (see above)
                m_Speed = 0.900000 (0x3F666666)
                m_ActionPos = 8620.919922 (0x4606B3AE)
                m_ActionPos2 = 1642.079956 (0x44CD428F)
                m_ObjectBounds = 
                    m_Data = [2] 
                        
                            X = -1.751325 (0xBFE02B6B)
                            Y = 0.027947 (0x3CE4F097)
                            Z = -2.628159 (0xC02833C0)

                        
                            X = 0.466159 (0x3EEEAC59)
                            Y = 4.391111 (0x408C83FC)
                            Z = 0.134224 (0x3E0971EA)



            m_AnimTime = 3856.812500 (0x45710D00)
            m_BoneMatrices = 0x278A9DF0 -> 
                _11 = -0.341745 (0xBEAEF940)
                _21 = 0.182973 (0x3E3B5D60)
                _31 = 0.921808 (0x3F6BFBA1)
                _41 = 0.000000 (0x00000000)
                _12 = 0.063582 (0x3D823782)
                _22 = 0.983118 (0x3F7BAD9D)
                _32 = -0.171571 (0xBE2FB041)
                _42 = 0.000000 (0x00000000)
                _13 = -0.937639 (0xBF70091E)
                _23 = -0.000023 (0xB7BE7000)
                _33 = -0.347610 (0xBEB1F9EB)
                _43 = 0.000000 (0x00000000)
                _14 = 210.503586 (0x435280EB)
                _24 = 24.324539 (0x41C298A8)
                _34 = 331.029633 (0x43A583CB)
                _44 = 1.000000 (0x3F800000)
                _data = [16] 
                    -0.341745 (0xBEAEF940)
                    0.182973 (0x3E3B5D60)
                    0.921808 (0x3F6BFBA1)
                    0.000000 (0x00000000)
                    0.063582 (0x3D823782)
                    0.983118 (0x3F7BAD9D)
                    -0.171571 (0xBE2FB041)
                    0.000000 (0x00000000)
                    -0.937639 (0xBF70091E)
                    -0.000023 (0xB7BE7000)
                    -0.347610 (0xBEB1F9EB)
                    0.000000 (0x00000000) ...
                _data2d = [4] 
                    [4] { -0.341745 (0xBEAEF940), 0.182973 (0x3E3B5D60), 0.921808 (0x3F6BFBA1), 0.000000 (0x00000000) }
                    [4] { 0.063582 (0x3D823782), 0.983118 (0x3F7BAD9D), -0.171571 (0xBE2FB041), 0.000000 (0x00000000) }
                    [4] { -0.937639 (0xBF70091E), -0.000023 (0xB7BE7000), -0.347610 (0xBEB1F9EB), 0.000000 (0x00000000) }
                    [4] { 210.503586 (0x435280EB), 24.324539 (0x41C298A8), 331.029633 (0x43A583CB), 1.000000 (0x3F800000) }

            m_InverseBindBoneMatrices = 0x27721B40 -> 
                _11 = 1.000000 (0x3F800000)
                _21 = 0.000000 (0x00000000)
                _31 = 0.000000 (0x00000000)
                _41 = 0.000000 (0x00000000)
                _12 = 0.000000 (0x00000000)
                _22 = 1.000000 (0x3F800000)
                _32 = 0.000000 (0x00000000)
                _42 = 0.000000 (0x00000000)
                _13 = 0.000000 (0x00000000)
                _23 = 0.000000 (0x00000000)
                _33 = 1.000000 (0x3F800000)
                _43 = 0.000000 (0x00000000)
                _14 = 0.000000 (0x00000000)
                _24 = 0.000000 (0x00000000)
                _34 = 0.000000 (0x00000000)
                _44 = 1.000000 (0x3F800000)
                _data = [16] 
                    1.000000 (0x3F800000)
                    0.000000 (0x00000000)
                    0.000000 (0x00000000)
                    0.000000 (0x00000000)
                    0.000000 (0x00000000)
                    1.000000 (0x3F800000)
                    0.000000 (0x00000000)
                    0.000000 (0x00000000)
                    0.000000 (0x00000000)
                    0.000000 (0x00000000)
                    1.000000 (0x3F800000)
                    0.000000 (0x00000000) ...
                _data2d = [4] 
                    [4] { 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                    [4] { 0.000000 (0x00000000), 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                    [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000), 0.000000 (0x00000000) }
                    [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000) }

            m_Props = (vector<CModel::Prop >)
            m_AmmoPropPoint = 0x0B92EC30 -> 
                m_Name = { (unsupported basic_string<char,char_traits<char> >) }
                m_Position = 
                    X = 0.111625 (0x3DE49BA6)
                    Y = -0.022327 (0xBCB6E71D)
                    Z = 0.047914 (0x3D444178)

                m_Rotation = 
                    m_V = 
                        X = -0.017978 (0xBC9345CF)
                        Y = 0.689260 (0x3F307356)
                        Z = -0.014345 (0xBC6B058A)

                    m_W = -0.724149 (0xBF3961D4)

                m_Transform = 
                    _11 = 0.049430 (0x3D4A773A)
                    _21 = -0.004007 (0xBB834F80)
                    _31 = 0.998769 (0x3F7FAF5B)
                    _41 = 0.000000 (0x00000000)
                    _12 = -0.045558 (0xBD3A9AC0)
                    _22 = 0.998942 (0x3F7FBAAB)
                    _32 = 0.006263 (0x3BCD370C)
                    _42 = 0.000000 (0x00000000)
                    _13 = -0.997738 (0xBF7F6BC1)
                    _23 = -0.045811 (0xBD3BA492)
                    _33 = 0.049195 (0x3D4980F6)
                    _43 = 0.000000 (0x00000000)
                    _14 = 0.111625 (0x3DE49BA6)
                    _24 = -0.022327 (0xBCB6E71D)
                    _34 = 0.047914 (0x3D444178)
                    _44 = 1.000000 (0x3F800000)
                    _data = [16] 
                        0.049430 (0x3D4A773A)
                        -0.004007 (0xBB834F80)
                        0.998769 (0x3F7FAF5B)
                        0.000000 (0x00000000)
                        -0.045558 (0xBD3A9AC0)
                        0.998942 (0x3F7FBAAB)
                        0.006263 (0x3BCD370C)
                        0.000000 (0x00000000)
                        -0.997738 (0xBF7F6BC1)
                        -0.045811 (0xBD3BA492)
                        0.049195 (0x3D4980F6)
                        0.000000 (0x00000000) ...
                    _data2d = [4] 
                        [4] { 0.049430 (0x3D4A773A), -0.004007 (0xBB834F80), 0.998769 (0x3F7FAF5B), 0.000000 (0x00000000) }
                        [4] { -0.045558 (0xBD3A9AC0), 0.998942 (0x3F7FBAAB), 0.006263 (0x3BCD370C), 0.000000 (0x00000000) }
                        [4] { -0.997738 (0xBF7F6BC1), -0.045811 (0xBD3BA492), 0.049195 (0x3D4980F6), 0.000000 (0x00000000) }
                        [4] { 0.111625 (0x3DE49BA6), -0.022327 (0xBCB6E71D), 0.047914 (0x3D444178), 1.000000 (0x3F800000) }

                m_BoneIndex = [8] { 16 (0x10), 205 (0xCD), 205 (0xCD), 205 (0xCD), 232 (0xE8), 224 (0xE0), 49 (0x31), 13 (0x0D) }

            m_AmmoLoadedProp = 3 (0x00000003)
            m_SkeletonAnimManager = 0x0986A880 (see above)

        m_Object = 0x2411A590 -> 
            m_Base = 0x0D2A3040 -> 
                m_Pathname = 
                    path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
                    separator = [8] { 47 ('/'), 52685, 64144, 8408, 23296, 8392, 52685, 52685 }

                m_ShortName = { (unsupported basic_string<wchar_t,char_traits<wchar_t> >) }
                m_Properties = { m_AutoFlatten = false, m_CastShadows = true , m_FloatOnWater = false }
                m_Material = 
                    path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
                    separator = [8] { 47 ('/'), 52685, 64256, 8408, 57936, 8397, 57976, 8397 }

                m_VariantGroups = (unsupported vector<vector<CObjectBase::Variant > >)
                m_ObjectManager = 0x0986A8A4 (see above)
                m_UsedFiles = 
                    table_ = 
                        
                            
                                buckets_ = 0x20C84BA0 -> 
                                    next_ = 0x20CDE1F8 -> 
                                        next_ = 0x00000000


                                bucket_count_ = 11 (0x0000000B)
                                allocators_ = 
                                    
                                        (unsupported )
                                        (unsupported )



                            
                                current_ = false
                                funcs_ = [2] { { data_ = { buf = [1] { [8] { 205, 205, 205, 4, 0, 0, 0, 0 } }, align_ = 
                                                t0 = 205
                                                t1 = 205
                                                t2 = 205
                                                t3 = 205
                                                t4 = 205
                                                t5 = 205
                                                t6 = 205
                                                t7 = 205
                                                t8 = 205
                                                t9 = 205
                                                t10 = 205
                                                t11 = 205
                                                t12 = 205
                                                t13 = 205
                                                t14 = 205
                                                t15 = 205
                                                t16 = 205
                                                t17 = 205
                                                t18 = 205
                                                t19 = 205
                                                t20 = 205
                                                t21 = 205
                                                t22 = 205
                                                t23 = 205
 } }, { data_ = { buf = [1] { [8] { 205, 205, 4, 0, 0, 0, 0, 0 } }, align_ = 
                                                t0 = 205
                                                t1 = 205
                                                t2 = 205
                                                t3 = 205
                                                t4 = 205
                                                t5 = 205
                                                t6 = 205
                                                t7 = 205
                                                t8 = 205
                                                t9 = 205
                                                t10 = 205
                                                t11 = 205
                                                t12 = 205
                                                t13 = 205
                                                t14 = 205
                                                t15 = 205
                                                t16 = 205
                                                t17 = 205
                                                t18 = 205
                                                t19 = 205
                                                t20 = 205
                                                t21 = 205
                                                t22 = 205
                                                t23 = 205
 } } }

                            size_ = 4 (0x00000004)
                            mlf_ = 1.000000 (0x3F800000)
                            cached_begin_bucket_ = 0x20C84BA0 (see above)
                            max_load_ = 11 (0x0000000B)




            m_TextureName = 
                path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
                separator = [8] { 47 ('/'), 52685, 8064, 8427, 15104, 10032, 52685, 52685 }

            m_ModelName = 
                path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
                separator = [8] { 47 ('/'), 52685, 0, 16256, 0, 16256, 0, 16256 }

            m_Color = 
                r = 1.000000 (0x3F800000)
                g = 1.000000 (0x3F800000)
                b = 1.000000 (0x3F800000)
                a = 1.000000 (0x3F800000)

            m_ProjectileModelName = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            m_Model = 0x23088290 -> 
                
                    m_WorldBounds = 
                        m_Data = [2] 
                            
                                X = 340282346638528860000000000000000000000.000000 (0x7F7FFFFF)
                                Y = 340282346638528860000000000000000000000.000000 (0x7F7FFFFF)
                                Z = 340282346638528860000000000000000000000.000000 (0x7F7FFFFF)

                            
                                X = -340282346638528860000000000000000000000.000000 (0xFF7FFFFF)
                                Y = -340282346638528860000000000000000000000.000000 (0xFF7FFFFF)
                                Z = -340282346638528860000000000000000000000.000000 (0xFF7FFFFF)


                    m_Transform = 
                        _11 = 1.000000 (0x3F800000)
                        _21 = 0.000000 (0x00000000)
                        _31 = 0.000000 (0x00000000)
                        _41 = 0.000000 (0x00000000)
                        _12 = 0.000000 (0x00000000)
                        _22 = 1.000000 (0x3F800000)
                        _32 = 0.000000 (0x00000000)
                        _42 = 0.000000 (0x00000000)
                        _13 = 0.000000 (0x00000000)
                        _23 = 0.000000 (0x00000000)
                        _33 = 1.000000 (0x3F800000)
                        _43 = 0.000000 (0x00000000)
                        _14 = 0.000000 (0x00000000)
                        _24 = 0.000000 (0x00000000)
                        _34 = 0.000000 (0x00000000)
                        _44 = 1.000000 (0x3F800000)
                        _data = [16] 
                            1.000000 (0x3F800000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            1.000000 (0x3F800000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            1.000000 (0x3F800000)
                            0.000000 (0x00000000) ...
                        _data2d = [4] 
                            [4] { 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000) }

                    m_InvTransform = 
                        _11 = -431602080.000000 (0xCDCDCDCD)
                        _21 = -431602080.000000 (0xCDCDCDCD)
                        _31 = -431602080.000000 (0xCDCDCDCD)
                        _41 = -431602080.000000 (0xCDCDCDCD)
                        _12 = -431602080.000000 (0xCDCDCDCD)
                        _22 = -431602080.000000 (0xCDCDCDCD)
                        _32 = -431602080.000000 (0xCDCDCDCD)
                        _42 = -431602080.000000 (0xCDCDCDCD)
                        _13 = -431602080.000000 (0xCDCDCDCD)
                        _23 = -431602080.000000 (0xCDCDCDCD)
                        _33 = -431602080.000000 (0xCDCDCDCD)
                        _43 = -431602080.000000 (0xCDCDCDCD)
                        _14 = -431602080.000000 (0xCDCDCDCD)
                        _24 = -431602080.000000 (0xCDCDCDCD)
                        _34 = -431602080.000000 (0xCDCDCDCD)
                        _44 = -431602080.000000 (0xCDCDCDCD)
                        _data = [16] 
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD) ...
                        _data2d = [4] 
                            [4] { -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD) }
                            [4] { -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD) }
                            [4] { -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD) }
                            [4] { -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD) }

                    m_RenderData = 0x00000000
                    m_BoundsValid = false

                m_Parent = 0x00000000
                m_PositionValid = true 
                m_PlayerID = 4294967295 (0xFFFFFFFF)
                m_ShadingColor = 
                    r = 1.000000 (0x3F800000)
                    g = 1.000000 (0x3F800000)
                    b = 1.000000 (0x3F800000)
                    a = 1.000000 (0x3F800000)

                m_SelectionBox = 
                    m_Center = 
                        X = 0.000000 (0x00000000)
                        Y = 0.000000 (0x00000000)
                        Z = 0.000000 (0x00000000)

                    m_HalfSizes = 
                        X = 0.000000 (0x00000000)
                        Y = 0.000000 (0x00000000)
                        Z = 0.000000 (0x00000000)

                    m_Basis = [3] 
                        
                            X = 0.000000 (0x00000000)
                            Y = 0.000000 (0x00000000)
                            Z = 0.000000 (0x00000000)

                        
                            X = 0.000000 (0x00000000)
                            Y = 0.000000 (0x00000000)
                            Z = 0.000000 (0x00000000)

                        
                            X = 0.000000 (0x00000000)
                            Y = 0.000000 (0x00000000)
                            Z = 0.000000 (0x00000000)


                m_SelectionBoxValid = false
                m_CustomSelectionShape = 0x00000000

            m_Outdated = false
            m_Animations = (unsupported multimap<CStr8,CSkeletonAnim * >)

        m_State = { (unsupported basic_string<char,char_traits<char> >) }
        m_Looping = true 
        m_OriginalSpeed = 1.000000 (0x3F800000)
        m_Speed = 1.047635 (0x3F8618EB)
        m_SyncRepeatTime = 2000.000000 (0x44FA0000)
        m_Desync = 0.049988 (0x3D4CC000)
        m_ActionSound = { (unsupported basic_string<wchar_t,char_traits<wchar_t> >) }

    time = 73171.632813 (0x478EE9D1)

CUnit::UpdateModel (unit.cpp:71)
    this = 0x23149440 -> 
        m_Object = 0x2411A590 (see above)
        m_Model = 0x277CD250 (see above)
        m_Animation = 0x225E8540 (see above)
        m_ID = 948 (0x000003B4)
        m_ActorSelections = (unsupported set<CStr8 >)
        m_EntitySelections = (unsupported set<CStr8 >)
        m_ObjectManager = 0x0986A8A4 (see above)

    frameTime = 73.171631 (0x429257E0)

CCmpVisualActor::Interpolate (ccmpvisualactor.cpp:629)
    this = 0x22E88058 -> 
        
            
                m_EntityId = 948 (0x000003B4)
                m_SimContext = 0x097FCC20 (see above)


        m_ActorName = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
        m_Unit = 0x23149440 (see above)
        m_R = 
            value = 65536 (0x00010000)

        m_G = 
            value = 65536 (0x00010000)

        m_B = 
            value = 65536 (0x00010000)

        m_Visibility = VIS_VISIBLE
        m_AnimRunThreshold = 
            value = 0 (0x00000000)

        m_AnimName = (unsupported basic_string<char,char_traits<char> >)
        m_AnimOnce = false
        m_AnimSpeed = 
            value = 65536 (0x00010000)

        m_SoundGroup = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
        m_AnimDesync = 
            value = 3276 (0x00000CCC)

        m_AnimSyncRepeatTime = 
            value = 131072000 (0x07D00000)


    frameTime = 73.171631 (0x429257E0)
    frameOffset = 1.000000 (0x3F800000)
    transform = 
        _11 = -0.047295 (0xBD41B8D2)
        _21 = 0.000000 (0x00000000)
        _31 = -0.998881 (0xBF7FB6A9)
        _41 = 0.000000 (0x00000000)
        _12 = 0.000000 (0x00000000)
        _22 = 1.000000 (0x3F800000)
        _32 = 0.000000 (0x00000000)
        _42 = 0.000000 (0x00000000)
        _13 = 0.998881 (0x3F7FB6A9)
        _23 = 0.000000 (0x00000000)
        _33 = -0.047295 (0xBD41B8D2)
        _43 = 0.000000 (0x00000000)
        _14 = 211.190659 (0x435330CF)
        _24 = 22.382513 (0x41B30F63)
        _34 = 330.809692 (0x43A567A4)
        _44 = 1.000000 (0x3F800000)
        _data = [16] 
            -0.047295 (0xBD41B8D2)
            0.000000 (0x00000000)
            -0.998881 (0xBF7FB6A9)
            0.000000 (0x00000000)
            0.000000 (0x00000000)
            1.000000 (0x3F800000)
            0.000000 (0x00000000)
            0.000000 (0x00000000)
            0.998881 (0x3F7FB6A9)
            0.000000 (0x00000000)
            -0.047295 (0xBD41B8D2)
            0.000000 (0x00000000) ...
        _data2d = [4] 
            [4] { -0.047295 (0xBD41B8D2), 0.000000 (0x00000000), -0.998881 (0xBF7FB6A9), 0.000000 (0x00000000) }
            [4] { 0.000000 (0x00000000), 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
            [4] { 0.998881 (0x3F7FB6A9), 0.000000 (0x00000000), -0.047295 (0xBD41B8D2), 0.000000 (0x00000000) }
            [4] { 211.190659 (0x435330CF), 22.382513 (0x41B30F63), 330.809692 (0x43A567A4), 1.000000 (0x3F800000) }

    model = 0x277CD250 (see above)
    cmpVision = 
        m = 0x23229718 -> 
            
                m_EntityId = 948 (0x000003B4)
                m_SimContext = 0x097FCC20 (see above)



    cmpPosition = 
        m = 0x230E2558 -> 
            
                m_EntityId = 948 (0x000003B4)
                m_SimContext = 0x097FCC20 (see above)



    floating = false

CCmpVisualActor::HandleMessage (ccmpvisualactor.cpp:265)
    this = 0x22E88058 (see above)
    msg = 0x048FF728 -> 
        m_Cached = 
            m_Val = 
                px = 0x00000000
                pn = 
                    pi_ = 0x00000000




    __formal = false

CComponentManager::BroadcastMessage (componentmanager.cpp:826)
    emap = (unsupported _Tree_const_iterator<_Tree_val<<int,map<size_t,IComponent * >> >)
    eit = (unsupported _Tree_const_iterator<_Tree_val<<size_t,IComponent *> >)
    ctit = (unsupported _Vector_const_iterator<_Vector_val<int > >)
    this = 0x097FCC30 (see above)
    msg = 0x048FF728 (see above)
    it = (unsupported _Tree_const_iterator<_Tree_val<<int,vector<int >> >)

CSimulation2Impl::Interpolate (simulation2.cpp:525)
    this = 0x097FCC20 (see above)
    frameLength = 73.171631 (0x429257E0)
    frameOffset = 1.000000 (0x3F800000)
    msg = 
        
            m_Cached = 
                m_Val = 
                    px = 0x00000000
                    pn = 
                        pi_ = 0x00000000




        frameTime = 73.171631 (0x429257E0)
        offset = 1.000000 (0x3F800000)

    profile2__ = 
        m_Name = 0x017B9758 -> "sim interpolate"


CSimulation2::Interpolate (simulation2.cpp:658)
    this = 0x097E20A8 (see above)
    frameLength = 73.171631 (0x429257E0)
    frameOffset = 1.000000 (0x3F800000)

CNetTurnManager::Interpolate (netturnmanager.cpp:257)
    this = 0x098713C0 -> 
        m_Simulation2 = 0x097E20A8 (see above)
        m_CurrentTurn = 178 (0x000000B2)
        m_ReadyTurn = 179 (0x000000B3)
        m_TurnLength = 200 (0x000000C8)
        m_QueuedCommands = (unsupported deque<map<size_t,vector<SimulationCommand > > >)
        m_PlayerId = 1 (0x00000001)
        m_ClientId = 0 (0x00000000)
        m_DeltaTime = 1038.073975 (0x4481C25E)
        m_HasSyncError = false
        m_Replay = 0x0E026C98 -> (IReplayLogger)
        m_TimeWarpNumTurns = 0 (0x00000000)
        m_TimeWarpStates = (unsupported list<basic_string<char,char_traits<char> > >)
        m_QuickSaveState = (unsupported basic_string<char,char_traits<char> >)

    frameLength = 73.171631 (0x429257E0)
    offset = 1.000000 (0x3F800000)

CGame::Interpolate (game.cpp:319)
    this = 0x09864818 -> 
        m_World = 0x097FFAD0 -> 
            m_pGame = 0x09864818 (see above)
            m_Terrain = 0x097FFB10 (see above)
            m_UnitManager = 0x006A1EE8 (see above)
            m_TerritoryManager = 0x00000000

        m_Simulation2 = 0x097E20A8 (see above)
        m_GameView = 0x0E0270F8 -> 
            (Scene)
            m = 0x0986A800 -> 
                
                    (IJSObject)
                    m_JS = 0x00000000
                    m_NonsharedProperties = 
                        table_ = 
                            
                                
                                    buckets_ = 0x00000000
                                    bucket_count_ = 11 (0x0000000B)
                                    allocators_ = 
                                        
                                            (unsupported )
                                            (unsupported )



                                
                                    current_ = false
                                    funcs_ = [2] { { data_ = { buf = [1] { [8] { 205, 205, 205, 0, 0, 0, 0, 0 } }, align_ = 
                                                    t0 = 205
                                                    t1 = 205
                                                    t2 = 205
                                                    t3 = 205
                                                    t4 = 205
                                                    t5 = 205
                                                    t6 = 205
                                                    t7 = 205
                                                    t8 = 205
                                                    t9 = 205
                                                    t10 = 205
                                                    t11 = 205
                                                    t12 = 205
                                                    t13 = 205
                                                    t14 = 205
                                                    t15 = 205
                                                    t16 = 205
                                                    t17 = 205
                                                    t18 = 205
                                                    t19 = 205
                                                    t20 = 205
                                                    t21 = 205
                                                    t22 = 205
                                                    t23 = 205
 } }, { data_ = { buf = [1] { [8] { 205, 205, 0, 0, 0, 0, 0, 0 } }, align_ = 
                                                    t0 = 205
                                                    t1 = 205
                                                    t2 = 205
                                                    (too much output; skipping to next top-level symbol)
 } } }

                                size_ = 0 (0x00000000)
                                mlf_ = 1.000000 (0x3F800000)
                                cached_begin_bucket_ = 0x00000000
                                max_load_ = 0 (0x00000000)



                    m_ScriptProperties = 
                        table_ = 
                            
                                
                                    buckets_ = 0x00000000
                                    bucket_count_ = 11 (0x0000000B)
                                    allocators_ = 
                                        
                                            (unsupported )
                                            (unsupported )



                                
                                    current_ = false
                                    funcs_ = [2] { { data_ = { buf = [1] { [8] { 205, 205, 205, 0, 0, 0, 0, 0 } }, align_ = 
                                                    t0 = 205
                                                    t1 = 205
                                                    t2 = 205
                                                    t3 = 205
                                                    t4 = 205
                                                    t5 = 205
                                                    t6 = 205
                                                    t7 = 205
                                                    t8 = 205
                                                    t9 = 205
                                                    t10 = 205
                                                    t11 = 205
                                                    t12 = 205
                                                    t13 = 205
                                                    t14 = 205
                                                    t15 = 205
                                                    t16 = 205
                                                    t17 = 205
                                                    t18 = 205
                                                    t19 = 205
                                                    t20 = 205
                                                    t21 = 205
                                                    t22 = 205
                                                    t23 = 205
 } }, { data_ = { buf = [1] { [8] { 205, 205, 0, 0, 0, 0, 0, 0 } }, align_ = 
                                                    t0 = 205
                                                    t1 = 205
                                                    t2 = 205
                                                    t3 = 205
                                                    t4 = 205
                                                    t5 = 205
                                                    t6 = 205
                                                    t7 = 205
                                                    t8 = 205
                                                    t9 = 205
                                                    t10 = 205
                                                    t11 = 205
                                                    t12 = 205
                                                    t13 = 205
                                                    t14 = 205
                                                    t15 = 205
                                                    t16 = 205
                                                    t17 = 205
                                                    t18 = 205
                                                    t19 = 205
                                                    t20 = 205
                                                    t21 = 205
                                                    t22 = 205
                                                    t23 = 205
 } } }

                                size_ = 0 (0x00000000)
                                mlf_ = 1.000000 (0x3F800000)
                                cached_begin_bucket_ = 0x00000000
                                max_load_ = 0 (0x00000000)



                    m_EngineOwned = true 

                Game = 0x09864818 (see above)
                ColladaManager = 
                    m = 0x09851A58 (see above)
                    m_VFS = 
                        px = 0x00611858 (see above)
                        pn = 
                            pi_ = 0x005F8E90 (see above)



                MeshManager = 
                    m_MeshMap = 
                        table_ = 
                            
                                
                                    buckets_ = 0x005F1978 (see above)
                                    bucket_count_ = 29 (0x0000001D)
                                    allocators_ = 
                                        
                                            (unsupported )
                                            (unsupported )



                                
                                    current_ = false
                                    funcs_ = [2] { { data_ = { buf = [1] { [8] { 205, 205, 205, 27, 0, 0, 0, 0 } }, align_ = 
                                                    t0 = 205
                                                    t1 = 205
                                                    t2 = 205
                                                    t3 = 205
                                                    t4 = 205
                                                    t5 = 205
                                                    t6 = 205
                                                    t7 = 205
                                                    t8 = 205
                                                    t9 = 205
                                                    t10 = 205
                                                    t11 = 205
                                                    t12 = 205
                                                    t13 = 205
                                                    t14 = 205
                                                    t15 = 205
                                                    t16 = 205
                                                    t17 = 205
                                                    t18 = 205
                                                    t19 = 205
                                                    t20 = 205
                                                    t21 = 205
                                                    t22 = 205
                                                    t23 = 205
 } }, { data_ = { buf = [1] { [8] { 205, 205, 27, 0, 0, 0, 0, 0 } }, align_ = 
                                                    t0 = 205
                                                    t1 = 205
                                                    t2 = 205
                                                    t3 = 205
                                                    t4 = 205
                                                    t5 = 205
                                                    t6 = 205
                                                    t7 = 205
                                                    t8 = 205
                                                    t9 = 205
                                                    t10 = 205
                                                    t11 = 205
                                                    t12 = 205
                                                    t13 = 205
                                                    t14 = 205
                                                    t15 = 205
                                                    t16 = 205
                                                    t17 = 205
                                                    t18 = 205
                                                    t19 = 205
                                                    t20 = 205
                                                    t21 = 205
                                                    t22 = 205
                                                    t23 = 205
 } } }

                                size_ = 27 (0x0000001B)
                                mlf_ = 1.000000 (0x3F800000)
                                cached_begin_bucket_ = 0x005F197C (see above)
                                max_load_ = 29 (0x0000001D)



                    m_ColladaManager = 0x0986A850 (see above)

                SkeletonAnimManager = 
                    m_Animations = 
                        table_ = 
                            
                                
                                    buckets_ = 0x005EAFD0 (see above)
                                    bucket_count_ = 29 (0x0000001D)
                                    allocators_ = 
                                        
                                            (unsupported )
                                            (unsupported )



                                
                                    current_ = false
                                    funcs_ = [2] { { data_ = { buf = [1] { [8] { 205, 205, 205, 21, 0, 0, 0, 0 } }, align_ = 
                                                    t0 = 205
                                                    t1 = 205
                                                    t2 = 205
                                                    t3 = 205
                                                    t4 = 205
                                                    t5 = 205
                                                    t6 = 205
                                                    t7 = 205
                                                    t8 = 205
                                                    t9 = 205
                                                    t10 = 205
                                                    t11 = 205
                                                    t12 = 205
                                                    t13 = 205
                                                    t14 = 205
                                                    t15 = 205
                                                    t16 = 205
                                                    t17 = 205
                                                    t18 = 205
                                                    t19 = 205
                                                    t20 = 205
                                                    t21 = 205
                                                    t22 = 205
                                                    t23 = 205
 } }, { data_ = { buf = [1] { [8] { 205, 205, 21, 0, 0, 0, 0, 0 } }, align_ = 
                                                    t0 = 205
                                                    t1 = 205
                                                    t2 = 205
                                                    t3 = 205
                                                    t4 = 205
                                                    t5 = 205
                                                    t6 = 205
                                                    t7 = 205
                                                    t8 = 205
                                                    t9 = 205
                                                    t10 = 205
                                                    t11 = 205
                                                    t12 = 205
                                                    t13 = 205
                                                    t14 = 205
                                                    t15 = 205
                                                    t16 = 205
                                                    t17 = 205
                                                    t18 = 205
                                                    t19 = 205
                                                    t20 = 205
                                                    t21 = 205
                                                    t22 = 205
                                                    t23 = 205
 } } }

                                size_ = 21 (0x00000015)
                                mlf_ = 1.000000 (0x3F800000)
                                cached_begin_bucket_ = 0x005EAFD0 (see above)
                                max_load_ = 29 (0x0000001D)



                    m_ColladaManager = 0x0986A850 (see above)

                ObjectManager = 
                    m_MeshManager = 0x0986A85C (see above)
                    m_SkeletonAnimManager = 0x0986A880 (see above)
                    m_Simulation = 0x097E20A8 (see above)
                    m_Objects = (unsupported map<CObjectManager::ObjectKey,CObjectEntry * >)
                    m_ObjectBases = (unsupported map<CStrW,CObjectBase * >)

                LOSTexture = 
                    m_Simulation = 0x097E20A8 (see above)
                    m_Dirty = true 
                    m_Texture = 192 (0x000000C0)
                    m_MapSize = 145 (0x00000091)
                    m_TextureSize = 256 (0x00000100)
                    m_TextureMatrix = 
                        _11 = 0.000977 (0x3A800000)
                        _21 = 0.000000 (0x00000000)
                        _31 = 0.000000 (0x00000000)
                        _41 = 0.000000 (0x00000000)
                        _12 = 0.000000 (0x00000000)
                        _22 = 0.000000 (0x00000000)
                        _32 = 0.000000 (0x00000000)
                        _42 = 0.000000 (0x00000000)
                        _13 = 0.000000 (0x00000000)
                        _23 = 0.000977 (0x3A800000)
                        _33 = 0.000000 (0x00000000)
                        _43 = 0.000000 (0x00000000)
                        _14 = 0.001953 (0x3B000000)
                        _24 = 0.001953 (0x3B000000)
                        _34 = 0.000000 (0x00000000)
                        _44 = 1.000000 (0x3F800000)
                        _data = [16] 
                            0.000977 (0x3A800000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000977 (0x3A800000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000) ...
                        _data2d = [4] 
                            [4] { 0.000977 (0x3A800000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000977 (0x3A800000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.001953 (0x3B000000), 0.001953 (0x3B000000), 0.000000 (0x00000000), 1.000000 (0x3F800000) }

                    m_MinimapTextureMatrix = 
                        _11 = 0.566406 (0x3F110000)
                        _21 = 0.000000 (0x00000000)
                        _31 = 0.000000 (0x00000000)
                        _41 = 0.000000 (0x00000000)
                        _12 = 0.000000 (0x00000000)
                        _22 = 0.566406 (0x3F110000)
                        _32 = 0.000000 (0x00000000)
                        _42 = 0.000000 (0x00000000)
                        _13 = 0.000000 (0x00000000)
                        _23 = 0.000000 (0x00000000)
                        _33 = 0.000000 (0x00000000)
                        _43 = 0.000000 (0x00000000)
                        _14 = 0.000000 (0x00000000)
                        _24 = 0.000000 (0x00000000)
                        _34 = 0.000000 (0x00000000)
                        _44 = 1.000000 (0x3F800000)
                        _data = [16] 
                            0.566406 (0x3F110000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.566406 (0x3F110000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000) ...
                        _data2d = [4] 
                            [4] { 0.566406 (0x3F110000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.566406 (0x3F110000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000) }


                TerritoryTexture = 
                    m_Simulation = 0x097E20A8 (see above)
                    m_DirtyID = 2 (0x00000002)
                    m_Texture = 213 (0x000000D5)
                    m_MapSize = 144 (0x00000090)
                    m_TextureSize = 256 (0x00000100)
                    m_TextureMatrix = 
                        _11 = 0.000977 (0x3A800000)
                        _21 = 0.000000 (0x00000000)
                        _31 = 0.000000 (0x00000000)
                        _41 = 0.000000 (0x00000000)
                        _12 = 0.000000 (0x00000000)
                        _22 = 0.000000 (0x00000000)
                        _32 = 0.000000 (0x00000000)
                        _42 = 0.000000 (0x00000000)
                        _13 = 0.000000 (0x00000000)
                        _23 = 0.000977 (0x3A800000)
                        _33 = 0.000000 (0x00000000)
                        _43 = 0.000000 (0x00000000)
                        _14 = 0.000000 (0x00000000)
                        _24 = 0.000000 (0x00000000)
                        _34 = 0.000000 (0x00000000)
                        _44 = 1.000000 (0x3F800000)
                        _data = [16] 
                            0.000977 (0x3A800000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000977 (0x3A800000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000) ...
                        _data2d = [4] 
                            [4] { 0.000977 (0x3A800000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000977 (0x3A800000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000) }

                    m_MinimapTextureMatrix = 
                        _11 = 0.562500 (0x3F100000)
                        _21 = 0.000000 (0x00000000)
                        _31 = 0.000000 (0x00000000)
                        _41 = 0.000000 (0x00000000)
                        _12 = 0.000000 (0x00000000)
                        _22 = 0.562500 (0x3F100000)
                        _32 = 0.000000 (0x00000000)
                        _42 = 0.000000 (0x00000000)
                        _13 = 0.000000 (0x00000000)
                        _23 = 0.000000 (0x00000000)
                        _33 = 0.000000 (0x00000000)
                        _43 = 0.000000 (0x00000000)
                        _14 = 0.000000 (0x00000000)
                        _24 = 0.000000 (0x00000000)
                        _34 = 0.000000 (0x00000000)
                        _44 = 1.000000 (0x3F800000)
                        _data = [16] 
                            0.562500 (0x3F100000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.562500 (0x3F100000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000) ...
                        _data2d = [4] 
                            [4] { 0.562500 (0x3F100000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.562500 (0x3F100000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000) }


                ViewCamera = 
                    m_Orientation = 
                        _11 = 1.000000 (0x3F800000)
                        _21 = 0.000000 (0x00000000)
                        _31 = 0.000000 (0x00000000)
                        _41 = 0.000000 (0x00000000)
                        _12 = 0.000000 (0x00000000)
                        _22 = 0.819152 (0x3F51B3F3)
                        _32 = 0.573576 (0x3F12D5E8)
                        _42 = 0.000000 (0x00000000)
                        _13 = 0.000000 (0x00000000)
                        _23 = -0.573576 (0xBF12D5E8)
                        _33 = 0.819152 (0x3F51B3F3)
                        _43 = 0.000000 (0x00000000)
                        _14 = 192.000000 (0x43400000)
                        _24 = 189.792526 (0x433DCAE3)
                        _34 = -37.425148 (0xC215B35A)
                        _44 = 1.000000 (0x3F800000)
                        _data = [16] 
                            1.000000 (0x3F800000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.819152 (0x3F51B3F3)
                            0.573576 (0x3F12D5E8)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            -0.573576 (0xBF12D5E8)
                            0.819152 (0x3F51B3F3)
                            0.000000 (0x00000000) ...
                        _data2d = [4] 
                            [4] { 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.819152 (0x3F51B3F3), 0.573576 (0x3F12D5E8), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), -0.573576 (0xBF12D5E8), 0.819152 (0x3F51B3F3), 0.000000 (0x00000000) }
                            [4] { 192.000000 (0x43400000), 189.792526 (0x433DCAE3), -37.425148 (0xC215B35A), 1.000000 (0x3F800000) }

                    m_ProjMat = 
                        _11 = 2.008842 (0x400090DD)
                        _21 = 0.000000 (0x00000000)
                        _31 = 0.000000 (0x00000000)
#1181 fixed BOM in intro.txt ben bird
Description

Fixed the BOM that appears in the very beginning of the intro.txt file.

In-game, it got rendered as a '?'

Patch attached.

#1182 fixed Forum upgrade Brian Stempin Brian Stempin
Description

A forum upgrade is in order and is being scheduled.

#1184 fixed [PATCH] Changing stance on garrisoning units causes instant garrison ben historic_bruno
Description

As reported on the forum, units will garrison instantly regardless of location when ordering them to garrison, then setting their stance to Passive, Defensive, or Stand. For some reason other stances don't cause this problem. This can be considered a fairly serious cheat.

#1185 fixed Save game crash: unhandled exception PSERROR_Serialize_InvalidScriptValue Jonathan Waller vts
Description

Reproducible crash when saving a game, as reported on in this thread: http://www.wildfiregames.com/forum/index.php?showtopic=15712.

A debug build produces this error message:

Unhandled exception at 0x7690fc56 in pyrogenesis_dbg.exe: Microsoft C++ exception: PSERROR_Serialize_InvalidScriptValue at memory location 0x0024c6fc..

Attaching crashlogs.

VS 2010 stack trace:

 	kernel32.dll!7690fc56() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	
 	kernel32.dll!7690fc56() 	
 	msvcr100d.dll!_CxxThrowException(void * pExceptionObject=0x002ac41c, const _s__ThrowInfo * pThrowInfo=0x01605b98)  Line 157	C++
>	pyrogenesis_dbg.exe!CBinarySerializerScriptImpl::HandleScriptVal(unsigned __int64 val=18446462628992422368)  Line 140	C++
 	pyrogenesis_dbg.exe!CBinarySerializerScriptImpl::HandleScriptVal(unsigned __int64 val=18446462628992479680)  Line 129	C++
 	pyrogenesis_dbg.exe!CBinarySerializerScriptImpl::HandleScriptVal(unsigned __int64 val=18446462628992436984)  Line 129	C++
 	pyrogenesis_dbg.exe!CBinarySerializerScriptImpl::HandleScriptVal(unsigned __int64 val=18446462628992436696)  Line 129	C++
 	pyrogenesis_dbg.exe!CBinarySerializerScriptImpl::HandleScriptVal(unsigned __int64 val=18446462628992436408)  Line 129	C++
 	pyrogenesis_dbg.exe!CBinarySerializerScriptImpl::HandleScriptVal(unsigned __int64 val=18446462629361138496)  Line 129	C++
 	pyrogenesis_dbg.exe!CBinarySerializerScriptImpl::HandleScriptVal(unsigned __int64 val=18446462629355963160)  Line 129	C++
 	pyrogenesis_dbg.exe!CBinarySerializerScriptImpl::HandleScriptVal(unsigned __int64 val=18446462628992436624)  Line 129	C++
 	pyrogenesis_dbg.exe!CBinarySerializerScriptImpl::HandleScriptVal(unsigned __int64 val=18446462629358874912)  Line 129	C++
 	pyrogenesis_dbg.exe!CBinarySerializer<CStdSerializerImpl>::PutScriptVal(const char * __formal=0x01415b50, unsigned __int64 value=18446462629358874912)  Line 180	C++
 	pyrogenesis_dbg.exe!ISerializer::ScriptVal(const char * name=0x01415b50, CScriptVal value={...})  Line 102 + 0x22 bytes	C++
 	pyrogenesis_dbg.exe!CAIWorker::SerializeState(ISerializer & serializer={...})  Line 401	C++
 	pyrogenesis_dbg.exe!CAIWorker::Serialize(std::basic_ostream<char,std::char_traits<char> > & stream={...}, bool isDebug=false)  Line 372	C++
 	pyrogenesis_dbg.exe!CCmpAIManager::Serialize(ISerializer & serialize={...})  Line 553	C++
 	pyrogenesis_dbg.exe!CComponentManager::SerializeState(std::basic_ostream<char,std::char_traits<char> > & stream={...})  Line 254 + 0x30 bytes	C++
 	pyrogenesis_dbg.exe!CSimulation2::SerializeState(std::basic_ostream<char,std::char_traits<char> > & stream={...})  Line 765	C++
 	pyrogenesis_dbg.exe!SavedGames::Save(const std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > & prefix="quicksave", CSimulation2 & simulation={...}, CGUIManager * gui=0x036a1288, int playerID=1)  Line 62 + 0x34 bytes	C++
 	pyrogenesis_dbg.exe!`anonymous namespace'::SaveGame(void * cbdata=0x036a1288)  Line 239 + 0x39 bytes	C++
 	pyrogenesis_dbg.exe!ScriptInterface_NativeWrapper<void>::call<void (__cdecl*)(void *)>(JSContext * cx=0x03f17810, unsigned __int64 & __formal=18446462607322775552, void (void *)* fptr=0x00ff9f00)  Line 45 + 0x16 bytes	C++
 	pyrogenesis_dbg.exe!ScriptInterface::call<void,&`anonymous namespace'::SaveGame>(JSContext * cx=0x03f17810, unsigned int argc=0, unsigned __int64 * vp=0x04000068)  Line 104 + 0x13d bytes	C++
#1186 fixed [PATCH] Hotkey to toggle silhouettes Mitchell K historic_bruno
Description

Silhouettes are the player-colored shape of a unit when it's obstructed by something else. Sometimes they can be distracting, so a hotkey to turn this feature on/off would be nice :)

#1187 fixed [PATCH] Hotkey to display all health bars Deiz historic_bruno
Description

A hotkey pressed to show health bars for all units on screen at once. This would be handy during battles so you could quickly see the health of all units without needing to select them. The hotkey could be either a toggle or active only when held down.

Related and perhaps unnecessary feature: show health of units with recently changed hitpoints, i.e. those being healed or damaged. If implemented, it should be a config option and separate from the "show all" feature.

#1188 fixed "Idle warrior button" doesn't get all idle warriors ben Erik Johansson
Description

When I press the idle warrior button to cycle through the idle warriors I only seem to be able to get to some of the idle warriors. As far as I can tell from some quick testing it could have something to do with the naming change from super units to champion units? I'll investigate further, but someone with more knowledge of the code could probably find out if that is indeed the case pretty quickly :) (And thus fix it if it indeed is the case ;) )

#1189 fixed WP Theming- Rough Home Page MishFTW
Description

Lay out the foundations of this page. Discussion: http://www.wildfiregames.com/forum/index.php?showtopic=15719

#1190 fixed [PATCH] Selected stances and formations need to be more obvious. Michael D. Hafer Ilya Radchenko
Description

The stances buttons currently have a little color if selected, but that color is hardly enough. Currently they have a nice border around them which turns a lighter grey when the mouse is over the button. I thin there needs to be a consistency and the border should also change for the selected stance.

See my attached screenshot, and modification.

#1194 fixed Rejoin caused some kind of selection bug Zaggy1024
Description

While playing with Mythos_Ruler, I got disconnected, and when I rejoined, it spat out a bunch of errors and stopped allowing me to select nearly all my units. The effected units seemed to be all the buildings except the civil center, all the military units but a few, and seemingly all the citizens were selectable.

mainlog.html has been attached.

Edit: mainlog.html was too large, so interestinglog.html is attached instead.

#1198 fixed [PATCH] Add "Skirmish" map type sanderd17 O.Davoodi
Description

Discussion here:http://www.wildfiregames.com/forum/index.php?showtopic=15756&st=20

A map similar to scenarios. Difference is that Players can choose their faction, team and if they like, their start location (the latter based on the preexisting "start location" entities). If they didn't choose their start location, it is randomly chosen. Game engine then creates the starting entities (better to use the scheme that is used in random maps).

#1199 fixed Barter.js error when exchanging resources vts Pureon
Description

This is the error message:

ERROR: Failed to call ProcessCommand() global script function ERROR: JavaScript error: simulation/components/Barter.js line 60

TypeError: cmpIdentity is null

(3)@simulation/components/Barter.js:60 (3,"food","metal",100)@simulation/components/Barter.js:84 ProcessCommand(1,[object Object])@simulation/helpers/Commands.js:424

ERROR: Failed to call ProcessCommand() global script function

To replicate - on the new Istmus map, as player 1 hele, build a market and try to exchange resources

#1201 fixed [PATCH] Replace isUnit, isAnimal, ... with calls to hasClass Jonathan Waller leper
Description

input.js, unit_commands.js and utility_functions.js use functions like isUnit that duplicate the functionality of hasClass introduced by [11279].

#1202 fixed nvtt doesn't build with gcc 4.7 philip bruno
Description

unistd.h is no longer included by some other include files and needs to be included separately. Including it should break building under earlier versions of gcc.

--- a/libraries/nvtt/src/src/nvcore/Debug.cpp +++ b/libraries/nvtt/src/src/nvcore/Debug.cpp @@ -1,5 +1,6 @@

This code is in the public domain -- castanyo@…

+#include <unistd.h>

#include <nvcore/Debug.h> #include <nvcore/StrLib.h>

#1203 fixed Shadow related visual artifacts historic_bruno
Description

Example: http://i.imgur.com/TAZdt.jpg

When the sun is at low angles and shadows are enabled, there are faint box-shaped artifacts on the terrain. They change with the camera orientation, you might see them clearly or not at all. They are most easily noticed in actor viewer, because the terrain is white, but also visible if you paint a lighter colored terrain in the normal game view.

#1204 fixed Upgrade IPB to 3.3 Brian Stempin Brian Stempin
#1206 fixed [PATCH] Garrison UI Enhancement: Shift-Click Removal leper michael
Description

Shift-Click the unit icons in Garrison UI panel to unload all of that type.

Be sure to make this distinction known in the tooltip: "Single-click to unload 1. Shift-click to unload all of this type."

#1207 fixed [PATCH] Trading Waypoints (2-parter) leper michael
Description
  1. Trade units can be tasked by the player to multiple waypoints on their journey, so that they avoide collisions, obstacles, or battlefields.

2. Trade units could waypoint between multiple markets/docks (3 or more), for a 10%-ish trading bonus for each additional market/dock. Dropped after some discussion (easily exploitable or if that is fixed hard to make obvious to the player)

#1209 fixed [PATCH] Set the traded goods for every Trader in a selected group of Traders O.Davoodi michael
Description

Set the traded goods for every Trader in a selected group of Traders. Eliminates having to do it one at a time.

Currently, you can only set the trade goods on one trader at a time. It would be best if this could be done with multiple selected traders at once.

#1210 fixed [PATCH] Player should be able to train units over all buildings in a selection. O.Davoodi michael
Description

Players should be able to train units in multiple buildings in a selection at the same time. For instance, if multiple Barracks are selected (usually via double click), then if the player clicks the "train spearman" button, a spearman should be added to the queues of all of the selected barracks. This removes unnecessary clicks and helps prevent carpal tunnel and tendonitis in players (known from experience).

#1211 fixed Waypoint enhancements for Rally Points leper michael
Description

Rally Points can have waypoints, via shift-click.

#1213 fixed [PATCH] [ATLAS] Multi-Selection object rotation trompetin17 michael
Description

Multi-Selection object rotation. Right-click rotation (as with single objects). Just rough calculate a center point of the selection and use that as a center for rotation.

#1214 fixed [PATCH] Barter Button Removal, Bartering UI Tweak fcxSanya michael
Description

Remove the 'Barter' button from the bartering panel in the Market UI. Just select the 'Sell' resource in the top row, then begin clicking the desired 'Buy' resource in the bottom row. No need for the 'Barter' button. This space can be used for the 'trade tax'. I know we went back and forth about this prior to adding bartering, but after some playtesting I feel the button is completely unnecessary. Tooltips completely suffice. Later we can add an option to turn on/off tooltips.

#1215 fixed [PATCH] Trade can occur between two incomplete buildings O.Davoodi gudo
Description

When setting up a trade route, it is possible to trade between two incomplete structures.

Place two Market foundations, but do not build them. Attempt to establish a trade route between the two Trade will happen successfully.

#1217 fixed 'hele_wall_tower' templates visual entrance differs from drop point FeXoR
Description

The 'hele_wall_tower' entities template has a visual entrance but it is on the opposite side of the drop point (where the units are placed when un-garrisoned). The drop point is placed correct (as fortresses and civil center drop points are) so only the visual part of the template has to be rotated by 180° (or PI).

#1220 fixed [PATCH] Units stick to idle animation after destination target is constructed before reaching it Matt Lott O.Davoodi
Description

When a building construction is finished, units that are walking to build it continue to move towards it while idle animation is being played.

#1221 fixed WP Widget Dev - Revision Log MishFTW MishFTW
Description

Concept has a revision log for the sidebar. Similar to Community Updates. Forum discussion: http://www.wildfiregames.com/forum/index.php?showtopic=15803

#1222 fixed [PATCH] Add Option to Disable Particles rogue-spectre Kieran P
Description

Either in game (dev overlay) or in local.cfg as a renderer.particles = false option, allow people to disable particles, because they do take processing power and some computers can't handle it.

#1223 fixed [PATCH] Redesign Sound System stwf Kieran P
Description

Redesign the sound engine. Current one is broken and full of hacks.

  • During redesign, aim to solve the current issues, namely:
    • Current engine doesn't support Mac (#685, #931)
    • Music stops playing when returning to main menu (#946)
    • Suppress sound when minimized (#1218)
  • Further improve sound system (#961)
    • Sequential/random sounds
    • Fading sounds
    • Looping sounds
#1224 fixed Shadows are offset for units and buildings Wolter Hellmund
Description

I have seen that in both units and buildings the shadows appear offset about 1 m (in the world's scale) offset away from the entity's base, in the line traced between the entity and the sun.

#1225 fixed Atlas editor resets player options when unable to load map FeXoR
Description

If a map cannot be loaded the map settings remain as chosen but the player options are unnecessarily reset.

#1226 fixed [PATCH] Queue train units via hotkeys Jonathan Waller Marco Amadori
Description

It would be nice if it would be possible to train multiple units from all selected units/building that can produce units via a simple keypress (eventually with SHIFT to batch queue).

I have a patch that enables that in a probably naive way.

#1228 fixed Add bird animations / AI wraitii Irina
Description

Birds' animation doesn't play on all maps in Alpha 9 Ides of March.

Screenshot attached.

#1232 fixed Error with qBot pathing when no enemies are left Jonathan Waller Irina
Description

Screenshot attached.

#1234 fixed [PATCH] Read formations from json files leper leper
Description

As noted in GetCivFormations in utility_functions.js the formations should probably be read from json files.

The patch also checks if a unit can actually be moved in a formation. If a unit doesn't support a specific formation it just executes the task as if it is walking alone.

This removes the use of scatter and the use of formations for female citizens as in #601.

Formations like Wedge, Testudo, Syntagma, Phalanx (and others) that are only supported by some units should be removed from template_unit.xml and added to the respective units only.

#1236 fixed WP Theming - Fine Footer MishFTW MishFTW
Description

Finalize the universal footer with all art and content.

#1238 fixed Fix our theme to work with IPB 3.2.3 Brian Stempin Brian Stempin
Description

The upgrade to IPB 3.2.3 breaks out theme pretty bad. We need to rework the theme so that it doesn't look horribly broken.

#1239 fixed Add plugins and current theme to integration instance gerbilOFdoom Brian Stempin
Description

It's time to make sure that our plugins and theme play nicely together. We need to start using our integration region to make sure all's well.

#1240 fixed WP THeming - Final Menus MishFTW Brian Stempin
Description

It's time to finish polishing the menus! We need to add art work, etc.

#1241 fixed WP Theming - Final Image Carousel MishFTW Brian Stempin
Description

Time to polish the image carrousel. Final art adjustments, size adjustments, etc.

#1242 fixed WP Theming - Final Sidebar Brian Stempin Brian Stempin
Description

Time to firm up the side-bar and it's widgets! We need to make sure that the side bar looks alright on all pages. This is more for testing than it is enhancing.

#1243 fixed WP Theming - Final Page/Post Brian Stempin Brian Stempin
Description

This is for making sure that he pages/posts match our vision document. This story is more for testing than enhancements.

#1244 fixed WP Theming - Final Header/Footer MishFTW Brian Stempin
Description

Time to add that last little bit of art work and to take care of any quarks!

#1245 fixed Theme Finalization - Review current theme with the team Erik Johansson Brian Stempin
Description

Once we close the majority of our theming tickets, it's time to show off our handy work and to ask for feed back. Once we fix any minor defects or enhancements that come out of this, we'll label the theme 1.0 in all of our documentation, GitHub, etc.

#1246 fixed Theme Finalization - Documentation and code cleanup MishFTW Brian Stempin
Description

Once we get towards the end of our 1.0 theme journey, we need to start doing some documentation and cleanup. A wiki page exists for our theme and we should work to populate it. We should also review any code we wrote and make sure that it's fit for public consumption.

#1247 fixed Website Content Creation - Image gallery Brian Stempin
Description

It's time to start using the content dev instance. A dev and one other person should work to port over the image gallery from the legacy-attempt instance. The web dev can use some database tricks to make this go much faster. New images (those on the current website that aren't in the legacy-attempt) should also be ported over.

#1248 fixed Website Content Creation - Music page MishFTW Brian Stempin
Description

A web dev and one other person should team up to create the Media-> Music page. This will require choosing one of the plugins from the plugin-dev instance, installing it into the content-dev instance, and configuring it in the appropriate place.

#1249 fixed Website Content Creation - Video Gallery Brian Stempin Brian Stempin
Description

A web dev and one other person should team up to create the Media-> Videos page. One of the plugins from the plugin-dev instance should be chosen and installed on the content-dev region. The dev and the other person need to work together to style, configure, and position the plugin.

#1250 fixed Create regular backups of the website development work Brian Stempin Brian Stempin
Description

Versioning content is a tad silly since WordPress already does that. Instead, we need to protect our development database and file structure. There are backups that are already carried out on a regular basis, but they need to be evaluated to make sure that they cover the website development effort. If they do not, then we will implement something.

#1251 fixed WP Theming - Error page Brian Stempin
Description

I just noticed that the error pages aren't pretty. We need to fix that.

#1252 fixed WP Theming - News Template MishFTW MishFTW
Description

Create a template for displaying news, archives, etc as defined here. Modifications to functions.php; style.css; news-page.php;

Forum discussion

#1253 fixed Can't use the "Post moderation" options Erik Johansson
Description

At the bottom of the topics there is the topic moderation options to the left, and the post moderation options to the right. I can't seem to be able to use the latter, the dropdown menu, and selecting the posts works fine, but nothing happens when I click the "With selected (#)" button. I've tried both in Chrome and Firefox without any luck.

#1254 fixed Spawn point (SPQR Banner) stays if Building (Temple; Aedes) gets deleted vts hennr
Description

Build a temple, set a spawn point with a right click somewhere, delete (why is this not called destroy?!) the temple. The banner does not get deleted and stays visible all time.

Other buildings were not tested.

#1255 fixed [PATCH] Wrong units move if the same number of units is selected Jonathan Waller Евгений
Description

I select two units and make them move. While they move, i select one of this units and another one, and make them move. In this case, will move those units, which I originally select. This happens only while the units are moved. And the number of newly selected units is the same as before.

Game version: Alpha 9 Ides of March. My PC: Windows 7 Ultimate, 64-bit (Service Pack 1), AMD Phenom(tm) 9850 Quad-Core Processor 2.49 GHz, GeForce GTX 260 (driver version 295.73), (two monitors 1920x1200, 1440x900), 4 Gb RAM.

#1256 fixed [PATCH] My units and other units can be selected together Mitchell K Евгений
Description

If I select unit (or building), I can not additionally select with Shift another enemy or neutral, but not my unit (or building). If i select enemy or neutral unit, building or another not my object (resource for example), I can additionally select with Shift any my units (or building), but they do not execute my orders.

Game version: Alpha 9 Ides of March. My PC: Windows 7 Ultimate, 64-bit (Service Pack 1), AMD Phenom(tm) 9850 Quad-Core Processor 2.49 GHz, GeForce GTX 260 (driver version 295.73), (two monitors 1920x1200, 1440x900), 4 Gb RAM.

#1257 fixed [PATCH] move the banner of spawn point along with the unit Itms Евгений
Description

If I set a spawn point of any buildings on unit that can transport people(like Aries), and move this units, the banner of spawn point not move, but people from this buildings will continue to go to the Aries. This can be confusing. Need to move the banner along with the Aries.

#1258 fixed qbot goes into endless loop on Death Canyon Zsolt Dollenstein
Description

When playing on Death Canyon - Invasion Force, qbot suddenly went into an endless loop, rendering the game effectively frozen and pinning one CPU to 100%.

Philip did some investigation on irc:

[22:26:30] <@Philip`> quantumstate: qbot is looping infinitely, with a pattern of function entries like
[22:26:35] <@Philip`> (resources.js:25)
[22:26:38] <@Philip`> (resources.js:43)
[22:26:39] <@Philip`> repeating forever
[22:26:42] <@Philip`> (queue.js:15)
[22:26:44] <@Philip`> (plan-building.js:46)
[22:26:47] <@Philip`> (queue-manager.js:127)

I have attached my commands.txt which reproduces the problem 100% of the time.

#1259 fixed Selected units that can't reach each other won't move when tasked Itms Евгений
Description

In some cases (as in the screenshot) units do not move anywhere, if I give them order to move. This occurs when the difficult terrain between the units. Sometimes the units begin to move (when they are closer), but only after a few seconds (up to ten). If I give order to attack (or gather resources), they immediately move towards the enemy (or resource).

Screenshot: http://i.imgur.com/qBZW6.jpg

Game version: Alpha 9 Ides of March. My PC: Windows 7 Ultimate, 64-bit

(Service Pack 1), AMD Phenom(tm) 9850 Quad-Core Processor 2.49 GHz, GeForce? GTX 260 (driver version 295.73), (two monitors 1920x1200, 1440x900), 4 Gb RAM.

#1260 fixed [PATCH] The resource carrying animation is not displayed, or displayed when not needed leper Евгений
Description

If the worker has a 20/20 resources, his bag shows only when he goes to drop resource. In all other cases (if worker stands or goes somewhere) the bag is missing. If many workers will stand with the resources, but without the bags, then you might think that they are without resources. This is confusing. I think the bag should be displayed always, if worker have at least 1/20 resources.

Happens that a worker has a 0/20 resources (it is if when he began to extract resources, you interrupt this), in which case the bag with him if you tell him to go to the building where he can drop resource. Like on screenshot: http://i.imgur.com/s3BEZ.jpg I think in this case bag and icon of resource on the panel should not be.

Game version: Alpha 9 Ides of March. My PC: Windows 7 Ultimate, 64-bit (Service Pack 1), AMD Phenom(tm) 9850 Quad-Core Processor 2.49 GHz, GeForce? GTX 260 (driver version 295.73), (two monitors 1920x1200, 1440x900), 4 Gb RAM.

#1261 fixed [PATCH] Control groups are removed after load game Mitchell K Евгений
Description

If I create (you known crtl+1,2,3...) several (or only one) control groups of units and save game, then load this save file all the control groups are removed.

And why the game can be loaded only came out to the main menu? It is not convenient.

#1262 fixed [PATCH] Make it easy to select multiple control groups Mitchell K Евгений
Description

If for example I have 50 horsemen. They are divided into two groups (Ctrl+1 and Ctrl+2) to more quickly find the enemy. But when the enemy found I need to select all horsemen immediately and order the attack. I would like to assign all the horsemen in the group number three, but if i do this the group number one and two will removed. I think the units should be allowed to be in different groups simultaneously.

Or allow the player select several groups as a several unit by pressing Shift. It will be good, if in my example, instead of keys 3, I could press 1 and Shift+2.

#1263 fixed Disable CUDA in bundled NVTT's CMake build script philip Philip Taylor
Description

The bundled libraries/nvtt/src/ tries to link against the CUDA toolkit if it can be found. That's unnecessary (we don't need the performance of CUDA) and causes various problems with CUDA toolkit incompatibility and run-time dependencies. It'd be best to just patch our version of NVTT somehow so that it never uses CUDA at all, to avoid those problems.

#1264 fixed [PATCH] Hotkey ALT+F doesn't work in Match Setup kingadami Morvin
Description

Hotkey ALT+F doesn't work in Match Setup, but it works in all other cases. Also FPS counter disappears after loading Match.

OS: Windows 7 Ultimate SP1 x64; CPU: i5-2400; Video: nVidia GeForce 210

#1278 fixed Hotkey F11 doesn't fixed in help Morvin
Description

This hotkey provides profiling information.

#1279 fixed Mistake in manual Jonathan Waller Morvin
Description

There are following mistake in manual: Ctrl + 1 (and so on up to Ctrl + 9). Create control group, but it needs to be Ctrl + 1 (and so on up to Ctrl + 0)

#1287 fixed [PATCH] Add random map 'Deep Forest' Jonathan Waller FeXoR
Description

A map of a deep forest area near the baltic sea. Somehow differing from the existing ones so nice to have IMO. Compatible to the actual svn version (11426).

Not sure if this is the right way to do this but I don't know how to do otherwise. None of the available 'component' seams to fit.

#1289 fixed [PATCH] Change placement for random maps to default 2d (x/y plane) Jonathan Waller FeXoR
Description

Changed the placement of entities in random map scripts to default 2d behavior. A unit placed with the angle 0 faces right now (towards positive x) and rotates counter clockwise when the angle is risen (mathematical positive rotation).

BUILDING_ANGlE is now -PI/4 so all random map scripts had to be changed.

Also the function 'createStartingPlayerEntities' had to be changed for that in 'misc.js'. (There you can see WHY it's changed! Unit placement angle is now the same as the direction they are placed with the civil center centered)

The resource bunches at the start locations in the random map 'fortress' are swapped but I think that doesn't matter. If Spahbod insists I will fix that.

Still no propper 'Component' to choose...

#1290 fixed Female citizens have no attack animation Aleksey
Description

Process of killing an animal is not animated: a female citizen approaches an animal, the animals life starts to drain and after it reaches zero animation of meat harvesting is played.

The melee animation is missing.

#1291 fixed [PATCH] Menu doesn't disappear automatically Deiz Aleksey
Description

Menu doesn't disappear automatically: after you open it, even if you click anywhere on the map, it will not turn off.

#1299 fixed Page up in console doesn't scroll up philip vts
Description

In the in-game console, pressing PageUp doesn't scroll the message log up properly. What happens is that all lines stay on the same position, and every keypress of PageUp merely hides an extra line from view.

Attached is a screenshot that (hopefully) clarifies the issue. This is after pressing PageUp about 9 times with a full message log.

#1305 fixed Add some informations about current game problems inside the game fabio
Description

So that users won't complain again and again about them in the forum (e.g. "the game lags"). A list of problems was already reported on the forum, see http://www.wildfiregames.com/forum/index.php?showtopic=15796&st=0&p=236295&fromsearch=1&#entry236295 .

Ideally there should be a brief list of major problems and a TODO list (as it was available in past releases announce). A page similar to the help screen should be enough.

Even better the list should be shown automatically every time the game get an update.

#1311 fixed [PATCH] Update wall_builder and add wall_demo random map leper FeXoR
Description

Updated rmgen lib wall_builder.js:

  • Updated to new object placement in random maps
  • Updated to new walls and towers of celt, hele and iber
  • Tidied and documented code
  • Added linear and circular wall placement functions

Fix random map fortress:

  • Updated to the new method that fixes the poor placement since object placement changed

Added wall_demo random map as an code example

I still don't know what component to choose...

#1313 fixed r11488 does not compile with "--without-pch" leper Julian Ospald
Description

latest svn won't compile with "--without-pch" set: ./update-workspaces.sh \

--with-system-nvtt \ --with-system-enet \ --with-system-mozjs185 \ --without-pch

relevant lines: ../../../source/ps/PreprocessorWrapper.h:35:29: error: ‘CStr’ does not name a type ../../../source/ps/PreprocessorWrapper.h:35:35: error: ISO C++ forbids declaration of ‘expr’ with no type ../../../source/ps/PreprocessorWrapper.h:37:2: error: ‘CStr’ does not name a type CCmpFootprint.cpp x86_64-pc-linux-gnu-g++ -march=native -O2 -pipe -march=native -O2 -pipe -MMD -MP -DNDEBUG -DCONFIG_FINAL=1 -DCONFIG2_FAM=0 -DLIB_STATIC_LINK -DINSTALLED_BINDIR=/usr/games/bin -DINSTALLED_DATADIR=/usr/share/games/0ad -DINSTALLED_LIBDIR=/usr/games/lib64/0ad -DWITH_SYSTEM_MOZJS185 -I/usr/X11R6/include/X11 -I/usr/X11R6/include -I/usr/include/X11 -I../../../source/pch/simulation2 -I../../../source -g -Wall -O3 -Wno-switch -Wno-reorder -Wno-invalid-offsetof -Wextra -Wno-missing-field-initializers -Wunused-parameter -Wredundant-decls -Wnon-virtual-dtor -Wundef -fstack-protector-all -D_FORTIFY_SOURCE=2 -fstrict-aliasing -fpch-preprocess -fno-omit-frame-pointer -msse -fvisibility=hidden pkg-config mozjs185 --cflags -MF obj/simulation2_Release/CCmpFootprint.d -MT "obj/simulation2_Release/CCmpFootprint.o" -o "obj/simulation2_Release/CCmpFootprint.o" -c "../../../source/simulation2/components/CCmpFootprint.cpp" ../../../source/ps/PreprocessorWrapper.cpp:37:6: error: prototype for ‘bool CPreprocessorWrapper::TestConditional(const CStr8&)’ does not match any in class ‘CPreprocessorWrapper’ ../../../source/ps/PreprocessorWrapper.h:35:7: error: candidate is: bool CPreprocessorWrapper::TestConditional(const int&) ../../../source/ps/PreprocessorWrapper.cpp:68:56: error: no ‘CStr8 CPreprocessorWrapper::Preprocess(const CStr8&)’ member function declared in class ‘CPreprocessorWrapper’ make[1]: * [obj/engine_Release/PreprocessorWrapper.o] Error 1 make: * [engine] Error 2 make: * Waiting for unfinished jobs....

workaround: don't set "--without-pch"

desired behavior: compiles both ways

#1314 fixed Set color in forum css for text_input and input_text Brian Stempin leper
Description

The css classes text_input (used by the search box) and input_text (used when creating a new topic and probably used by login and new user) don't set the color attribute.

This is a problem on systems with a dark system theme and a white (or some other light) text colour. On such systems we have a white textbox with white text and it would be nice if we could explicitly set the text colour.

#1316 fixed [PATCH] Use inotify instead of FAM/Gamin on Linux noKid Philip Taylor
Description

Currently we use the FAM API (usually implemented by Gamin, not the original FAM) to detect file and directory changes, so we can reload resources at run-time (useful for developers and modders).

Gamin doesn't seem to be actively maintained (last release was 3.5 years ago) and is a pretty heavyweight library for our needs. It'd probably be cleaner and more future-compatible to use the Linux kernel's inotify API directly, instead of using Gamin as an unnecessary wrapper around it. We don't need to support ancient pre-inotify Linux kernel versions, or non-Linux OSes.

I haven't looked into the details of inotify to see if it actually would work easily, or if there's any substantial trickiness required. Gamin has the advantage of generally working today, so it's probably not worth a huge amount of effort to change to inotify.

dir_watch_fam.cpp is the current implementation of the dir_watch API.

#1319 fixed "Are you sure" dialog for deleting entities should accept a return keypress to mean "yes" Deiz vts
Description

The "are you sure?" dialog for deleting entities should accept a return keypress to mean "yes". It's annoying to have to reach for your mouse and point and click "Yes" when you want to quickly delete an entity. Alternatively (or additionally), as proposed by Mythos_Ruler, we could also have another press of the Delete key to accept the dialog.

#1322 fixed [PATCH] FTBFS on Debian GNU/kfreebsd ben Vincent Cheng
Description

On Debian GNU/kfreebsd, 0 A.D. fails to build from source while building premake (Debian buildd logs can be found at [1]), because premake doesn't recognize Debian GNU/kFreeBSD as a valid BSD platform [2], and thinks we're running a build in a Windows environment instead. The following patch fixes this:

--- a/build/premake/premake4/src/host/premake.h
+++ b/build/premake/premake4/src/host/premake.h
@@ -15,7 +15,7 @@
 #if defined(__linux__)
 #define PLATFORM_LINUX    (1)
 #define PLATFORM_STRING   "linux"
-#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
+#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD_kernel__)
 #define PLATFORM_BSD      (1)
 #define PLATFORM_STRING   "bsd"
 #elif defined(__APPLE__) && defined(__MACH__)

#1324 fixed Camera should be preserved when loading a saved game Mitchell K
Description

Currently your view is set to the Civil Centre when you load a saved game--I don't see any reason why not to make it an even more seamless resume by restoring your viewpoint.

#1325 fixed [PATCH] Replace ecvt() in FCollada with something else Stan historic_bruno
Description

FCollada uses the deprecated POSIX function ecvt to convert floats to strings, but it's not available on FreeBSD and it would be nice to have a portable replacement. The result needs to be compatible with the COLLADA schema which uses XML's xs:double type for floats.

Possible solutions:

It's a good idea to avoid ecvt implementations that depend on dtoa, because it's also not available on FreeBSD and there are numerous buggy versions of that code around which apparently break with compiler optimizations.

#1326 fixed Implement copy/paste on OS X ben historic_bruno
Description

Pasteboards seem the way to go, as in NSPasteboard. We only need to worry about the 10.6+ API for now.

#1327 fixed Weird "GetCarryingStatus" behavior: appears to be lazily computed Jonathan Waller wraitii
Description

Fooling around with the new AI API, I noticed the "ResourceCarrying" function does not work: it returns an empty array. Tracing this back, it appears to call "GetCarryingStatus" in ResourceGatherer.js, which happens to loop through "this.carry", which is empty. However, when I activate "Display Selection State" and click on a specific unit, this functions works for that unit. This leads me to believe "this.carry" is not always updated/active, which seems like a bug. I'm unsure if it's only a problem with the AIs or other things too.

Factually, this mainly unallows the AIs to check if a unit is carrying something, to make it return the resources before doing something else.

#1333 fixed [PATCH] Add map name and size to game summary screen leper rdxi
#1334 fixed [PATCH] Make allies visible on map and minimap Deiz rdxi
Description

Each player still maintains their own LoS calculations. But when the game renders the LoS onscreen, combine Ally LoS (that is, LoS of all players on the same team) at render time to give one big LoS for same team members.

Eventually LoS techs will be implemented. So keep that in mind when implementing this (make sure any LoS tech would only affect the current players LoS - it shouldn't expand the LoS of allies).

#1338 fixed [PATCH] Add 'learn to play' item to in-game menu ben rdxi
#1343 fixed Add minimap screenshot to map info section (match setup screen) rdxi
Description

Spahbod has been working on adding map previews to game setup, it should be completed for Alpha 11.

#1345 fixed [PATCH] Shift-clicking control group GUI buttons should also add to selection Mitchell K Mitchell K
Description

#1262 has already been committed, but I realized now that clicking and double clicking the GUI buttons is equivalent to pressing and double-pressing the number keys. Shift-clicking buttons should work the same as shift-pressing number keys.

#1347 fixed Game does not exit properly after a game fabio
Description

Start 0 A.D. from a shell, start a game and then try to exit. The window close but it doesn't completely exit to the shell, you must press CTRL-C. Works OK on alpha 9.

Tested on current SVN on Ubuntu 12.04.

#1349 fixed [PATCH] change instances of "Citizen" class to "Worker" michael gudo
Description

Currently, the plough tech doesn't improve the gather rate for citizensoliders. Either the tooltip should be updated to reflect this, or the tech should be expanded to affect citizensoliders.

The attached patch takes the later approach

#1351 fixed Attack Value Bug michael
Description

This bug surfaced on 4/21/2012.

The game is now taking the Attack/Hack value and applying it to Attack/Pierce and Attack/Crush, even if those units aren't supposed to have Pierce and Crush values (they are '0'in the unit's template).

e.g.

A hero that's only supposed to have 30 Hack attack, now has 30 Hack, 30 Pierce, and 30 Crush.

#1352 fixed WP Theming - Typography MishFTW
Description

Identify and install fonts. 

Forum discussion: http://www.wildfiregames.com/forum/index.php?showtopic=15974

#1353 fixed [PATCH] Only one woman can gather from a tree Matt Lott Kieran P
Description

See http://www.wildfiregames.com/forum/index.php?showtopic=15971

#1355 fixed [PATCH] Hardware cursors should be disabled before SDL shutdown Deiz historic_bruno
Description

Since #748, I get this error on Linux when shutting down the game:

TIMER| shutdown SDL: 3.27935 ms
TIMER| shutdown UserReporter: 308.556 us
TIMER| shutdown ScriptingHost: 1.77063 ms
TIMER| shutdown ConfigDB: 0.207 us
SDL_GetWMInfo is not implemented on this platform
TIMER| resource modules: 2.98616 ms

We shouldn't be using SDL_* functions after it's shut down, instead we should free and disable hardware cursors before SDL.

Here's the call stack:

#0  get_wminfo (wminfo=...) at ../../../source/lib/sysdep/os/unix/x/x.cpp:422
        ret = 0
#1  0x0000000000c3b658 in sys_cursor_free (cursor=0x23e07e0)
    at ../../../source/lib/sysdep/os/unix/x/x.cpp:504
        impl = 0x23e07e0
        wminfo = {version = {major = 1 '\001', minor = 2 '\002', 
            patch = 14 '\016'}, subsystem = SDL_SYSWM_X11, info = {x11 = {
              display = 0x8bf2b8, window = 20, lock_func = 0x23cefb0, 
              unlock_func = 0xd34ad4, fswindow = 12841884, 
              wmwindow = 140737184310608, gfxdisplay = 0x1112990}}}
#2  0x0000000000be5b7d in Cursor_dtor (c=0x7fffede0a850)
    at ../../../source/lib/res/graphics/cursor.cpp:187
        __func__ = "Cursor_dtor"
#3  0x0000000000bddba0 in h_free_hd (hd=0x7fffede0a810)
    at ../../../source/lib/res/h_mgr.cpp:561
        vtbl = 0x110b240
#4  0x0000000000bde5b6 in Shutdown () at ../../../source/lib/res/h_mgr.cpp:784
        hd = 0x7fffede0a810
        s = {<No data fields>}
#5  0x0000000000bb88a4 in ModuleShutdown (initState=0x11129e8, 
    shutdown=0xbde53c <Shutdown()>) at ../../../source/lib/module_init.cpp:71
        latchedInitState = 17947872
        __func__ = "ModuleShutdown"
#6  0x0000000000bde696 in h_mgr_shutdown ()
    at ../../../source/lib/res/h_mgr.cpp:798
No locals.
#7  0x000000000090ee1a in Shutdown ()
    at ../../../source/ps/GameSetup/GameSetup.cpp:699
        LINE_692_ = {m_t0 = 15.855938576, 
          m_description = 0xcc3fa8 L"resource modules"}
#8  0x00000000006fe6ae in RunGameOrAtlas (argc=1, argv=0x7fffffffe238)
    at ../../../source/main.cpp:527
        args = {
          m_Args = {<std::_Vector_base<std::pair<CStr8, CStr8>, std::allocator<std::pair<CStr8, CStr8> > >> = {
              _M_impl = {<std::allocator<std::pair<CStr8, CStr8> >> = {<__gnu_cxx::new_allocator<std::pair<CStr8, CStr8> >> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, 
                _M_end_of_storage = 0x0}}, <No data fields>}, m_Arg0 = {
            path = {static npos = <optimized out>, 
              _M_dataplus = {<std::allocator<wchar_t>> = {<__gnu_cxx::new_allocator<wchar_t>> = {<No data fields>}, <No data fields>}, 
                _M_p = 0x111b7b8 L"/home/ben/0ad/binaries/system/pyrogenesis_dbg"}}, separator = 47 L'/'}}
        ran_atlas = false
        res = 1.0000000000000001e-09
#9  0x00000000006fe97c in main (argc=1, argv=0x7fffffffe238)
    at ../../../source/main.cpp:569
No locals.
#1356 fixed Clarify tech pairs in the UI leper historic_bruno
Description

Currently tech pairs look like this, with the pairs on top/bottom rows and the single techs on the top row:

http://i.imgur.com/rZWfp.png

Which is confusing because you might mistake the separate rows as simple a wrapped continuation (like other parts of the UI), so here are some ideas for a different design:

  • Separate rows with outline - the outline shows they are connected. Simple to implement http://i.imgur.com/eTL7c.png
  • Split rows - the middle row is single techs, the ones above and below are pairs. This is probably more difficult to implement http://i.imgur.com/isJoU.png
  • Split rows with outline http://i.imgur.com/SgFy9.png
  • Split icons - presumably this would open a separate panel to select between different icons http://i.imgur.com/laCnZ.png

Other suggestions are welcome :)

#1358 fixed [PATCH] Extend technology manager for template data ben historic_bruno
Description

The new tech system currently supports applying stat modifications to existing entities. But we often need the stats prior to creating the entity, for information/UI or e.g. using costs to calculate if we have sufficient resources to create the entity.

See below for discussion.

#1360 fixed [PATCH] Drop unused libboost dependencies ben fabio
Description

The attached patch remove unneded link-only dependencies on boost_system and boost_filesystem.

Tested on Linux.

#1361 fixed Qbot hangs ~2s into custom-made map vts
Description

While developing the wall placement system, I created the attached map to do some basic testing. At some point during approximately the last two weeks (call it roughly between [11494] and [11672]), something changed that caused the game to go into what looks like an infinite JS loop about 2 seconds into the map, when using qbot as the AI. This happens only when the window has focus but regardless of the user's activity, and I haven't seen this happen on other maps, nor does it happen for other AIs like Jubot.

By "hangs", I mean becomes unresponsive and takes up 100% CPU, requiring to be killed from the process monitor. I've observed this happening for revision [11683], the most recent revision at the time of writing.

Attaching WinDbg in a debug build during the hang shows that it's hanging somewhere in SpiderMonkey as a result of a call to ScriptInterface::CallFunction_ while doing some AI work.

WARNING: Stack unwind information not available. Following frames may be wrong.
mozjs185_ps_debug_1_0!JS_StrictPropertyStub+0x41210
mozjs185_ps_debug_1_0!JS_StrictPropertyStub+0x84e55
mozjs185_ps_debug_1_0!JS_StrictPropertyStub+0xe488f
mozjs185_ps_debug_1_0!JS_StrictPropertyStub+0xd0306
mozjs185_ps_debug_1_0!JS_StrictPropertyStub+0xd0977
mozjs185_ps_debug_1_0!JS_StrictPropertyStub+0xd1a34
mozjs185_ps_debug_1_0!JS_StrictPropertyStub+0x2f889
pyrogenesis_dbg!ScriptInterface::CallFunction_(unsigned int64 val = 0xffff0007`0ed263f0, char * name = 0x011c7564 "HandleMessage", unsigned int argc = 1, unsigned int64 * argv = 0x0030e428, unsigned int64 * ret = 0x0030e438)+0xbf
pyrogenesis_dbg!ScriptInterface::CallFunctionVoid<CScriptVal>(unsigned int64 val = 0xffff0007`0ed263f0, char * name = 0x011c7564 "HandleMessage", class CScriptVal * a0 = 0x0030e46c)+0x62
pyrogenesis_dbg!CAIWorker::CAIPlayer::Run(class CScriptVal state = class CScriptVal)+0x3a
pyrogenesis_dbg!CAIWorker::PerformComputation(void)+0x1cd
pyrogenesis_dbg!CAIWorker::WaitToFinishComputation(void)+0x24
pyrogenesis_dbg!CAIWorker::GetCommands(class std::vector<CAIWorker::SCommandSets,std::allocator<CAIWorker::SCommandSets> > * commands = 0x0030e548)+0x20
pyrogenesis_dbg!CCmpAIManager::PushCommands(void)+0x6a
pyrogenesis_dbg!CSimulation2Impl::UpdateComponents(class CSimContext * simContext = 0x0ca83990, class CFixed<int,2147483647,32,15,16,65536> turnLengthFixed = class CFixed<int,2147483647,32,15,16,65536>, class std::vector<SimulationCommand,std::allocator<SimulationCommand> > * commands = 0x0030f0ac)+0xe3
pyrogenesis_dbg!CSimulation2Impl::Update(int turnLength = 0n200, class std::vector<SimulationCommand,std::allocator<SimulationCommand> > * commands = 0x0030f0ac)+0x23a
pyrogenesis_dbg!CSimulation2::Update(int turnLength = 0n200, class std::vector<SimulationCommand,std::allocator<SimulationCommand> > * commands = 0x0030f0ac)+0x20
pyrogenesis_dbg!CNetTurnManager::Update(float frameLength = 0.1439294964, unsigned int maxTurns = 1)+0x430
pyrogenesis_dbg!CGame::Update(double deltaTime = 0.14392949640750885, bool doInterpolate = true)+0xed
pyrogenesis_dbg!Frame(void)+0x2b3
pyrogenesis_dbg!RunGameOrAtlas(int argc = 0n1, char ** argv = 0x02846fb0)+0x637
pyrogenesis_dbg!main(int argc = 0n1, char ** argv = 0x02846fb0)+0x15
pyrogenesis_dbg!wmain(int argc = 0n1, wchar_t ** argv = 0x02845c20)+0xfa
pyrogenesis_dbg!__tmainCRTStartup(void)+0x1bf
pyrogenesis_dbg!wmainCRTStartup(void)+0xf
pyrogenesis_dbg!CallStartupWithinTryBlock(void)+0x54
pyrogenesis_dbg!wseh_EntryPoint(void)+0xd
kernel32!BaseThreadInitThunk+0x12
ntdll!RtlInitializeExceptionChain+0x63
ntdll!RtlInitializeExceptionChain+0x36

The code at CAIWorker::CAIPlayer::Run runs

m_ScriptInterface.CallFunctionVoid(m_Obj.get(), "HandleMessage", state);

Indicating that some AI computation in qbot is going into a loop.

Attaching to a release build shows similar results: also in SpiderMonkey, after a result to a script interface call with the HandleMessage function name.

#1362 fixed Twitter Activation MishFTW
Description

We already have a neat plugin for integrating Twitter; however, one with the credentials must make changes to allow access to the play0ad account.

Forum Discussion: http://www.wildfiregames.com/forum/index.php?showtopic=15997

#1364 fixed Call to the Arms - Button JCWasmx86 Marcio
Description

A Button in GUI that call all citizen units are working forces to fight if your press that button in GUI order to select all Soldiers or citizen soldiers to attack.

All of the soldiers who are gathering will drop their resources off at the nearest dropsite, ready to defend against attackers.

this are Already discussed in forum and asked for many users http://www.wildfiregames.com/forum/index.php?showtopic=15951&st=0

#1365 fixed [PATCH] Always show hero selection rings Deiz historic_bruno
Description

To make heroes stand out more with the new selection rings, they should have a variation of their selection ring always shown (faded color or 50% alpha?). Because we might want this behavior for more than heroes, it seems better to make this a general property of the Selectable component rather than special casing heroes.

#1366 fixed [PATCH] Unit deaths inside the Fog of War Itms michael
Description

It would be nice to be able to see your soldier(s) die in the Fog of War (FoW), instead of the current behavior where they instantly disappear when they die.

#1367 fixed Ошибка HTTP 500 (Internal Server Error) vls
Description

http://wildfiregames.com/0ad/login.php - on registration.

Chrome v18.

#1370 fixed Implement defeat music leper vls
Description

See attached screenshot

#1372 fixed Minimap issue: need to lose focus to click again leper frapell
Description

If you click somewhere in the minimap, you cannot click anywhere else, unless you move the mouse outside the minimap, and move it back in again.

Steps to reproduce:

  1. Go to the minimap and click anywhere, the camera will move there
  2. Without moving the mouse away from the minimap, click anywhere else, nothing happens

Expected result:

The camera moves to each of the places clicked in the minimap without the need to move the mouse in and out

#1373 fixed Unit counter does not update when units are garrisoned Deiz frapell
Description

When you select a bunch of units, in the middle section of the bottom panel, you get the portrait of the unit with the number of units of that type. Let's call this "Unit count"

when you select a bunch of units, say 10, the "Unit count" correctly displays the number "10". If you now send those 10 units to gather in some tower (or anywhere else), 5 will enter the structure, but the "Unit count" still displays a 10, when, in fact you only have 5.

The only moment when the "Unit count" gets updated, is when you have only 1 unit left without gathering.

#1374 fixed [PATCH] JSON parsing error messages should be more helpful. Yves michael
Description

JSON parsing error messages should be more helpful. Would help use code monkeys debug our technologies. :)

#1375 fixed Technologies should support UTF-8 characters ben michael
Description

The specific names of a lot of techs will need support for UTF-8 characters.

The GUI already supports these characters for specific unit names.

#1377 fixed Error when using healers Erik Johansson
Description

Please note that it could very well be due to me using an autobuilt .exe, I don't have time to get everything setup to compile at the moment, but on the other hand I can't remember there being any healer related commits since the last autobuild.

Either way here's the error message/s:

ERROR: JavaScript error: simulation/components/Heal.js line 51 TypeError : cmpTechMan is null ()@simulation/components/ Heal.js:51 (50)@simulation/components/ UnitAI.js:2991 ()@simulation/components/ UnitAI.js:1843 ([object Object])@simulation/components/ UnitAI.js:1762 ERROR: Script message handler OnOwnershipChanged failed ERROR: CCmpRangeManager: DestroyActiveQuery called with invalid tag 779 ERROR: JavaScript error: simulation/components/Heal.js line 51 TypeError : cmpTechMan is null ()@simulation/components/ Heal.js:51 (50)@simulation/components/ UnitAI.js:2991 ()@simulation/components/ UnitAI.js:1843 ([object Object])@simulation/components/ UnitAI.js:1762 ERROR: Script message handler OnOwnershipChanged failed ERROR: CCmpRangeManager: DestroyActiveQuery called with invalid tag 781 ERROR: JavaScript error: simulation/components/Heal.js line 51 TypeError : cmpTechMan is null ()@simulation/components/ Heal.js:51 (50)@simulation/components/ UnitAI.js:2991 ()@simulation/components/ UnitAI.js:1843 ([object Object])@simulation/components/ UnitAI.js:1762 ERROR: Script message handler OnOwnershipChanged failed ERROR: CCmpRangeManager: DestroyActiveQuery called with invalid tag 1320 ERROR: JavaScript error: simulation/components/Heal.js line 51 TypeError : cmpTechMan is null ()@simulation/components/ Heal.js:51 (50)@simulation/components/ UnitAI.js:2991 ()@simulation/components/ UnitAI.js:1843 ([object Object])@simulation/components/ UnitAI.js:1762 ERROR: Script message handler OnOwnershipChanged failed ERROR: CCmpRangeManager: DestroyActiveQuery called with invalid tag 1304 Engine exited successfully on 2012-05-03 at 21:42:01 with 866 message(s), 12 error(s) and 0 warning(s).

As far as I can tell there shouldn't be anything weird in what I'm doing, or rather not doing as the above does appear when the healers automatically move from target to target. As said before I'm using the autobuilt .exe, and revision 11725

#1380 fixed [PATCH] Water reflections bug on Mac w/ Intel HD 3000 graphics vls
Description

Black border of rect move with camera. Disappear after off water reflection.

HW: Macbook pro 13" 2011 year. Latest Mac OS

#1381 fixed Alt+enter on Mac OS ben vls
Description

HW: MacBook Pro 13" 2011 (hd 3000) Mac OS 10.7.3 all updates include

After alt+enter critical error

Process:         pyrogenesis [35503]
Path:            /Applications/0ad.app/Contents/MacOS/pyrogenesis
Identifier:      com.wildfiregames.0ad
Version:         0.0.0 (0.0.0)
Code Type:       X86-64 (Native)
Parent Process:  launchd [110]

Date/Time:       2012-05-03 23:20:08.040 +0800
OS Version:      Mac OS X 10.7.3 (11D50b)
Report Version:  9

Interval Since Last Report:          685415 sec
Crashes Since Last Report:           2
Per-App Interval Since Last Report:  69 sec
Per-App Crashes Since Last Report:   1
Anonymous UUID:                      61127360-A7BD-48AD-A6DF-91C1B17E4BE8

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000

VM Regions Near 0:
--> 
    __TEXT                 000000010677f000-0000000107150000 [  9.8M] r-x/rwx SM=COW  /Applications/0ad.app/Contents/MacOS/pyrogenesis

Application Specific Information:
objc[35503]: garbage collection is OFF

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   GLEngine                      	0x000000012b02cacc gleRunVertexSubmitImmediate + 972
1   GLEngine                      	0x000000012b01d2b4 gleDrawArraysOrElements_ExecCore + 1128
2   GLEngine                      	0x000000012afa9760 glDrawElements_Exec + 468
3   com.wildfiregames.0ad         	0x00000001069433cc CPatchRData::RenderStreams(std::vector<CPatchRData*, std::allocator<CPatchRData*> > const&, boost::shared_ptr<CShaderProgram> const&, int) + 838
4   com.wildfiregames.0ad         	0x000000010696ba1a TerrainRenderer::RenderPatches(bool) + 386
5   com.wildfiregames.0ad         	0x0000000106954fb2 CRenderer::RenderShadowMap() + 164
6   com.wildfiregames.0ad         	0x00000001069553e2 CRenderer::RenderSubmissions() + 472
7   com.wildfiregames.0ad         	0x0000000106955a8f CRenderer::RenderScene(Scene&) + 131
8   com.wildfiregames.0ad         	0x00000001068cff53 CGameView::Render() + 99
9   com.wildfiregames.0ad         	0x000000010689c370 Render() + 704
10  com.wildfiregames.0ad         	0x0000000106781c2f SDL_main + 4303
11  com.wildfiregames.0ad         	0x0000000106cd95f1 -[SDLMain applicationDidFinishLaunching:] + 97
12  com.apple.Foundation          	0x00007fff8412fd32 __-[NSNotificationCenter addObserver:selector:name:object:]_block_invoke_1 + 47
13  com.apple.CoreFoundation      	0x00007fff8d859aaa _CFXNotificationPost + 2634
14  com.apple.Foundation          	0x00007fff8411bfe7 -[NSNotificationCenter postNotificationName:object:userInfo:] + 65
15  com.apple.AppKit              	0x00007fff8787260f -[NSApplication _postDidFinishNotification] + 212
16  com.apple.AppKit              	0x00007fff87872375 -[NSApplication _sendFinishLaunchingNotification] + 78
17  com.apple.AppKit              	0x00007fff8787103c -[NSApplication(NSAppleEventHandling) _handleAEOpenEvent:] + 242
18  com.apple.AppKit              	0x00007fff87870d9d -[NSApplication(NSAppleEventHandling) _handleCoreEvent:withReplyEvent:] + 330
19  com.apple.CoreFoundation      	0x00007fff8d8a3591 -[NSObject performSelector:withObject:withObject:] + 65
20  com.apple.Foundation          	0x00007fff841527eb __-[NSAppleEventManager setEventHandler:andSelector:forEventClass:andEventID:]_block_invoke_1 + 101
21  com.apple.Foundation          	0x00007fff84151772 -[NSAppleEventManager dispatchRawAppleEvent:withRawReply:handlerRefCon:] + 283
22  com.apple.Foundation          	0x00007fff84151600 _NSAppleEventManagerGenericHandler + 105
23  com.apple.AE                  	0x00007fff868dbc25 aeDispatchAppleEvent(AEDesc const*, AEDesc*, unsigned int, unsigned char*) + 200
24  com.apple.AE                  	0x00007fff868dbb03 _ZL25dispatchEventAndSendReplyPK6AEDescPS_ + 38
25  com.apple.AE                  	0x00007fff868db9f7 aeProcessAppleEvent + 250
26  com.apple.HIToolbox           	0x00007fff89eb6af9 AEProcessAppleEvent + 102
27  com.apple.AppKit              	0x00007fff8786e1a9 _DPSNextEvent + 1247
28  com.apple.AppKit              	0x00007fff8786d861 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 135
29  com.apple.AppKit              	0x00007fff8786a19d -[NSApplication run] + 470
30  com.wildfiregames.0ad         	0x0000000106cd93d4 CustomApplicationMain + 548
31  com.wildfiregames.0ad         	0x0000000106cd99b0 main + 272
32  com.wildfiregames.0ad         	0x0000000106780834 start + 52

Thread 1:: Dispatch queue: com.apple.libdispatch-manager
0   libsystem_kernel.dylib        	0x00007fff88de17e6 kevent + 10
1   libdispatch.dylib             	0x00007fff8e6355be _dispatch_mgr_invoke + 923
2   libdispatch.dylib             	0x00007fff8e63414e _dispatch_mgr_thread + 54

Thread 2:
0   libsystem_kernel.dylib        	0x00007fff88de0bca __psynch_cvwait + 10
1   libsystem_c.dylib             	0x00007fff8ba40274 _pthread_cond_wait + 840
2   com.wildfiregames.0ad         	0x0000000106d5bf9b SDL_CondWaitTimeout + 235
3   com.wildfiregames.0ad         	0x0000000106d5b92e SDL_SemWaitTimeout + 158
4   com.wildfiregames.0ad         	0x0000000106d5b9bf SDL_SemWait + 31
5   com.wildfiregames.0ad         	0x0000000106890121 CUserReporterWorker::Run() + 581
6   com.wildfiregames.0ad         	0x000000010688f641 CUserReporterWorker::RunThread(void*) + 113
7   libsystem_c.dylib             	0x00007fff8ba3c8bf _pthread_start + 335
8   libsystem_c.dylib             	0x00007fff8ba3fb75 thread_start + 13

Thread 3:
0   libsystem_kernel.dylib        	0x00007fff88de0e42 __semwait_signal + 10
1   libsystem_c.dylib             	0x00007fff8b9f2dea nanosleep + 164
2   com.wildfiregames.0ad         	0x0000000106d6374c SDL_Delay + 108
3   com.wildfiregames.0ad         	0x0000000106d6379d RunTimer + 45
4   com.wildfiregames.0ad         	0x0000000106ce839f SDL_RunThread + 127
5   com.wildfiregames.0ad         	0x0000000106d5b448 RunThread + 24
6   libsystem_c.dylib             	0x00007fff8ba3c8bf _pthread_start + 335
7   libsystem_c.dylib             	0x00007fff8ba3fb75 thread_start + 13

Thread 4:
0   libsystem_kernel.dylib        	0x00007fff88de0bca __psynch_cvwait + 10
1   libsystem_c.dylib             	0x00007fff8ba40274 _pthread_cond_wait + 840
2   com.wildfiregames.0ad         	0x0000000106d5bf9b SDL_CondWaitTimeout + 235
3   com.wildfiregames.0ad         	0x0000000106d5b92e SDL_SemWaitTimeout + 158
4   com.wildfiregames.0ad         	0x0000000106d5b9bf SDL_SemWait + 31
5   com.wildfiregames.0ad         	0x000000010692500f CTextureConverter::RunThread(void*) + 715
6   libsystem_c.dylib             	0x00007fff8ba3c8bf _pthread_start + 335
7   libsystem_c.dylib             	0x00007fff8ba3fb75 thread_start + 13

Thread 5:: Dispatch queue: com.apple.opengl.cvmDoWork
0   libsystem_kernel.dylib        	0x00007fff88ddf67a mach_msg_trap + 10
1   libsystem_kernel.dylib        	0x00007fff88dded71 mach_msg + 73
2   libCoreVMClient.dylib         	0x00007fff83534b2f cvmsServ_BuildModularFunction + 184
3   libCoreVMClient.dylib         	0x00007fff83535bd7 CVMSBuildModularFunction + 75
4   libCVMSPluginSupport.dylib    	0x00007fff8846f701 cvm_deferred_build_modular(void*) + 234
5   libdispatch.dylib             	0x00007fff8e63510a _dispatch_queue_drain + 264
6   libdispatch.dylib             	0x00007fff8e634f66 _dispatch_queue_invoke + 54
7   libdispatch.dylib             	0x00007fff8e634760 _dispatch_worker_thread2 + 198
8   libsystem_c.dylib             	0x00007fff8ba3e3da _pthread_wqthread + 316
9   libsystem_c.dylib             	0x00007fff8ba3fb85 start_wqthread + 13

Thread 6:
0   libsystem_kernel.dylib        	0x00007fff88de1192 __workq_kernreturn + 10
1   libsystem_c.dylib             	0x00007fff8ba3e594 _pthread_wqthread + 758
2   libsystem_c.dylib             	0x00007fff8ba3fb85 start_wqthread + 13

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x00000000000c2b03  rbx: 0x0000000000000600  rcx: 0x0000000000000000  rdx: 0x0000000000000000
  rdi: 0x00007fae2a9edc00  rsi: 0x0000000000000000  rbp: 0x00007fff6637d560  rsp: 0x00007fff6637d400
   r8: 0x0000000000000000   r9: 0x0000000000441808  r10: 0x0000000000000010  r11: 0x0000000000000202
  r12: 0x0000000000000600  r13: 0x0000000000000600  r14: 0x00007fae2a9edc00  r15: 0x0000000000000000
  rip: 0x000000012b02cacc  rfl: 0x0000000000010213  cr2: 0x0000000000000000
Logical CPU: 0

Binary Images:
       0x10677f000 -        0x10714ffe7 +com.wildfiregames.0ad (0.0.0 - 0.0.0) <8A1B1C65-F3B4-39C7-926B-7799F2FEB36B> /Applications/0ad.app/Contents/MacOS/pyrogenesis
       0x107552000 -        0x10757dfff  com.apple.audio.OpenAL (1.5.1 - 1.5.1) <5B954EC6-08B6-3255-932C-DDAB908E72F4> /System/Library/Frameworks/OpenAL.framework/Versions/A/OpenAL
       0x10758f000 -        0x10769cfff +libX11.6.dylib (10.0.0 - compatibility 10.0.0) <EDF51216-D36C-3012-B334-F2629DF08E68> /usr/X11/lib/libX11.6.dylib
       0x1076c6000 -        0x1076d7fff +libxcb.1.dylib (3.0.0 - compatibility 3.0.0) <D2A0CE9B-38FA-3ABD-8F02-2360A2475917> /usr/X11/lib/libxcb.1.dylib
       0x1076e4000 -        0x1076e5ff7  libCyrillicConverter.dylib (54.0.0 - compatibility 1.0.0) <C8D0607A-A668-36EE-AF03-866BD04B5611> /System/Library/CoreServices/Encodings/libCyrillicConverter.dylib
       0x1076e9000 -        0x1076eafff +libXau.6.dylib (7.0.0 - compatibility 7.0.0) <E6813580-AEC5-3CDC-BCC2-59DBFB67ADDE> /usr/X11/lib/libXau.6.dylib
       0x1076ee000 -        0x1076f1ff7 +libXdmcp.6.dylib (7.0.0 - compatibility 7.0.0) <A05CB37B-7FAC-3500-AFF5-E40D5F34198C> /usr/X11/lib/libXdmcp.6.dylib
       0x108d97000 -        0x108dc5ff7  GLRendererFloat (??? - ???) <0C213C61-C08C-3B5D-85A4-EB4660AF55BF> /System/Library/Frameworks/OpenGL.framework/Resources/GLRendererFloat.bundle/GLRendererFloat
       0x12af7f000 -        0x12b118fff  GLEngine (??? - ???) <8BA26192-A4D7-362D-8B57-5FCF4B706A25> /System/Library/Frameworks/OpenGL.framework/Resources/GLEngine.bundle/GLEngine
       0x12b14c000 -        0x12b245fff  libGLProgrammability.dylib (??? - ???) <B7710703-8652-36B8-83DD-4F216FAF0730> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLProgrammability.dylib
       0x12b26b000 -        0x12b676ff7  com.apple.driver.AppleIntelHD3000GraphicsGLDriver (7.18.11 - 7.1.8) <B3612412-7530-3FB9-AF32-C9433755CC76> /System/Library/Extensions/AppleIntelHD3000GraphicsGLDriver.bundle/Contents/MacOS/AppleIntelHD3000GraphicsGLDriver
    0x7fff6637f000 -     0x7fff663b3baf  dyld (195.6 - ???) <0CD1B35B-A28F-32DA-B72E-452EAD609613> /usr/lib/dyld
    0x7fff83160000 -     0x7fff83160fff  com.apple.ApplicationServices (41 - 41) <89B6AD5B-5C75-3E83-8C2B-AA7F4C55E400> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
    0x7fff83169000 -     0x7fff83169fff  libkeymgr.dylib (23.0.0 - compatibility 1.0.0) <61EFED6A-A407-301E-B454-CD18314F0075> /usr/lib/system/libkeymgr.dylib
    0x7fff8316a000 -     0x7fff832a0fff  com.apple.vImage (5.1 - 5.1) <A08B7582-67BC-3EED-813A-4833645964A7> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
    0x7fff8352d000 -     0x7fff8352dfff  com.apple.Accelerate.vecLib (3.7 - vecLib 3.7) <C06A140F-6114-3B8B-B080-E509303145B8> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
    0x7fff83534000 -     0x7fff83537fff  libCoreVMClient.dylib (??? - ???) <E034C772-4263-3F48-B083-25A758DD6228> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib
    0x7fff8353a000 -     0x7fff83586ff7  com.apple.SystemConfiguration (1.11.2 - 1.11) <A14F3583-9CC0-397D-A50E-17217075953F> /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
    0x7fff83587000 -     0x7fff835f7fff  com.apple.datadetectorscore (3.0 - 179.4) <B4C6417F-296C-31C1-BB94-980BFCDC9175> /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore
    0x7fff83783000 -     0x7fff83823fff  com.apple.LaunchServices (480.27.1 - 480.27.1) <4DC96C1E-6FDE-305E-9718-E4C5C1341F56> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
    0x7fff83852000 -     0x7fff8387dff7  libxslt.1.dylib (3.24.0 - compatibility 3.0.0) <4DB5ED11-004B-36B5-AE5F-2AB714754241> /usr/lib/libxslt.1.dylib
    0x7fff83fb7000 -     0x7fff83fcefff  com.apple.MultitouchSupport.framework (220.62.1 - 220.62.1) <3F8C015B-88AC-370F-B39D-B4665FB7616A> /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport
    0x7fff84115000 -     0x7fff84118ff7  com.apple.securityhi (4.0 - 1) <7146CB8E-B754-3B0E-A74E-77E9138A81C5> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI
    0x7fff84119000 -     0x7fff84432ff7  com.apple.Foundation (6.7.1 - 833.24) <6D4E6F93-64EF-3D41-AE80-2BB10E2E6323> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
    0x7fff84433000 -     0x7fff84442ff7  libxar-nossl.dylib (??? - ???) <A6ABBFB9-E4ED-38AD-BBBB-F9958B9CEFB5> /usr/lib/libxar-nossl.dylib
    0x7fff84443000 -     0x7fff8475fff7  com.apple.CoreServices.CarbonCore (960.20 - 960.20) <C45CA09E-8867-3D67-BB2E-48D2E6B0D78C> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
    0x7fff84a21000 -     0x7fff84a2bff7  liblaunch.dylib (392.35.0 - compatibility 1.0.0) <8F8BB206-CECA-33A5-A105-4A01C3ED5D23> /usr/lib/system/liblaunch.dylib
    0x7fff84a2c000 -     0x7fff84a37ff7  com.apple.speech.recognition.framework (4.0.19 - 4.0.19) <48607E6E-8612-3267-9184-E948B1863B32> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition
    0x7fff84a38000 -     0x7fff84a39fff  libDiagnosticMessagesClient.dylib (??? - ???) <3DCF577B-F126-302B-BCE2-4DB9A95B8598> /usr/lib/libDiagnosticMessagesClient.dylib
    0x7fff84a3a000 -     0x7fff84a4cff7  libsasl2.2.dylib (3.15.0 - compatibility 3.0.0) <6245B497-784B-355C-98EF-2DC6B45BF05C> /usr/lib/libsasl2.2.dylib
    0x7fff84a4d000 -     0x7fff84a63fff  libGL.dylib (??? - ???) <6A473BF9-4D35-34C6-9F8B-86B68091A9AF> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
    0x7fff84a64000 -     0x7fff84a6cfff  libsystem_dnssd.dylib (??? - ???) <998E3778-7B43-301C-9053-12045AB8544D> /usr/lib/system/libsystem_dnssd.dylib
    0x7fff84a6d000 -     0x7fff84a6dfff  com.apple.vecLib (3.7 - vecLib 3.7) <9A58105C-B36E-35B5-812C-4ED693F2618F> /System/Library/Frameworks/vecLib.framework/Versions/A/vecLib
    0x7fff84c9a000 -     0x7fff84c9cfff  libquarantine.dylib (36.2.0 - compatibility 1.0.0) <48656562-FF20-3B55-9F93-407ACA7341C0> /usr/lib/system/libquarantine.dylib
    0x7fff859b2000 -     0x7fff85a79ff7  com.apple.ColorSync (4.7.1 - 4.7.1) <EA74B067-9916-341A-9C68-6165A4656042> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSync.framework/Versions/A/ColorSync
    0x7fff85a8e000 -     0x7fff85b9bfff  libJP2.dylib (??? - ???) <F2B34A61-75F0-3BFE-A309-EE0DF4AF9E37> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib
    0x7fff85b9c000 -     0x7fff85bf0ff7  libFontRegistry.dylib (??? - ???) <F98926EF-FFA0-37C5-824C-02E436E21DD1> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib
    0x7fff85bf1000 -     0x7fff85c01ff7  com.apple.opengl (1.7.6 - 1.7.6) <C168883D-9BC5-3C38-9937-42852D719718> /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
    0x7fff85c08000 -     0x7fff85c1dfff  com.apple.speech.synthesis.framework (4.0.74 - 4.0.74) <C061ECBB-7061-3A43-8A18-90633F943295> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis
    0x7fff85c6c000 -     0x7fff85c7fff7  libCRFSuite.dylib (??? - ???) <0B76941F-218E-30C8-B6DE-E15919F8DBEB> /usr/lib/libCRFSuite.dylib
    0x7fff85cac000 -     0x7fff85d30ff7  com.apple.ApplicationServices.ATS (317.5.0 - ???) <C2B254F0-6ED8-3313-9CFC-9ACD519C8A9E> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS
    0x7fff85d3b000 -     0x7fff8601dfff  com.apple.security (7.0 - 55110) <252F9E04-FF8A-3EA7-A38E-51DD0653663C> /System/Library/Frameworks/Security.framework/Versions/A/Security
    0x7fff8602d000 -     0x7fff86030fff  libRadiance.dylib (??? - ???) <CD89D70D-F177-3BAE-8A26-644EA7D5E28E> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib
    0x7fff86031000 -     0x7fff8606afe7  libssl.0.9.8.dylib (44.0.0 - compatibility 0.9.8) <79AAEC98-1258-3DA4-B1C0-4120049D390B> /usr/lib/libssl.0.9.8.dylib
    0x7fff8606b000 -     0x7fff86184fff  com.apple.DesktopServices (1.6.2 - 1.6.2) <6B83172E-F539-3AF8-A76D-1F9EA357B076> /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv
    0x7fff86185000 -     0x7fff86185fff  com.apple.Carbon (153 - 153) <C1A30E01-E113-38A0-95CA-99360F92A37A> /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon
    0x7fff86186000 -     0x7fff86239fff  com.apple.CoreText (220.11.0 - ???) <0322442E-0530-37E8-A7D6-AEFD909F0AFE> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreText.framework/Versions/A/CoreText
    0x7fff8686d000 -     0x7fff868d7ff7  com.apple.framework.IOKit (2.0 - ???) <EEEB42FD-E3E1-3A94-A771-B1993B694F17> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
    0x7fff868d8000 -     0x7fff86917fff  com.apple.AE (527.7 - 527.7) <B82F7ABC-AC8B-3507-B029-969DD5CA813D> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
    0x7fff86918000 -     0x7fff8696cff7  com.apple.ScalableUserInterface (1.0 - 1) <33563775-C662-313D-B7FA-3D575A9F3D41> /System/Library/Frameworks/QuartzCore.framework/Versions/A/Frameworks/ScalableUserInterface.framework/Versions/A/ScalableUserInterface
    0x7fff869fd000 -     0x7fff86aa1fff  com.apple.ink.framework (1.3.2 - 110) <C8840EA4-AE7B-360C-A191-D36B5F10B6B5> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink
    0x7fff86aa2000 -     0x7fff86aa8ff7  libunwind.dylib (30.0.0 - compatibility 1.0.0) <1E9C6C8C-CBE8-3F4B-A5B5-E03E3AB53231> /usr/lib/system/libunwind.dylib
    0x7fff86aa9000 -     0x7fff86aaafff  libunc.dylib (24.0.0 - compatibility 1.0.0) <337960EE-0A85-3DD0-A760-7134CF4C0AFF> /usr/lib/system/libunc.dylib
    0x7fff86abb000 -     0x7fff86abffff  libmathCommon.A.dylib (2026.0.0 - compatibility 1.0.0) <FF83AFF7-42B2-306E-90AF-D539C51A4542> /usr/lib/system/libmathCommon.A.dylib
    0x7fff86aca000 -     0x7fff86cf2fe7  com.apple.CoreData (104.1 - 358.13) <F1DA3110-C4DF-3F0A-A057-AEE78DE8C99D> /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
    0x7fff86d39000 -     0x7fff86d69ff7  com.apple.DictionaryServices (1.2.1 - 158.2) <3FC86118-7553-38F7-8916-B329D2E94476> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
    0x7fff86d85000 -     0x7fff86ff8fff  com.apple.CoreImage (7.93 - 1.0.1) <0B7D855E-A2B6-3C14-A242-2CF2165C6E7E> /System/Library/Frameworks/QuartzCore.framework/Versions/A/Frameworks/CoreImage.framework/Versions/A/CoreImage
    0x7fff874d3000 -     0x7fff874d3fff  com.apple.Accelerate (1.7 - Accelerate 1.7) <82DDF6F5-FBC3-323D-B71D-CF7ABC5CF568> /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
    0x7fff8765f000 -     0x7fff876a2ff7  libRIP.A.dylib (600.0.0 - compatibility 64.0.0) <85D00F5C-43ED-33A9-80B4-72EB0EAE3E25> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libRIP.A.dylib
    0x7fff876a3000 -     0x7fff876a4fff  libdnsinfo.dylib (395.7.0 - compatibility 1.0.0) <37FEFE78-BCB5-37EC-8E99-747469BCA4C7> /usr/lib/system/libdnsinfo.dylib
    0x7fff877e1000 -     0x7fff877e2ff7  libremovefile.dylib (21.1.0 - compatibility 1.0.0) <739E6C83-AA52-3C6C-A680-B37FE2888A04> /usr/lib/system/libremovefile.dylib
    0x7fff87857000 -     0x7fff87864ff7  libbz2.1.0.dylib (1.0.5 - compatibility 1.0.0) <3373D310-3B10-3DD1-B754-B7B138CD448D> /usr/lib/libbz2.1.0.dylib
    0x7fff87865000 -     0x7fff88469fff  com.apple.AppKit (6.7.3 - 1138.32) <A9EB81C6-C519-3F29-89F1-42C3E8930281> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
    0x7fff8846a000 -     0x7fff8846dfff  com.apple.help (1.3.2 - 42) <BF14DE49-F7E8-336F-81FB-BBDF2DB3AC09> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help
    0x7fff8846e000 -     0x7fff88470fff  libCVMSPluginSupport.dylib (??? - ???) <B2FC6EC0-1A0C-3482-A3C9-D08446E8713A> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib
    0x7fff88471000 -     0x7fff88478fff  com.apple.NetFS (4.0 - 4.0) <433EEE54-E383-3505-9154-45B909FD3AF0> /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS
    0x7fff88479000 -     0x7fff88482ff7  libsystem_notify.dylib (80.1.0 - compatibility 1.0.0) <A4D651E3-D1C6-3934-AD49-7A104FD14596> /usr/lib/system/libsystem_notify.dylib
    0x7fff8849c000 -     0x7fff8849dff7  libsystem_blocks.dylib (53.0.0 - compatibility 1.0.0) <8BCA214A-8992-34B2-A8B9-B74DEACA1869> /usr/lib/system/libsystem_blocks.dylib
    0x7fff88512000 -     0x7fff8858dff7  com.apple.print.framework.PrintCore (7.1 - 366.1) <3F140DEB-9F87-3672-97CC-F983752581AC> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore
    0x7fff885d3000 -     0x7fff885d3fff  com.apple.CoreServices (53 - 53) <043C8026-8EDD-3241-B090-F589E24062EF> /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
    0x7fff887ab000 -     0x7fff8894afff  com.apple.QuartzCore (1.7 - 270.2) <F2CCDEFB-DE43-3E32-B242-A22C82617186> /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore
    0x7fff8898f000 -     0x7fff8899afff  com.apple.CommonAuth (2.1 - 2.0) <272CB600-6DA8-3952-97C0-5DC594DCA024> /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth
    0x7fff889cc000 -     0x7fff88ac1fff  libiconv.2.dylib (7.0.0 - compatibility 7.0.0) <5C40E880-0706-378F-B864-3C2BD922D926> /usr/lib/libiconv.2.dylib
    0x7fff88ac2000 -     0x7fff88bc4ff7  libxml2.2.dylib (10.3.0 - compatibility 10.0.0) <22F1D1B6-1761-3687-9EFD-036EA15FB2E4> /usr/lib/libxml2.2.dylib
    0x7fff88bcc000 -     0x7fff88bd2fff  libmacho.dylib (800.0.0 - compatibility 1.0.0) <165514D7-1BFA-38EF-A151-676DCD21FB64> /usr/lib/system/libmacho.dylib
    0x7fff88bf2000 -     0x7fff88c77ff7  com.apple.Heimdal (2.1 - 2.0) <3758B442-6175-32B8-8C17-D8ABDD589BF9> /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal
    0x7fff88dc3000 -     0x7fff88dc9fff  com.apple.DiskArbitration (2.4.1 - 2.4.1) <CEA34337-63DE-302E-81AA-10D717E1F699> /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
    0x7fff88dca000 -     0x7fff88deafff  libsystem_kernel.dylib (1699.24.8 - compatibility 1.0.0) <C56819BB-3779-3726-B610-4CF7B3ABB6F9> /usr/lib/system/libsystem_kernel.dylib
    0x7fff892a8000 -     0x7fff892a9ff7  libsystem_sandbox.dylib (??? - ???) <5087ADAD-D34D-3844-9D04-AFF93CED3D92> /usr/lib/system/libsystem_sandbox.dylib
    0x7fff89605000 -     0x7fff89622ff7  com.apple.openscripting (1.3.3 - ???) <4FACC89E-FDAA-3CA5-B5CD-1F4EEAEDF7CF> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting
    0x7fff89623000 -     0x7fff89671fff  libauto.dylib (??? - ???) <D8AC8458-DDD0-3939-8B96-B6CED81613EF> /usr/lib/libauto.dylib
    0x7fff89672000 -     0x7fff896adfff  com.apple.LDAPFramework (3.1 - 120.2) <5633BDE9-BDCB-35CC-BC6B-B8E4CD011D51> /System/Library/Frameworks/LDAP.framework/Versions/A/LDAP
    0x7fff89710000 -     0x7fff8974bfff  libsystem_info.dylib (??? - ???) <35F90252-2AE1-32C5-8D34-782C614D9639> /usr/lib/system/libsystem_info.dylib
    0x7fff89c12000 -     0x7fff89c12fff  com.apple.audio.units.AudioUnit (1.7.2 - 1.7.2) <04C10813-CCE5-3333-8C72-E8E35E417B3B> /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
    0x7fff89c13000 -     0x7fff89c29ff7  com.apple.ImageCapture (7.0 - 7.0) <F15FC6FB-9E88-3BE9-BABE-0454D3A502A0> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture
    0x7fff89c2a000 -     0x7fff89c38ff7  libkxld.dylib (??? - ???) <B1BD4862-9D3F-3EEF-895C-A8E2E53684B6> /usr/lib/system/libkxld.dylib
    0x7fff89c39000 -     0x7fff89d92fff  com.apple.audio.toolbox.AudioToolbox (1.7.2 - 1.7.2) <0AD8197C-1BA9-30CD-98F1-4CA2C6559BA8> /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
    0x7fff89e58000 -     0x7fff89e58fff  com.apple.Cocoa (6.6 - ???) <7EC4D759-B2A6-3A99-AC75-809FED1500C6> /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
    0x7fff89e59000 -     0x7fff89e7dfff  com.apple.RemoteViewServices (1.3 - 44) <21D7A0E7-6699-37AB-AE6C-BF69AF3D61C2> /System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices
    0x7fff89e7e000 -     0x7fff89ea5ff7  com.apple.PerformanceAnalysis (1.10 - 10) <DD87C994-66D6-330A-BAF9-AB86BE125A62> /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis
    0x7fff89ea6000 -     0x7fff8a1d0ff7  com.apple.HIToolbox (1.8 - ???) <D6A0D513-4893-35B4-9FFE-865FF419F2C2> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
    0x7fff8a1d1000 -     0x7fff8a273ff7  com.apple.securityfoundation (5.0 - 55107) <6C2E7362-CB11-3CBD-BB1C-348E4B10F25A> /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
    0x7fff8a27f000 -     0x7fff8a2acfe7  libSystem.B.dylib (159.1.0 - compatibility 1.0.0) <7BEBB139-50BB-3112-947A-F4AA168F991C> /usr/lib/libSystem.B.dylib
    0x7fff8a394000 -     0x7fff8a42aff7  libvMisc.dylib (325.4.0 - compatibility 1.0.0) <642D8D54-F9F5-3FBB-A96C-EEFE94C6278B> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
    0x7fff8a567000 -     0x7fff8a56cfff  libGIF.dylib (??? - ???) <393E2DB5-9479-39A6-A75A-B5F20B852532> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib
    0x7fff8a635000 -     0x7fff8a642fff  libCSync.A.dylib (600.0.0 - compatibility 64.0.0) <CBA71562-050B-3515-92B7-8BC1E2EEEF2A> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libCSync.A.dylib
    0x7fff8a65e000 -     0x7fff8a742e5f  libobjc.A.dylib (228.0.0 - compatibility 1.0.0) <871E688B-CF57-3BC7-80D6-F6476DFF109B> /usr/lib/libobjc.A.dylib
    0x7fff8a74d000 -     0x7fff8a7e7ff7  com.apple.SearchKit (1.4.0 - 1.4.0) <4E70C394-773E-3A4B-A93C-59A88ABA9509> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
    0x7fff8aee4000 -     0x7fff8af67fef  com.apple.Metadata (10.7.0 - 627.28) <1C14033A-69C9-3757-B24D-5583AEAC2CBA> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
    0x7fff8b1df000 -     0x7fff8b1e4fff  libcompiler_rt.dylib (6.0.0 - compatibility 1.0.0) <98ECD5F6-E85C-32A5-98CD-8911230CB66A> /usr/lib/system/libcompiler_rt.dylib
    0x7fff8b1e5000 -     0x7fff8b23dfff  libTIFF.dylib (??? - ???) <DD797FBE-9B63-3785-A9EA-0321D113538B> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
    0x7fff8b23e000 -     0x7fff8b243fff  libpam.2.dylib (3.0.0 - compatibility 3.0.0) <D952F17B-200A-3A23-B9B2-7C1F7AC19189> /usr/lib/libpam.2.dylib
    0x7fff8b2a1000 -     0x7fff8b37ffff  com.apple.ImageIO.framework (3.1.1 - 3.1.1) <DB530A63-8ECF-3B53-AC9A-1692A5397E2F> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO
    0x7fff8b388000 -     0x7fff8b39aff7  libz.1.dylib (1.2.5 - compatibility 1.0.0) <30CBEF15-4978-3DED-8629-7109880A19D4> /usr/lib/libz.1.dylib
    0x7fff8b487000 -     0x7fff8b4a3ff7  com.apple.GenerationalStorage (1.0 - 126.1) <509F52ED-E54B-3FEF-B3C2-759387B826E6> /System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/GenerationalStorage
    0x7fff8b4a4000 -     0x7fff8b4afff7  libc++abi.dylib (14.0.0 - compatibility 1.0.0) <8FF3D766-D678-36F6-84AC-423C878E6D14> /usr/lib/libc++abi.dylib
    0x7fff8b524000 -     0x7fff8b53bfff  com.apple.CFOpenDirectory (10.7 - 146) <E71AE4A2-F72B-35F2-9043-9F45CF75F11A> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory
    0x7fff8b743000 -     0x7fff8b747fff  libCGXType.A.dylib (600.0.0 - compatibility 64.0.0) <37517279-C92E-3217-B49A-838198B48787> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libCGXType.A.dylib
    0x7fff8b748000 -     0x7fff8b74aff7  com.apple.print.framework.Print (7.1 - 247.1) <8A4925A5-BAA3-373C-9B5D-03E0270C6B12> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print
    0x7fff8b74b000 -     0x7fff8b78aff7  libGLImage.dylib (??? - ???) <348729DC-BC44-3744-B249-9DFA6498344A> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib
    0x7fff8b78b000 -     0x7fff8b792ff7  com.apple.CommerceCore (1.0 - 17) <3894FE48-EDCE-30E9-9796-E2F959D92704> /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Frameworks/CommerceCore.framework/Versions/A/CommerceCore
    0x7fff8b793000 -     0x7fff8b875fff  com.apple.CoreServices.OSServices (478.37 - 478.37) <1DAC695E-0D0F-3AE2-974F-A173E69E67CC> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
    0x7fff8b876000 -     0x7fff8b87dfff  libcopyfile.dylib (85.1.0 - compatibility 1.0.0) <0AB51EE2-E914-358C-AC19-47BC024BDAE7> /usr/lib/system/libcopyfile.dylib
    0x7fff8b935000 -     0x7fff8b95bff7  com.apple.framework.familycontrols (3.0 - 300) <DC06CF3A-2F10-3867-9498-CADAE30D0CE4> /System/Library/PrivateFrameworks/FamilyControls.framework/Versions/A/FamilyControls
    0x7fff8b9ee000 -     0x7fff8bacbfef  libsystem_c.dylib (763.12.0 - compatibility 1.0.0) <FF69F06E-0904-3C08-A5EF-536FAFFFDC22> /usr/lib/system/libsystem_c.dylib
    0x7fff8bacc000 -     0x7fff8bae0ff7  com.apple.LangAnalysis (1.7.0 - 1.7.0) <04C31EF0-912A-3004-A08F-CEC27030E0B2> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis
    0x7fff8bae1000 -     0x7fff8bf0efff  libLAPACK.dylib (??? - ???) <4F2E1055-2207-340B-BB45-E4F16171EE0D> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
    0x7fff8bf91000 -     0x7fff8bfb0fff  libresolv.9.dylib (46.1.0 - compatibility 1.0.0) <0635C52D-DD53-3721-A488-4C6E95607A74> /usr/lib/libresolv.9.dylib
    0x7fff8bfb1000 -     0x7fff8bfb6ff7  libsystem_network.dylib (??? - ???) <5DE7024E-1D2D-34A2-80F4-08326331A75B> /usr/lib/system/libsystem_network.dylib
    0x7fff8bfb7000 -     0x7fff8bffdff7  libcurl.4.dylib (7.0.0 - compatibility 7.0.0) <01DD0773-236C-3AC3-B43B-07911F458767> /usr/lib/libcurl.4.dylib
    0x7fff8bffe000 -     0x7fff8c038fe7  com.apple.DebugSymbols (2.1 - 87) <149201BE-A8A4-3E40-AD65-E5194B59162E> /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols
    0x7fff8c039000 -     0x7fff8c062fff  libJPEG.dylib (??? - ???) <64D079F9-256A-323B-A837-84628B172F21> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
    0x7fff8c063000 -     0x7fff8c0c9ff7  com.apple.coreui (1.2.1 - 165.3) <378C9221-ADE6-36D9-9944-F33AE6904E4F> /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI
    0x7fff8c0ca000 -     0x7fff8c0eafff  libPng.dylib (??? - ???) <F4D84592-C450-3076-88E9-8E6517C7EF33> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
    0x7fff8c0eb000 -     0x7fff8c12bff7  libcups.2.dylib (2.9.0 - compatibility 2.0.0) <29DE948E-38C4-3CC5-B528-40C691380607> /usr/lib/libcups.2.dylib
    0x7fff8c12c000 -     0x7fff8c157ff7  com.apple.CoreServicesInternal (113.12 - 113.12) <C37DAC1A-35D2-30EC-9112-5EEECED5C461> /System/Library/PrivateFrameworks/CoreServicesInternal.framework/Versions/A/CoreServicesInternal
    0x7fff8c158000 -     0x7fff8c15efff  IOSurface (??? - ???) <03F95CAC-569C-3573-B3D7-2D211B8BDC56> /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface
    0x7fff8c15f000 -     0x7fff8c183fff  com.apple.Kerberos (1.0 - 1) <1F826BCE-DA8F-381D-9C4C-A36AA0EA1CB9> /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos
    0x7fff8c187000 -     0x7fff8c28cfff  libFontParser.dylib (??? - ???) <0920DA16-2066-33E6-BF95-AD4B0F3C22B0> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontParser.dylib
    0x7fff8c28d000 -     0x7fff8c2e8ff7  com.apple.HIServices (1.11 - ???) <DE8FA7FA-0A41-35D9-8473-5104F81DA934> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices
    0x7fff8c2e9000 -     0x7fff8c349fff  libvDSP.dylib (325.4.0 - compatibility 1.0.0) <3A7521E6-5510-3FA7-AB65-79693A7A5839> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
    0x7fff8c34a000 -     0x7fff8c39cff7  libGLU.dylib (??? - ???) <3C9153A0-8499-3DC0-AAA4-9FA6E488BE13> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
    0x7fff8c39d000 -     0x7fff8c504ff7  com.apple.CFNetwork (520.3.2 - 520.3.2) <516B611D-E53E-3467-9211-3C5B86ABA865> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
    0x7fff8c52f000 -     0x7fff8c571ff7  libcommonCrypto.dylib (55010.0.0 - compatibility 1.0.0) <BB770C22-8C57-365A-8716-4A3C36AE7BFB> /usr/lib/system/libcommonCrypto.dylib
    0x7fff8c572000 -     0x7fff8c573fff  liblangid.dylib (??? - ???) <CACBE3C3-2F7B-3EED-B50E-EDB73F473B77> /usr/lib/liblangid.dylib
    0x7fff8c574000 -     0x7fff8c582fff  com.apple.NetAuth (3.1 - 3.1) <FE7EC4D7-5632-3B8D-9094-A0AC8D60EDEE> /System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth
    0x7fff8c6c6000 -     0x7fff8c8c8fff  libicucore.A.dylib (46.1.0 - compatibility 1.0.0) <38CD6ED3-C8E4-3CCD-89AC-9C3198803101> /usr/lib/libicucore.A.dylib
    0x7fff8c8c9000 -     0x7fff8c8f6ff7  com.apple.opencl (1.50.69 - 1.50.69) <687265AF-E9B6-3537-89D7-7C12EB38193D> /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL
    0x7fff8d103000 -     0x7fff8d176fff  libstdc++.6.dylib (52.0.0 - compatibility 7.0.0) <6BDD43E4-A4B1-379E-9ED5-8C713653DFF2> /usr/lib/libstdc++.6.dylib
    0x7fff8d177000 -     0x7fff8d27efe7  libsqlite3.dylib (9.6.0 - compatibility 9.0.0) <EE02BB01-64C9-304D-9719-A35F5CD6D04C> /usr/lib/libsqlite3.dylib
    0x7fff8d378000 -     0x7fff8d3a0ff7  com.apple.CoreVideo (1.7 - 70.1) <98F917B2-FB53-3EA3-B548-7E97B38309A7> /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
    0x7fff8d7cb000 -     0x7fff8d7feff7  com.apple.GSS (2.1 - 2.0) <57AD81CE-6320-38C9-9B66-0E5A4DEA898A> /System/Library/Frameworks/GSS.framework/Versions/A/GSS
    0x7fff8d80d000 -     0x7fff8d9e1fff  com.apple.CoreFoundation (6.7.1 - 635.19) <57B77925-9065-38C9-A05B-02F4F9ED007C> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
    0x7fff8dc23000 -     0x7fff8e0eafff  FaceCoreLight (1.4.7 - compatibility 1.0.0) <E9D2A69C-6E81-358C-A162-510969F91490> /System/Library/PrivateFrameworks/FaceCoreLight.framework/Versions/A/FaceCoreLight
    0x7fff8e0eb000 -     0x7fff8e1f7fff  libcrypto.0.9.8.dylib (44.0.0 - compatibility 0.9.8) <3A8E1F89-5E26-3C8B-B538-81F5D61DBF8A> /usr/lib/libcrypto.0.9.8.dylib
    0x7fff8e1f8000 -     0x7fff8e239fff  com.apple.QD (3.40 - ???) <47674D2C-BE88-388E-B1B0-03F08BFFE5FD> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
    0x7fff8e253000 -     0x7fff8e255fff  com.apple.TrustEvaluationAgent (2.0 - 1) <1F31CAFF-C1C6-33D3-94E9-11B721761DDF> /System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent
    0x7fff8e274000 -     0x7fff8e286ff7  libbsm.0.dylib (??? - ???) <349BB16F-75FA-363F-8D98-7A9C3FA90A0D> /usr/lib/libbsm.0.dylib
    0x7fff8e287000 -     0x7fff8e28cfff  libcache.dylib (47.0.0 - compatibility 1.0.0) <1571C3AB-BCB2-38CD-B3B2-C5FC3F927C6A> /usr/lib/system/libcache.dylib
    0x7fff8e28d000 -     0x7fff8e291ff7  com.apple.CommonPanels (1.2.5 - 94) <37C6540B-F8D1-355A-806C-F93D8FB522AB> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels
    0x7fff8e632000 -     0x7fff8e640fff  libdispatch.dylib (187.7.0 - compatibility 1.0.0) <712AAEAC-AD90-37F7-B71F-293FF8AE8723> /usr/lib/system/libdispatch.dylib
    0x7fff8e641000 -     0x7fff8e645fff  libdyld.dylib (195.5.0 - compatibility 1.0.0) <380C3F44-0CA7-3514-8080-46D1C9DF4FCD> /usr/lib/system/libdyld.dylib
    0x7fff8e96a000 -     0x7fff8e987fff  libxpc.dylib (77.18.0 - compatibility 1.0.0) <26C05F31-E809-3B47-AF42-1460971E3AC3> /usr/lib/system/libxpc.dylib
    0x7fff8e988000 -     0x7fff8e9fdff7  libc++.1.dylib (19.0.0 - compatibility 1.0.0) <C0EFFF1B-0FEB-3F99-BE54-506B35B555A9> /usr/lib/libc++.1.dylib
    0x7fff8ea67000 -     0x7fff8f3f77a7  com.apple.CoreGraphics (1.600.0 - ???) <177D9BAD-72C9-3ADF-A391-5B88C5EE623F> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
    0x7fff8f3f8000 -     0x7fff8f45aff7  com.apple.Symbolication (1.3 - 91) <B072970E-9EC1-3495-A1FA-D344C6E74A13> /System/Library/PrivateFrameworks/Symbolication.framework/Versions/A/Symbolication
    0x7fff8f67a000 -     0x7fff8f6e2ff7  com.apple.audio.CoreAudio (4.0.2 - 4.0.2) <DFD8F4DE-3B45-3A2E-9CBE-FD8D5DD30923> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
    0x7fff8f6e3000 -     0x7fff8f6e9fff  libGFXShared.dylib (??? - ???) <B95E9B22-AE68-3E48-8733-00CCCA08D50E> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib
    0x7fff8f845000 -     0x7fff8f84afff  com.apple.OpenDirectory (10.7 - 146) <A674AB55-6E3D-39AE-9F9B-9865D0193020> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory
    0x7fff8f850000 -     0x7fff8f8c6fff  com.apple.CoreSymbolication (2.2 - 73.2) <126415E3-3A35-315B-B4B7-507CDBED0D58> /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication
    0x7fff8f8c7000 -     0x7fff8feabfff  libBLAS.dylib (??? - ???) <C34F6D88-187F-33DC-8A68-C0C9D1FA36DF> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 3
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 57447
    thread_create: 1
    thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=165.5M resident=107.9M(65%) swapped_out_or_unallocated=57.6M(35%)
Writable regions: Total=219.7M written=104.2M(47%) resident=142.1M(65%) swapped_out=0K(0%) unallocated=77.6M(35%)
 
REGION TYPE                        VIRTUAL
===========                        =======
CG backing stores                    7356K
CG image                               12K
CG raster data                         64K
CG shared images                     3448K
CoreGraphics                           16K
CoreServices                         1828K
IOKit                                 9.9M
JS JIT generated code                4128K
JS JIT generated code (reserved)      192K        reserved VM address space (unallocated)
MALLOC                              120.9M
MALLOC guard page                      32K
Memory tag=240                          4K
Memory tag=242                         12K
Memory tag=251                          8K
OpenGL GLSL                          1372K
OpenGL GLSL (reserved)                128K        reserved VM address space (unallocated)
STACK GUARD                          56.0M
Stack                                11.0M
VM_ALLOCATE                         564.5M
__CI_BITMAP                            80K
__DATA                               12.5M
__IMAGE                               528K
__LINKEDIT                           53.4M
__TEXT                              112.1M
__UNICODE                             544K
mapped file                          39.6M
shared memory                        2764K
===========                        =======
TOTAL                                 1.0G
TOTAL, minus reserved VM space        1.0G

Model: MacBookPro8,1, BootROM MBP81.0047.B27, 2 processors, Intel Core i5, 2.4 GHz, 4 GB, SMC 1.68f98
Graphics: Intel HD Graphics 3000, Intel HD Graphics 3000, Built-In, 384 MB
Memory Module: BANK 0/DIMM0, 2 GB, DDR3, 1333 MHz, 0x80CE, 0x4D34373142353737334448302D4348392020
Memory Module: BANK 1/DIMM0, 2 GB, DDR3, 1333 MHz, 0x80CE, 0x4D34373142353737334448302D4348392020
AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0xD6), Broadcom BCM43xx 1.0 (5.100.98.75.19)
Bluetooth: Version 4.0.3f12, 2 service, 18 devices, 1 incoming serial ports
Network Service: Wi-Fi, AirPort, en1
Serial ATA Device: ST9500325ASG, 500,11 GB
Serial ATA Device: MATSHITADVD-R   UJ-8A8
USB Device: hub_device, 0x0424  (SMSC), 0x2513, 0xfd100000 / 2
USB Device: IR Receiver, apple_vendor_id, 0x8242, 0xfd110000 / 3
USB Device: FaceTime HD Camera (Built-in), apple_vendor_id, 0x8509, 0xfa200000 / 3
USB Device: hub_device, 0x0424  (SMSC), 0x2513, 0xfa100000 / 2
USB Device: BRCM2070 Hub, 0x0a5c  (Broadcom Corp.), 0x4500, 0xfa110000 / 5
USB Device: Bluetooth USB Host Controller, apple_vendor_id, 0x821a, 0xfa113000 / 7
USB Device: Apple Internal Keyboard / Trackpad, apple_vendor_id, 0x0253, 0xfa120000 / 4

#1382 fixed ERROR: CRenderer::EndFrame: GL errors occurred Jonathan Waller fabio
Description

After building and selecting a mill I get this error:

ERROR: CRenderer::EndFrame: GL errors occurred

and its techs are corrupted like in this image:

http://img689.imageshack.us/img689/3371/corruptionot.png

#1384 fixed Out of sync error Jonathan Waller historic_bruno
Description

Get this OOS error with r11758, on the default map, 2 human players (no AIs), after tasking one of player 1's units to move. Logs are attached, a diff tool shows the only difference to be some extra data in the host's tech manager modificationsCache for player 1:

    },
    "Attack/Melee/Hack": {
      "1170": 6,
      "1461": 15
    },
    "Attack/Melee/Pierce": {
      "1170": 0,
      "1461": 0
    },
    "Attack/Melee/Crush": {
      "1170": 0,
      "1461": 0
    },
    "Armour/Hack": {
      "1170": 1,
      "1461": 9
    },
    "Armour/Pierce": {
      "1170": 1,
      "1461": 8
    },
    "Armour/Crush": {
      "1170": 5,
      "1461": 9
    },
    "ResourceGatherer/BaseSpeed": {
      "1170": 1,
      "1461": 1
    },
    "ResourceGatherer/Rates/food.fish": {
      "1170": 0.5
    },
    "ResourceGatherer/Rates/food.fruit": {
      "1170": 2
    },
    "ResourceGatherer/Rates/food.grain": {
      "1170": 0.4
    },
    "ResourceGatherer/Rates/food.meat": {
      "1170": 1
    },
    "ResourceGatherer/Rates/metal.ore": {
      "1170": 0.5
    },
    "ResourceGatherer/Rates/stone.rock": {
      "1170": 0.5
    },
    "ResourceGatherer/Rates/stone.ruins": {
      "1170": 5
    },
    "ResourceGatherer/Rates/treasure": {
      "1170": 1,
      "1461": 1
    },
    "ResourceGatherer/Rates/wood.ruins": {
      "1170": 5
    },
    "ResourceGatherer/Rates/wood.tree": {
      "1170": 0.5

I suspect GuiInterface.GetEntityState() is indirectly triggering some unsynchronized calls to ApplyModifications(). Is there a way to simply not synchronize the cache? (And a getter should probably never modify the simulation state as it's unexpected behavior)

#1385 fixed Implement wall gates Badmadblacksad- vts
Description

The current wall system as implemented in #786/r11760 does not yet have a way to add gates to an existing wall. It should be possible to select a single long wall segment and click a UI button to transform it into a gate, at a certain cost.

From an implementation point of view, this is likely to require support for multiple obstruction shapes per entity. Specifically, for the gates to operate properly, we'll need a way for a part of the obstruction box corresponding to the physical gate part in the model to be an independent shape, on which we can toggle the BLOCK_MOVEMENT flag to allow units through while open, or block them while closed.

#1387 fixed [PATCH] Limit gatherers per resource wraitii historic_bruno
Description

Currently you can order a ridiculous number of units to gather from a single resource. We need to enforce some sensible limits, whether it be farms, trees, or mines. It should be added as a new element to the ResourceSupply component. Units can be tasked to gather normally, but when reaching the target, a check is performed on the number of current gatherers. The "extra" units can move on to a similar nearby resource or go idle (or we can add some kind of queue system where units wait for a slot to open, without constantly using the pathfinder).

#1388 fixed Bug on Hyrcanian Shores random map O.Davoodi historic_bruno
Description

Fish are placed on land, as originally reported here. Just look around player 1's base. I don't know if there's meant to be water or the fish should be something else?

#1391 fixed [PATCH] Move ship to shoreline when tasking units to garrison inside mimo rogue-spectre
Description

When you garrison units inside a ship, the ship should make it's way toward the nearest coastline between it and the units trying to garrison into it. Currently, the units move to the shoreline, but the ship remains in the middle of the ocean, unreachable.

#1392 fixed [PATCH] [ATLAS] Display template name for selected units trompetin17 vts
Description

In Atlas, there does not currently appear to be any indication a selected unit's template name. This is useful for people who can't tell on sight what kind of unit they have selected.

I figure a sensible place to display it would be in the bottom panel of the Object tab, somewhere next to the Player dropdown perhaps, but suggestions are welcome.

#1394 fixed Instant serialization test failure philip historic_bruno
Description

Must enable CSimulation2Impl::m_EnableSerializationTest, then you will get an instant serialization test failure. This is in single player mode, any map, with or without AI. Attaching contents of oos_log.

#1395 fixed Idle worker selection broken Jonathan Waller Erik Johansson
Description

Or perhaps it's rather the "marking villagers as idle" part that's broken. Either way, I do have units standing idle (the case where I noticed it was with female citizens having gathered all the food from a farm) but not either moving to a similar resource (there was another farm nearby, I think it would be within the radius, but I could be wrong) or be "marked as idle". After I had ordered the unit to move a short distance and it had stopped moving it was possible to select it via the idle worker function.

#1398 fixed Atlas doesn't set the civs properly by default ben FeXoR
Description

To reproduce:

  • Edit a rms script to raise an error (remove a closing bracket for example)
  • Open Atlas (in this order because rms scripts are not reloaded when generated previously, another "bug" btw)
  • Load that "wrong" map to enforce an error

-> The player settings will now be reset (which is bad on it's own)

  • Generate a working map (without changing the player settings)

-> All players civs will be undefined (and fall back to Athenians ATM) though the GUI says something else

This is not an rmgen issue but an Atlas issue so I don't know how to fix that.

#1400 fixed Random map fortress raises an error when Thebans selected FeXoR
Description

When trying to generate a random map with a players civilization set to Thebans an error occurs due to the missing wall style "theb".

Added it (just a deepcopy of Hellenes because I couldn't find templates for Thebans) and adjusted some documentation.

#1401 fixed Generate a network syncronised random seed for AI's Jonathan Waller
Description

AI's can currently use the Math.random() function but the seed is always the same. This should be set randomly at the start of a match.

Currently AI's try to use the game's state to generate some entropy in the random numbers which is not ideal.

#1402 fixed ERROR: JavaScript error: simulation/ai/qbot/worker.js line 71 Jonathan Waller fabio
Description

While playing "Third Macedonian War" on current r11849 I get a lot of these:

ERROR: JavaScript error: simulation/ai/qbot/worker.js line 71
TypeError: ent.resourceSupplyType() is undefined
  ([object Object])@simulation/ai/qbot/worker.js:71
  ([object Object])@simulation/ai/qbot/worker.js:53
  ([object Object])@simulation/ai/qbot/worker.js:33
  ([object Object],"829",[object Object])@simulation/ai/qbot/economy.js:495
  ((function (ent) {"use strict";if (!ent.getMetadata("worker-object")) {ent.setMetadata("worker-object", new Worker(ent));}ent.getMetadata("worker-object").update(gameState);}))@simulation/ai/common-api-v2/entitycollection.js:104
  ([object Object],[object Object],[object Array])@simulation/ai/qbot/economy.js:491
  ()@simulation/ai/qbot/qbot.js:103
  ([object Object])@simulation/ai/common-api-v2/base.js:122
  @:0
ERROR: JavaScript error: simulation/ai/qbot/worker.js line 71
TypeError: ent.resourceSupplyType() is undefined
  ([object Object])@simulation/ai/qbot/worker.js:71
  ([object Object])@simulation/ai/qbot/worker.js:62
  ([object Object])@simulation/ai/qbot/worker.js:33
  ([object Object],"829",[object Object])@simulation/ai/qbot/economy.js:495
  ((function (ent) {"use strict";if (!ent.getMetadata("worker-object")) {ent.setMetadata("worker-object", new Worker(ent));}ent.getMetadata("worker-object").update(gameState);}))@simulation/ai/common-api-v2/entitycollection.js:104
  ([object Object],[object Object],[object Array])@simulation/ai/qbot/economy.js:491
  ()@simulation/ai/qbot/qbot.js:103
  ([object Object])@simulation/ai/common-api-v2/base.js:122
  @:0
ERROR: JavaScript error: simulation/ai/qbot/worker.js line 71
TypeError: ent.resourceSupplyType() is undefined
  ([object Object])@simulation/ai/qbot/worker.js:71
  ([object Object])@simulation/ai/qbot/worker.js:62
  ([object Object])@simulation/ai/qbot/worker.js:33
  ([object Object],"829",[object Object])@simulation/ai/qbot/economy.js:495
  ((function (ent) {"use strict";if (!ent.getMetadata("worker-object")) {ent.setMetadata("worker-object", new Worker(ent));}ent.getMetadata("worker-object").update(gameState);}))@simulation/ai/common-api-v2/entitycollection.js:104
  ([object Object],[object Object],[object Array])@simulation/ai/qbot/economy.js:491
  ()@simulation/ai/qbot/qbot.js:103
  ([object Object])@simulation/ai/common-api-v2/base.js:122
  @:0
ERROR: JavaScript error: simulation/ai/qbot/worker.js line 71
TypeError: ent.resourceSupplyType() is undefined
  ([object Object])@simulation/ai/qbot/worker.js:71
  ([object Object])@simulation/ai/qbot/worker.js:62
  ([object Object])@simulation/ai/qbot/worker.js:33
  ([object Object],"829",[object Object])@simulation/ai/qbot/economy.js:495
  ((function (ent) {"use strict";if (!ent.getMetadata("worker-object")) {ent.setMetadata("worker-object", new Worker(ent));}ent.getMetadata("worker-object").update(gameState);}))@simulation/ai/common-api-v2/entitycollection.js:104
  ([object Object],[object Object],[object Array])@simulation/ai/qbot/economy.js:491
  ()@simulation/ai/qbot/qbot.js:103
  ([object Object])@simulation/ai/common-api-v2/base.js:122
  @:0
ERROR: JavaScript error: simulation/ai/qbot/worker.js line 71
TypeError: ent.resourceSupplyType() is undefined
  ([object Object])@simulation/ai/qbot/worker.js:71
  ([object Object])@simulation/ai/qbot/worker.js:62
  ([object Object])@simulation/ai/qbot/worker.js:33
  ([object Object],"829",[object Object])@simulation/ai/qbot/economy.js:495
  ((function (ent) {"use strict";if (!ent.getMetadata("worker-object")) {ent.setMetadata("worker-object", new Worker(ent));}ent.getMetadata("worker-object").update(gameState);}))@simulation/ai/common-api-v2/entitycollection.js:104
  ([object Object],[object Object],[object Array])@simulation/ai/qbot/economy.js:491
  ()@simulation/ai/qbot/qbot.js:103
  ([object Object])@simulation/ai/common-api-v2/base.js:122
  @:0
#1403 fixed WARNING: No food found! (1) Jonathan Waller fabio
Description

While playing "Third Macedonian War" on current r11849 I see lot of:

WARNING: No food found! (1)

If possible they should be fixed.

If not, there should be at least a limit of them because they flood the console.

#1405 fixed OOS Errors on Random map with 2 humans and a qBot Kieran P
Description

I played a random map with me, a sibling, and a qBot (nothing fancy). Both at the same revision, both custom compiled to make sure the source was exact. OOS error within a second of the game starting. Happened on two different random maps.

See attached oos_dump.txt from my computer (will be a while till I can get the OOS from the other computer).

#1406 fixed Units walk over foundations waiting to be constructed Deiz fabio
Description

Friendly units should try to avoid walking over foundations. Otherwise they block the building from being built.

Savegame is attached, which is a good test case with a steady stream of trade units.

#1407 fixed IBP Theming - Global Navigation Brian Stempin MishFTW
Description

The three item global nav that will be available across WP, IBP and Trac. Needs to be implemented. Forum discussion: http://www.wildfiregames.com/forum/index.php?showtopic=16043

#1408 fixed Remove trees from player bases on ALL random maps O.Davoodi historic_bruno
Description

We need to check every random map script and make sure clumps of trees or other resources are not placed too near the base. Reasons: it restricts building area for both players and AIs, and it obstructs the player's view of the game. A few scattered trees would be OK, but even those should be far enough away to be able to see the base and freely move units.

The scenarios are for the most part good examples of how a player's base area should look.

#1410 fixed Improve technology manager event passing ben historic_bruno
Description

The current tech manager uses a mix of one-time events and polling. We mostly use polling, which is adequate for some but not all planned techs (see TechnologyManager.ApplyModifications). There is some overhead involved in the polling: an entity component needs to find its owner ID, find the associated player entity, then query the tech manager. So an event might be better for frequently accessed data.

The main problem is components that need complex behavior in response to techs. Health needs to allow increasing the max hitpoints for an entity yet maintain its current health level as a percentage (imagine a unit at 50/100 HP; after a +50 max HP tech, it should become 75/150 HP). But an entity can change ownership, in fact every entity starts without an owner (thus no research), and techs are player-specific. A single event at time of research is inadequate for these cases.

Instead, the tech manager should be modified to send a message not only when a tech is first researched but also when ownership of an entity changes. This will simplify the logic in other components as they will only handle a single message to update their cached state (rather than both polling and handling messages). Some non-trivial redesign of the manager and its caching may be required to achieve this.

#1411 fixed [PATCH] Allow actors that are only visible in Atlas leper historic_bruno
Description

Some entities should only be visible in Atlas for the aid of map designers, in game they should be invisible. For example, territory pull and block entities, or some types of ambient emitters (proposed in #1962). Probably this could be done with a flag in the visual actor component, which would check the flag and g_AtlasGameLoop->running or something before submitting the model for rendering.

Not sure if they should be hidden in the Atlas simulation test, but for simplicity all Atlas cases could be treated the same.

#1417 fixed [PATCH] Random maps should have random civilization by default fabio
Description

To make it truly random :)

#1421 fixed Patch premake to not generate rpath pcpa
Description

I am working on a 0ad package for Fedora, and to follow Fedora policies, rpath is not acceptable. The patch I made can be be used in this case, but I believe it should be done by library, and require extra features in premake.

#1422 fixed [PATCH] Auto-gather all type of nearby treasures Deiz fabio
Description

When a unit receive the order to gather a treasure, after getting it, it will automatically only collects near treasures of the same type (food, stone or metal). It would be nice if it will also automatically collect all type of near treasures.

This was discussed here: http://www.wildfiregames.com/forum/index.php?showtopic=16000

#1424 fixed [PATCH] Remove hardcoded paths for better Linux Packaging support leper Vincent Cheng
Description

Currently, the script that calls pyrogenesis (build/resources/0ad.sh) hardcodes the path to the pyrogenesis binary (/usr/bin/pyrogenesis), which means that Linux distros which install game binaries to /usr/games (i.e. Debian & Ubuntu) end up having to patch the file. Instead of hardcoding the path, I propose the following patch, which looks for the first instance of pyrogenesis in the user's PATH and runs that. The patch below also modifies build/resources/0ad.desktop to use a relative path for the Exec= field rather than a hardcoded path.

--- a/build/resources/0ad.sh
+++ b/build/resources/0ad.sh
@@ -1,3 +1,9 @@
 #!/bin/sh
-/usr/bin/pyrogenesis "$@"
+path_to_pyrogenesis=$(which pyrogenesis)
+if [ -x "$path_to_pyrogenesis" ] ; then
+	"$path_to_pyrogenesis" "$@"
+else
+	echo "Error: pyrogenesis cannot be found in $PATH"
+	exit 1
+fi
--- a/build/resources/0ad.desktop
+++ b/build/resources/0ad.desktop
@@ -3,7 +3,7 @@
 Name=0 A.D.
 Comment=A real-time strategy game of ancient warfare
 Comment[it]=Videogioco strategico in tempo reale di guerre antiche
-Exec=/usr/bin/0ad
+Exec=0ad
 Icon=0ad
 Terminal=false
 Type=Application
#1425 fixed [PATCH] Battle Detection zoot historic_bruno
Description

Need a way for the simulation to detect "battles", for UI, sound, and music system notifications, possibly for stats. A battle obviously shouldn't occur every time a unit is attacked, that's merely a skirmish, but rather when the attack is "significant". Maybe we can have different types of notification for skirmishes after periods of peace vs. a battle.

#1427 fixed [PATCH] Clarification of usage of s3tc pcpa
Description

I made a 0ad package and requested it to be reviewed, for packing in Fedora, but would like to have some information about possible legal issues with s3tc.

For safety, I made a patch to disable nvtt and use the existing --without-nvtt option, so that it will not require the implementation in nvidia-texture-tools.

The information I would like to have is

o Once built without nvtt, it will only have the implementation in the

bundled but not built nvtt tree?

o The textures in 0ad-data are already compressed? From my understanding,

that would mean it could just send it to the graphics engine, but then, it would have issues, for example with things like team coloring, or is that just an alpha, and the color is in the model below it?

Thanks for any information, and many thanks for the great open source project!

#1429 fixed [PATCH] Additional texture maps (specular, normal, AO) myconid historic_bruno
Description
  • Specular map - relevant now that we have specularity, this would allow marking certain parts of a texture as shiny instead of the whole material (the tip of a spear, gold flecks in a mine, the metal part of a helmet but not the leather, etc.)
  • Normal / bump map - typically used to simulate higher quality lighting details on a low poly model; due to the game's default view it may have more use on terrains
  • Ambient occlusion map - to simulate realistic lighting of models, such a texture could be precomputed by the engine on model load and cached for efficiency
#1431 fixed [PATCH] Technologies in process of research should show up along the side of the screen Deiz michael
Description

The icons of technologies currently being researched, along with green progress overlay, could show up along the side of the screen for visual quick-reference. Mouseover/hover can show a tooltip with the pertinent information. Queued items are not to be included--only those items in progress.

Possible enhancements include:

  • Include units being trained in this feature.
  • Click icon to center camera and select appropriate structure.
#1432 fixed [PATCH] Limit heroes to one living per player fcxSanya historic_bruno
Description

Heroes are too easily exploited now and because they are so important to our plans, they should be limited this way. Perhaps we could generalize BuildLimits to EntityLimits, there seems a lot of overlap between building limits and the proposed unit/hero limits.

Would fit nicely with the visual feedback of #921. The AI needs to know about the limits, too, qBot gets carried away with heroes :)

#1433 fixed Forum post reputation counter works incorrectly Brian Stempin fcxSanya
Description

Sometimes after voting for a post, its reputation counter gets reset back to 0. Person who voted is unable to vote for such post again.

#1438 fixed [PATCH] Sort out Windows log path pre-Vista ben historic_bruno
Description

With Alpha 10, the Windows data paths for the game have changed, see #1145. Logs are placed in "local application data" but Windows Vista changed the layout of application data to be more explicitly divided between roaming and local. There's a new environment variable since Vista, %localappdata%, typically used to refer to the new path for convenience. But it doesn't exist on XP and there's no equivalent, so a path constructed with %localappdata% will fail. Here's a comparison to show what we're dealing with:

  • XP/2000: C:\Documents and Settings\Ben\Local Settings\Application Data\
  • Vista+: C:\Users\Ben\AppData\Local\

It's tempting to simply use e.g. "%userprofile%\Local Settings\Application Data\" as a hack, but apparently the path is localized so that would fail for many of our users (in German it's "\Lokale Einstellungen\Anwendungsdaten\").

So there's two problems. We need a consistent way of telling Windows users how to find and access the game's logs. And we need to automate this so we don't have to mention messy details like %localappdata% in the first place. If feasible, we should put the logic into the existing OpenLogsFolder.bat. If not feasible, we should delete the batch file and make a single Trac page with clear instructions. Likewise README.txt is currently incorrect and outdated.

We need one place we can refer people for finding logs and crash dumps in Windows.

(Of course really idealistically we would have an automated error reporter tool #192/#193 and nobody would care where they were stored, but this is a short term fix)

#1439 fixed [PATCH] Livestock should not influence unit kill and death statistics. fcxSanya Deiz
Description

Currently, killing player-owned (non-Gaia) livestock increments both the kill and death counters, displayed in the post-game view.

This applies whether a player kills his own livestock, an ally does, or an enemy does. This means that a player hunting his own livestock will accumulate both kills and deaths.

As livestock only exist as a food source and take up no population, I regard them as a resource on legs and not a proper unit. The attached patch checks the two classes "Domestic" and "Animal", the former of which is only held by the Sheep and the latter of which is a redundant sanity-check.

#1444 fixed sound of gyne is vulgar ilya_chch
Description

Sound when player select gyne is vulgar and it can be unpleasant for some gamers. Also it can make some questions from surrounding people.

#1447 fixed Clarify building requirements for City Phase upgrade michael ilya_chch
Description

in civic centre is not exact discription for third stage upgrade.

now: "Requires 4 town structures of any type. Walls and Civ Centres do not count."

here must be refinement, that uphrade requires 4 town structures, that become avalible after first upgrade.

#1449 fixed [PATCH] In RMS: Fix iber civ bonus wall. Fix celt split civs errors. Add roads. vts fabio
Description

The walls generated by the walls random map library are not properly aligned. When towers have lower terrain walls "graphically penetrate" towers:

http://img339.imageshack.us/img339/1985/bugmuraintorri.png

#1452 fixed Is possible for units to fight through the wall Игорь
Description

release: alpha 10

object: walls

problem: units can beat each other over the wall being close to the wall.

#1453 fixed Website Content Creation - Download Page MishFTW MishFTW
Description

Set up and style a page dedicated to downloading the game as described in the page specifications.

#1454 fixed Rally point with hunting action leper mackwic
Description

In the current revisions, when you put a rally point on a domestic animal (e.g. pig, chicken, etc.), even if the cursor change to an hunting action, the new unit doesn't hunt.

It would be a great improvement if :

1 - The new civilian unit can hunt the animal under the rally point 2 - If this animal is dead and doesn't have any food, collect from the nearest dead, or hunting the nearest

#1460 fixed Apply a snapshot of our custom theme to the content-dev instance gerbilOFdoom Brian Stempin
Description

In order to foster content development, we should apply the current version of our theme to that instance to help authors get a look-and-feel for their content.

#1461 fixed Apply currently used plugins to the content-dev instance gerbilOFdoom Brian Stempin
Description

In order to help foster content creation, our current plugins should be applied to the content-dev region to help give authors a look-and-feel of content in our new site.

#1462 fixed [PATCH] Technologies should support folders Jonathan Waller michael
Description

I'd like technologies to support folders so that they can be divided by culture. I already have an example in the simulation/technologies/hellenes folder.

Example in the templates:

  <ProductionQueue>
    <Technologies datatype="tokens">
	  hellenes/special_iphicratean_reforms
    </Technologies>
  </ProductionQueue>
#1463 fixed Add support for OpenBSD leper Anthony J. Bentley
Description

Make these libraries compile on OpenBSD and fix all remaining issues.

FCollada r11936
nvtt r11962 upstream bug report
SpiderMonkey r11942

#1469 fixed Replace info icon in civilization info dialog ben andrew123
Description

Screenshot:

#1473 fixed Formation bug when separate units ordered to move to point between them Deiz BazonTSK
Description

Two units, separated by distance, both selected and tasked to meet in the middle, do not actually move to the selected point. They move a bit and then stop.

All can be seen on the video http://youtu.be/GfFFNdKFoPA

#1476 fixed Formation tasked to repair/build stops after unit is killed leper historic_bruno
Description

Task a group of units to build something, kill one of them, and they all stop instead of continuing.

Likely related to r11876.

#1477 fixed Show selection overlay for actors in Atlas vts historic_bruno
Description

We lost this when #824 was fixed. Actors don't have a Footprint and previously we would add a default selection ring for them, but now it silently fails.

Possible solutions: add a default Footprint to actor template construction or somehow use the bounding box of the actor to calculate a decent size. I think we could get by with the former since it would be no worse than we had before, and avoids having to add a bunch of special case handling to CCmpSelectable. Just need to make sure adding a Footprint to actors has no unintended side effects (I can't think of any yet). Of course it would look better if the overlay was scaled for different sized actors, if there's a reasonable way of doing so.

#1478 fixed [PATCH] Broken animation causing infinite loop in archive builder ben historic_bruno
Description

Got this report from ricotz in IRC. When the archive builder hits shark_walk.dae (which is currently broken due to incomplete skeletons.xml) it apparently enters an infinite loop and eventually runs out of memory. I couldn't reproduce this on Windows, it throws an exception, logs the error and continues as expected.

Here's a call stack after interrupting the program: http://paste.debian.net/plain/172273

binaries/data/mods/public/art/animation/quadraped/shark_walk.dae

Program received signal SIGABRT, Aborted.
0x00007ffff44f7445 in __GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64	../nptl/sysdeps/unix/sysv/linux/raise.c: Datei oder Verzeichnis nicht gefunden.
(gdb) bt
#0  0x00007ffff44f7445 in __GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1  0x00007ffff44fabab in __GI_abort () at abort.c:91
#2  0x00007ffff4defc6d in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3  0x00007ffff4dedd76 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4  0x00007ffff4dedda3 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5  0x00007ffff4dedfce in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6  0x00007ffff4dee4ad in operator new(unsigned long) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#7  0x00007fffe6568a89 in allocate (__n=<optimized out>, this=<optimized out>) at /usr/include/c++/4.7/ext/new_allocator.h:94
#8  _M_allocate (__n=<optimized out>, this=<optimized out>) at /usr/include/c++/4.7/bits/stl_vector.h:169
#9  std::vector<BoneTransform, std::allocator<BoneTransform> >::_M_insert_aux (this=this@entry=0x7fffffffc250, __position=..., __x=...) at /usr/include/c++/4.7/bits/vector.tcc:343
#10 0x00007fffe656942f in insert (__x=..., __position=..., this=0x7fffffffc250) at /usr/include/c++/4.7/bits/vector.tcc:128
#11 operator= (__value=..., this=<synthetic pointer>) at /usr/include/c++/4.7/bits/stl_iterator.h:634
#12 __copy_m<BoneTransform*, std::insert_iterator<std::vector<BoneTransform> > > (__result=..., __last=0xbb473c, __first=0xbb44d4) at /usr/include/c++/4.7/bits/stl_algobase.h:329
#13 __copy_move_a<false, BoneTransform*, std::insert_iterator<std::vector<BoneTransform> > > (__result=..., __last=0xbb473c, __first=0xbb4480) at /usr/include/c++/4.7/bits/stl_algobase.h:384
#14 __copy_move_a2<false, __gnu_cxx::__normal_iterator<BoneTransform*, std::vector<BoneTransform> >, std::insert_iterator<std::vector<BoneTransform> > > (__result=..., __last=..., __first=...)
    at /usr/include/c++/4.7/bits/stl_algobase.h:422
#15 copy<__gnu_cxx::__normal_iterator<BoneTransform*, std::vector<BoneTransform> >, std::insert_iterator<std::vector<BoneTransform> > > (__result=..., __last=..., __first=...)
    at /usr/include/c++/4.7/bits/stl_algobase.h:454
#16 PSAConvert::ColladaToPSA (input=<optimized out>, output=..., xmlErrors=...) at ../../../source/collada/PSAConvert.cpp:133
#17 0x00007fffe6569ee0 in convert_dae_to_whatever (
    dae=0xb83cb8 "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<COLLADA xmlns=\"http://www.collada.org/2005/11/COLLADASchema\" version=\"1.4.1\">\n  <asset>\n    <contributor>\n      <author>Blender User</author>\n      <authoring_t"..., writer=0x5c9140 <(anonymous namespace)::ColladaOutput(void*, char const*, unsigned int)>, cb_data=0x7fffffffd5c0, 
    conv=0x7fffe65684a0 <ColladaToPSA(char const*, OutputCB&, std::string&)>) at ../../../source/collada/DLL.cpp:116
#18 0x00000000005cadbd in Convert (type=<optimized out>, pmdFilename=..., daeFilename=..., this=0xb16460) at ../../../source/graphics/ColladaManager.cpp:154
#19 CColladaManager::GenerateCachedFile (this=<optimized out>, sourcePath=..., type=CColladaManager::PSA, archiveCachePath=...) at ../../../source/graphics/ColladaManager.cpp:316
#20 0x000000000056f0f4 in CArchiveBuilder::Build (this=0x7fffffffdb00, archive=..., compress=<optimized out>) at ../../../source/ps/ArchiveBuilder.cpp:137
#21 0x0000000000423f6c in RunGameOrAtlas (argc=argc@entry=3, argv=argv@entry=0x7fffffffdeb8) at ../../../source/main.cpp:515
#22 0x000000000041a327 in main (argc=3, argv=0x7fffffffdeb8) at ../../../source/main.cpp:572
#1487 fixed [PATCH] Prevent land fauna from attacking ships Peter
Description

When ship attack lion, lion reply and attack ship, but he gets "into" the ship, to the core for attack, It causes of graphic issue. Lion just get absorbed by ship. And the second, I wish you could highlight cursos.And made spears a lil bit bigger, cuz sometimes hard to see it when grass on a background

#1489 fixed [PATCH] Add UI command/hotkey to override enemy gather with attack ben Peter
Description

When I clicked on field of enemy, my soldiers start harvesting, I think they were supposed to attack it =) I guess u need to change it

#1490 fixed TechnologyManager produces errors in Atlas under obscure conditions vts
Description

To reproduce:

  • Start Atlas on a blank map and place a civil center owned by Gaia
  • Go to the Player tab and set the number of players to 7 (anything less than 8 seems to trigger it)
  • Start the simulation, click OK on the defeated dialog and reset the simulation again
  • Select the civil center, go to the Object tab and set Player 1 as its owner

This produces the following:

WARNING: JavaScript warning: simulation/components/TechnologyManager.js line 201 reference to undefined property "structures/celt_civil_centre"
WARNING: JavaScript warning: simulation/components/TechnologyManager.js line 215 reference to undefined property "Structure"
WARNING: JavaScript warning: simulation/components/TechnologyManager.js line 219 reference to undefined property this.typeCountsByClass[classes[i]]
ERROR: JavaScript error: simulation/components/TechnologyManager.js line 219 TypeError: this.typeCountsByClass[classes[i]] is undefined ([object Object])@simulation/components/TechnologyManager.js:219
ERROR: Script message handler OnGlobalOwnershipChanged failed
#1493 fixed [PATCH] Data-driven texture loading myconid myconid
Description

At the moment, actor files only permit a <texture> tag, which allows the loading of a single diffuse texture per actor.

I propose a new system that allows multiple texture <samplers> to be loaded dynamically from the Actor files, thus deprecating the existing <texture> tag.

Under this system, the fixed renderpath looks for a hardcoded sampler named "baseTex", which represents the diffuse texture that <texture> used to provide. There are no other changes to the way the fixed renderpath works.

The real usefulness of this addition, however, becomes apparent in shader mode. An arbitrary number of samplers can be loaded and bound to identifier names, which are automatically exposed in the shader program associated with the Actor's material. This sets up a framework that is better suited for visual effects that require data from samplers, such as normal and specular mapping.

This proposal allows samplers to be loaded in the Actor xml files as follows:

    <samplers>
        <sampler name="baseTex" path="base.png"/>
        <sampler name="normTex" path="norm.png"/>
    </samplers>

The "baseTex" is seen by the fixed renderer as if it is a <texture> tag. In the shaders, these will be bound to:

    uniform sampler2D baseTex;
    uniform sampler2D normTex;

Note that <texture> is deprecated but not removed. Under the hood, it redirects to the generalised <sampler> code.

#1495 fixed Crash on Linux setting a sequence of rally points vts vts
Description

halcyonXIII encountered a crash when setting a sequence of rally points for a structure, using svn rev. 11951.

Steps to reproduce:

  1. Select a building which can produce or garrison units.
  2. Hold down the Shift key, and set a chain of rally points anywhere.
  3. Usually on about the 5th rally point, 0AD crashes.

Occasionally, the crash produces this log:

Function call failed: return value was -120000 (Handle index completely out of bounds)
Location: h_mgr.cpp:197 (h_data_from_idx)

Call stack:

(0x7f4caa) ./pyrogenesis() [0x7f4caa]
(0x79fc11) ./pyrogenesis() [0x79fc11]
(0x7a08ee) ./pyrogenesis() [0x7a08ee]
(0x7a00e9) ./pyrogenesis() [0x7a00e9]
(0x7c33f3) ./pyrogenesis() [0x7c33f3]
(0x7cad95) ./pyrogenesis() [0x7cad95]
(0x5e81e4) ./pyrogenesis() [0x5e81e4]
(0x675537) ./pyrogenesis() [0x675537]
(0x65aade) ./pyrogenesis() [0x65aade]
(0x65ad39) ./pyrogenesis() [0x65ad39]
(0x65b62c) ./pyrogenesis() [0x65b62c]
(0x6510c4) ./pyrogenesis() [0x6510c4]
(0x65191f) ./pyrogenesis() [0x65191f]
(0x587fa1) ./pyrogenesis() [0x587fa1]
(0x41d9b3) ./pyrogenesis() [0x41d9b3]
(0x4135d7) ./pyrogenesis() [0x4135d7]

errno = 0 (No error reported here)
OS error = ?

The crash is confirmed to be reproducible on Linux (tested on flavors of Ubuntu), but not on Windows.

#1496 fixed [PATCH] Ranged attack bugs when targeting garrisoning, formation, or dead units Josh historic_bruno
Description

There's a few bugs related to #18 / r11886, reproducible as follows:

  • Error: a unit is fired upon while garrisoning. Ranged enemy units approach and attack some of your units. Meanwhile garrison your units in e.g. towers. If there's enough attackers and enough of your units, by chance a missile will be fired while your units are garrisoning, when it "hits" the entity has gone off-world (into the tower).
  • Error: units are fired upon while in formation. Select several units and move them around an enemy ranged unit (towers work well) without stopping, until they get hit. This causes the null footprint error: the target entity is a "special/formation".
  • Attack fails: a unit dies while being fired upon. To reproduce this it helps to have several towers with units garrisoned inside, firing upon numerous enemy units.

The first and third cases need a solution where the target calculation is independent of whether the target entity still exists in-world (perhaps with a temporary entity created for that purpose as Philip originally suggested?) Otherwise we potentially ignore friendly fire and splash damage.

The second case should never happen, it's not possible for a player to target a formation but only a single entity in a formation. So something is going wrong with the target selection.

#1497 fixed [PATCH] Support for multiple UV sets per model myconid myconid
Description

Collada files can support more than one UV coordinate set, however 0ad's .PMD version 3 files are unable to store them so they are currently ignored.

0ad's models use overlapping UVs to make optimal use of UV space on their base textures. While this is beneficial, it makes it impossible to implement more advanced texturing techniques, such as lightmaps (e.g., AO maps), decal maps and so on.

The attached patch upgrades the engine to .PMD version 4, which introduces support for multiple UV sets.

#1498 fixed [PATCH] Fire particles for roman temple Noël Ströhmer Noël Ströhmer
Description

The firepits in front of the roman temple were used as an example how future fire effects could look.

New emitters, particle types and particle grapics were used.

Attached are the changed files in original directory hierarchy. NOTE: Full changes are only visible on the roman temple atm.

#1499 fixed Shared LOS causing error in actor viewer historic_bruno historic_bruno
Description

Assertion failure introduced by [11949]:

Assertion failed: "it != m_SharedLosMasks.end()"
Location: CCmpRangeManager.cpp:1032 (CCmpRangeManager::GetSharedLosMask)

The problem is actor viewer has a separate simulation with no map or player settings, so the shared LOS data doesn't get initialized.

Actor viewer does a full map reveal, so a potential fix is to replace GetSharedLosMask() with 0xFFFFFFFFu when constructing a CLosQuerier in the map revealed case. Anyway I don't see a point in calculating the LOS mask in that case, the player should see all LOS :)

#1500 fixed WP Maintenance - Update to 3.4.1 Brian Stempin MishFTW
Description

Update all instances to 3.4. Forum discussion.

#1503 fixed [PATCH] messages.js: handleNetMessage() obj.caption overwritten ben picobyte
Description

There are missing break statements in messages.js: handleNetMessage() causing obj.caption to be overwritten.

#1504 fixed [PATCH] Multiplayer lobby Josh Badmadblacksad-
Description

Hello, the multiplayer lobby is back, more than 6 months late. Sorry about that. The patch attached adds an in-game multiplayer lobby and a tool (XpartaMuPP) to manage created games. It uses the XMPP protocol.

After applying the patch, you will find a README in source/tools/XpartaMuPP/ which explains how to install and configure the XMPP server (ejabberd) and XpartaMuPP.

To build the game you will need to install the gloox library (cpp XMPP library). svn co svn://svn.camaya.net/gloox/branches/1.0 gloox-1.0 ./configure make make install

Let me know if you have any issue building / running the game with this patch, it will help me to improve the documentation.

The patch is not ready to be committed yet, I'm just asking for a review, and at the same time if anyone is willing to help me to improve the UI (there are great artists among you!), it would be much appreciated. Thanks.

#1505 fixed Premake build broken on OS X leper historic_bruno
Description

Related to r11970 which integrated some changes from Premake 4.4-beta4. A clean build now gives the following error:

Undefined symbols for architecture x86_64:
  "_Gestalt", referenced from:
      _os_getversion in os_getversion.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [../../bin/release/premake4] Error 1
make: *** [Premake4] Error 2

It needs to link the CoreServices framework for Gestalt, used on OS X builds for the new os.getversion() functionality. The problem is that would break the build on e.g. Linux, presumably one of the reasons why Premake has a separate build/gmake.macosx directory. There's a few other differences, if we choose to go that route, we could fix the annoying warnings of #1179 at the same time.

Though we need to check to make sure we don't introduce subtle bugs when fixing this, since we bundle a highly modified Premake ;)

#1508 fixed [PATCH] Font loader incorrectly assumes 32bpp Deiz Deiz
Description

Last night I optipng'd a few font PNGs that I'd rendered for Brian. This lead to severe memory issues and apparently segfaults. 0 A.D. assumes that "rgba" fonts will be RGBA, although as they actually only contain grayscale plus alpha, any PNG optimization program will set the colour type to grayscale+alpha rather than RGBA.

Auto-detection for colour types is present, it just doesn't work properly on the 8bpp fonts because 8bpp is typically interpreted as grayscale, not alpha. However, all the other format assumptions that choose_fmt() makes are unambiguous: 16bpp is grayscale+alpha, 24bpp is RGB, 32bpp is RGBA.

My patch is quite trivial and I've confirmed it works for grayscale+alpha, RGB, and RGBA images.

#1509 fixed delete, garrison, build keys no longer working picobyte
Description

in current git the buttons for delete, garrison and build are no longer working

#1510 fixed WP Theming - Developers' Area Artwork Pureon MishFTW
Description

Something similar to, if not the same, shown in the mockup. Must be 230px wide.

#1511 fixed Workers will start building field foundations when the building they worked on is built Deiz wraitii
Description

Builders, when they become idle, will switch to any nearby foundation and start building it. While this is the intended behavior, it has the unfortunate side-effect of also working with farms: a builder may see an unbuilt farm and go build it... Turning him into a farmer when the farm is finished.

I find it inconvenient: one usually wants to return the builders to their original task/something else and one may "lose" units from sight.

I suggest changing the UnitAI behavior to only work with all nearby non-field foundations.

#1513 fixed [PATCH] Bug on Deep Forest random map FeXoR historic_bruno
Description

See http://www.wildfiregames.com/forum/index.php?showtopic=16201 for original report.

The problem is Deep Forest is placing chickens (possibly other things?) inside the player's starting CC, which indirectly cripples AI but it doesn't help the player either :)

#1516 fixed [PATCH] premake adds random flags Julian Ospald
Description

x86_64-pc-linux-gnu-g++ -march=native -O2 -pipe -Wall -ggdb -march=native -O2 -pipe -Wall -ggdb -MMD -MP -DNDEBUG -DCONFIG_FINAL=1 -DCONFIG2_FAM=0 -DLIB_STATIC_LINK -DINSTALLED_BINDIR=/usr/games/bin -DINSTALLED_DATADIR=/usr/share/games/0ad -DINSTALLED_LIBDIR=/usr/games/lib64/0ad -DWITH_SYSTEM_MOZJS185 -I/usr/X11R6/include/X11 -I/usr/X11R6/include -I/usr/include/X11 -I../../../source/pch/gui -I../../../source -g -Wall -O3 -Wno-switch -Wno-reorder -Wno-invalid-offsetof -Wextra -Wno-missing-field-initializers -Wunused-parameter -Wredundant-decls -Wnon-virtual-dtor -Wundef -fstack-protector-all -D_FORTIFY_SOURCE=2 -fstrict-aliasing -fpch-preprocess -fno-omit-frame-pointer -msse -fvisibility=hidden pkg-config mozjs185 --cflags sdl-config --cflags -MF obj/gui_Release/CInput.d -MT "obj/gui_Release/CInput.o" -o "obj/gui_Release/CInput.o" -c "../../../source/gui/CInput.cpp" IGUIObject.cpp

As you can see the build system adds random flags and overwrites some system flags including optimization, hiding warnings and such.

#1519 fixed Warning in actor viewer when previewing attack animations historic_bruno
Description

Another symptom of actor viewer lacking player assignments (see #1499). Attack animations use the Attack component which tries to apply techs:

WARNING: GetPlayerByID: no player defined for id '0'
(0)@simulation/components/PlayerManager.js:28
QueryOwnerInterface(5,28)@simulation/helpers/Player.js:168
("Melee")@simulation/components/Attack.js:298 @(eval):1

Everything works because Attack handles this failure gracefully. I don't know if we should add proper player data to actor viewer's simulation (and keep it synced with the editor's simulation) or just squash the warning.

#1520 fixed Add technology support to AIs historic_bruno
Description

AIs currently ignore the existence of technologies. The following are changes needed at minimum to fully support techs:

  • Modify the AI's entity template data in response to tech modifications (see #1358)
  • Modify entity collections in response to tech modifications
  • Pass list of researched and available techs through to the AIs
  • Add some research plans to the AIs, starting with qBot
#1522 fixed [PATCH] RMS Deep Forest crashes with out of memory O.Davoodi FeXoR
Description

When generated on large or larger maps with only a few players the random map script fails with out of memory.

Here's a patch that fixes that by reducing the maximum tree density depending on map size and number of players.

#1523 fixed [PATCH] Persian archers regress to normal bows in attack animation ben Doménique
Description

I noticed that the Persion infantry archers and the hero Xerxes normally sport the bow_recurve as their weapon. In the attack/melee animation a normal bow(_short) is shown, probably because the files have been copied from another civ which uses those bows.

This patch fixes the minor cosmetic issue by adjusting the props in the actor files. I have included a patch file, although it easily fixed by hand as well.

Units affected: units/pers_hero_xerxes units/pers_infantry_archer_a units/pers_infantry_archer_b units/pers_infantry_archer_e

#1524 fixed [PATCH] GUI's right panel types can clash Deiz Deiz
Description

While the display of construction and training icons in the GUI seems to be mutually exclusive, trading icons can be shown over top of other icons, e.g. if your first selected entity is a trader and your selection also includes a builder.

The patch also fixes a few related usability issues: Technologies are now listed provided there's only one row of icons, and the first selected unit's right panel is never clobbered by subsequent units.

An example of the latter occurs when selecting one of the few units that produces other units, followed by a builder (resulting in the trainable units disappearing).

#1525 fixed [PATCH] Player-owned animals are deletable (kill button). This is incorrect behavior. yakca michael
Description

Player-owned animals (sheep, goats, anything) are deletable (kill button). This is incorrect behavior. The player's units should have to kill them first.

#1527 fixed [PATCH] Boost 1.50 support: removed filesystem v2 ben Sven-Hendrik Haase
Description

In Boost 1.50 filesystem v2 was entirely removed. It is fairly safe to change to boost filesystem v3 as this has been included since forever.

For the record, the initial error you run into while making is this:

/usr/include/boost/filesystem/config.hpp:16:5: error: #error Compiling Filesystem version 3 file with BOOST_FILESYSTEM_VERSION defined != 3

I think this should definitely be fixed before the next release because enabling people to build with the newest version of boost is important.

#1529 fixed Walls can be constructed on top of existing walls Deiz gudo
Description

Steps to recreate:

*Build a wall segment long enough for a gate
*Turn said segment into a gate
*Attempt to build a wall over the gate (re-build the exact same segment)

*It is impossible to build other structures inside the gate.
*This will work regardles of wether or not the gate is locked.
*This will only work when you try to rebuild the exact same segment that you turned into a gate. (You cannot have a new wall bisect a gate)

#1530 fixed [PATCH] Load dialogue uses UTC instead of local time. Deiz Deiz
Description

Mozilla's documentation indicates that the regular date-related functions will always use local time.

Aside from very minor edge cases (displayed times shifting by an hour in DST locales, when DST starts or stops) I think this is a no-brainer usability improvement.

#1533 fixed [PATCH] Now that gates work replace open entries with gates as the default for RMGEN wall placement O.Davoodi FeXoR
Description

In many cases entries was used (just a gap in the wall) since gates did not work. Now that gates are passable I removed the entries with gates in wall_builder.js for random map generation.

#1535 fixed Jubot error Deiz CoolleR
Description

Jubot AI incorrectly works. Screenshot attached

#1537 fixed [PATCH] Melee attack on a running target sanderd17 CoolleR
Description

Any attack on a running target in melee does not pass - the animation goes, but the damage is not applied. As a result, the rider can not kill him by running footman

There are other cases the patch wants to solve too, here's a list of related cases it could/should solve:

  • faster ranged unit with a minrange running away from a melee target should run far enough to have the time to fire
  • Units with a prepare time should come close enough to a slower fleeing target to be able to fire at least one projectile before starting the chase again
  • Units that want to move into a moving garrisonholder should be able to do so
  • Units that want to drop resources to a moving dropsite should be able to do so
#1539 fixed Show wall gate upgrade cost in tooltip Deiz historic_bruno
#1540 fixed [PATCH] Disable "scenario editor" menu item when atlas is disabled leper fabio
Description

Else clicking on it givers this error:

ERROR: DllLoader: dlopen(libAtlasUI.so) failed: libAtlasUI.so: cannot open shared object file: No such file or directory; dlopen(libAtlasUI_dbg.so) failed: libAtlasUI_dbg.so: cannot open shared object file: No such file or directory; 

Eventually it can "greyed out" with a tooltip saying "Scenario editor was disabled in this build", or something.

#1542 fixed Roma Bireme Daniel
Description
  • Needs to be modeled and textured.
  • Animated

Right now we are using the Greek pentekontoros, which is not a good thing.

http://qtan.homestead.com/files/imperator.jpg

#1543 fixed Roman Quinquereme Daniel
Description
  • Needs modeled and textured.
  • Animated

http://bellevueholidayrentals.com/nautical/quinquereme.jpg

#1544 fixed [PATCH] Selection order is not preserved when renaming entities Deiz Deiz
Description

As the GUI's selection state depends on SpiderMonkey's ordering of keys in objects (insertion order), detecting renamed entities, removing the old and adding the new will shift entities from their old position to the end of the selection.

The only way to preserve the order is by rebuilding the selection and groups as necessary, which is luckily quite simple.

#1551 fixed [PATCH] Fix gate closing range for enemy units Deiz historic_bruno
Description

Current behavior is that gates open once a player unit is within passRange of the gate and they close when no units are within that same range. This creates a problem with enemy units as they can be relatively far away yet keep the gate from closing or locking. They should have a much closer distance check than ally/player-owned units.

See #619 for related comments.

#1552 fixed [PATCH] Improve handling of mixed gate and long wall selections Deiz Deiz
Description

Patch removes the mutual exclusivity between gate locking icons and gate conversion icons. If a selection contains both gates and convertible walls, both types of icons will be shown.

The sort order is dependent on the primary selection. E.g. if the primary selected entity is a gate and the second selected entity is a long wall, the icons will be [Lock] [Unlock] [Convert to Gate]. If the selection were the other way around, it would be [Convert to Gate] [Lock] [Unlock].

I've also opted to highlight both the Lock and Unlock buttons if there are selected gates with both of those states. Clicking one of the buttons will set all selected gates to that state.

#1554 fixed [PATCH] Actor Editor broken on OS X trompetin17 historic_bruno
Description

It opens behind other windows and there's no menu bar. Reproduced on 10.7.3 with wxOSX 2.9. Atlas works fine on the same system. There is also an error when it closes "can't open user configuration file".

#1555 fixed [PATCH] Cheats O.Davoodi O.Davoodi
Description

http://www.wildfiregames.com/forum/index.php?showtopic=13439&hl=cheat&st=40

We should determine which cheats we really like to include. This patch adds 4 resource cheats and a reveal map one.

#1557 fixed FCollada assertion fails on elephant_african_forest.dae historic_bruno
Description

Must use a debug build to reproduce this, at least on Windows.

FCollada\FUtils\FUTracker.cpp fails an assertion in AddTracker():43, where it checks that a tracker being added is unique. What this means is there are duplicate joint ids somewhere in elephant_african_forest.dae, in this case the first one encountered is "shin_right".

If you view line 25090 of the DAE:

     <Name_array id="Elephant_North_African_Forest-Pivot-
          skin-joints-array" count="57">tail_1_joint tail_2_joint tail_3_joint
           Elephant body_1 body_2 butt leg_right trunk_2 shin_right shin_right
           foot_right leg_left shin_left shin_left foot_left trunk_3 trunk_4
           shoulder_left arm_left forearm_left hand_left shoulder_right 
          arm_right forearm_right hand_right neck head ear_left ear_right 
          trunk_1 trunk_8 trunk_9 trunk_10 trunk_11 head_trunk_joint 
          arm_right_joint_back arm_right_joint_front arm_left_joint_front 
          arm_left_joint_back leg_left_joint leg_right_joint belly Bone_002 
          Bone_001 tail_4 trunk_1_joint trunk_2_joint trunk_3_joint 
          trunk_4_joint trunk_5_joint trunk_6_joint trunk_7_joint 
          trunk_8_joint trunk_9_joint trunk_10_joint pelvis
     </Name_array>

you'll see "shin_left" and "shin_right" repeat. I don't know if this is a harmless Blender exporter error (duplicating the ids) or a problem in the model/rigging itself.

In release builds, the error is silent and the conversion process continues (with not well-defined behavior).

#1558 fixed [PATCH] Drop-down lists are not reinitialized properly. Deiz Deiz
Description

As the HandleMessage functions all return void, there's no way to easily determine whether a dropdown's child list has been modified after handling a message.

For a demonstration of the issue at present, go to set up a match, change the map selection filter to "Old Maps" - notice the dropdown is still large despite there being zero maps. Now, change back to 'Default' and notice it's only showing one map.

More or less, the buggy behaviour results in the dropdown rectangle's size lagging until it has been assigned to twice.

Having the list track when it's updated its items allows the dropdown to detect the modification and reinitialize the list size properly.

#1561 fixed [PATCH] Clicking on empty space always clears selection Deiz Deiz
Description

Proper behaviour is to only do that when neither the add nor remove hotkeys are pressed, such that the selection never gets reset when a player misclicks while trying to add or remove a single unit from the selection.

#1562 fixed [PATCH] Water interferes with actor viewer rendering ben historic_bruno
Description

The problem is various rendering code uses global variables to determine the simulation's water level (for e.g. culling) and that breaks in actor viewer. It's noticeable as a black space obstructing the view, when the camera moves above the map's water level. The patch fixes this by passing the correct simulation to the renderer before each frame.

As a bonus, I added a water toggle button to actor viewer, so ships can be viewed on a water plane and possibly for nice screenshots.

#1563 fixed [PATCH] FCollada MSVC build broken historic_bruno
Description

Some of the changes related to r12072 broke the FCollada build in MSVC, specifically those in FUStringConversion.cpp. If I comment out the new template lines, the build succeeds. At first I thought the types didn't match up by mistake, and it would be an easy fix, but that only caused other errors (I really don't understand the purpose of the new code anyway).

1>------ Build started: Project: FCollada, Configuration: Release DLL Win32 ------
1>  FUStringConversion.cpp
1>FUtils\FUStringConversion.cpp(249): error C2785: 'uint32 FUStringConversion::ToUInt32(const CH **)' and 'unsigned int FUStringConversion::ToUInt32(const char **)' have different return types
1>          c:\users\ben\devel\ps\libraries\fcollada\src\fcollada\futils\FUStringConversion.h(97) : see declaration of 'FUStringConversion::ToUInt32'
1>          FUtils\FUStringConversion.cpp(249) : see declaration of 'FUStringConversion::ToUInt32'
1>FUtils\FUStringConversion.cpp(249): error C3190: 'unsigned int FUStringConversion::ToUInt32(const char **)' with the provided template arguments is not the explicit instantiation of any member function of 'FUStringConversion'
1>FUtils\FUStringConversion.cpp(249): error C2945: explicit instantiation does not refer to a template-class specialization
1>FUtils\FUStringConversion.cpp(250): error C3190: 'unsigned int FUStringConversion::HexToUInt32(const char **,unsigned int)' with the provided template arguments is not the explicit instantiation of any member function of 'FUStringConversion'
1>FUtils\FUStringConversion.cpp(250): error C2945: explicit instantiation does not refer to a template-class specialization
1>FUtils\FUStringConversion.cpp(255): error C3190: 'void FUStringConversion::ToInt32List(const char *,fm::vector<T,PRIMITIVE> &)' with the provided template arguments is not the explicit instantiation of any member function of 'FUStringConversion'
1>          with
1>          [
1>              T=int,
1>              PRIMITIVE=true
1>          ]
1>FUtils\FUStringConversion.cpp(255): error C2945: explicit instantiation does not refer to a template-class specialization
1>FUtils\FUStringConversion.cpp(257): error C3190: 'void FUStringConversion::ToInterleavedUInt32List(const char *,fm::pvector<T> &)' with the provided template arguments is not the explicit instantiation of any member function of 'FUStringConversion'
1>          with
1>          [
1>              T=fm::vector<unsigned int,true>
1>          ]
1>FUtils\FUStringConversion.cpp(257): error C2945: explicit instantiation does not refer to a template-class specialization
1>FUtils\FUStringConversion.cpp(260): error C3190: 'void FUStringConversion::ToUInt32List(const char *,fm::vector<T,PRIMITIVE> &)' with the provided template arguments is not the explicit instantiation of any member function of 'FUStringConversion'
1>          with
1>          [
1>              T=unsigned int,
1>              PRIMITIVE=true
1>          ]
1>FUtils\FUStringConversion.cpp(260): error C2945: explicit instantiation does not refer to a template-class specialization
1>FUtils\FUStringConversion.cpp(268): error C3190: 'void FUStringConversion::ToString(FUStringBuilderT<Char> &,const unsigned int *,size_t)' with the provided template arguments is not the explicit instantiation of any member function of 'FUStringConversion'
1>          with
1>          [
1>              Char=fchar
1>          ]
1>FUtils\FUStringConversion.cpp(268): error C2945: explicit instantiation does not refer to a template-class specialization
#1564 fixed ERROR when destroying gate fabio
Description

When destroying a gate this error appears:

ERROR: Could not load mesh 'art/meshes/structural/hele_gate_props.dae'
ERROR: CObjectEntry::BuildVariation(): Model art/meshes/structural/hele_gate_props.dae failed to load
ERROR: Failed to build prop model "props/structures/hellenes/gate_props.xml" on actor "wall_gate"
#1568 fixed update bundled enet to 1.3.10 ben fabio
Description

Bundled enet is 1.3.3, while upstream has 1.3.10.

Even better it could be removed from the bundled lib and force users to use the system enet (at least on unix) since distribution already provide it and keep updated.

#1569 fixed Art Assets MishFTW
Description

The art that needs to be updated or created for Nova.

  • Entry title (725 x 50)
  • Entry title full (1000 x 50)
  • Footer artwork
  • Menu Item Normal state, and hover state (150 x 30)
  • The logos for downloads page
  • The download button (in the header) PSD
  • Footer art
#1571 fixed [PATCH] Redden construction/training/research icons when not enough resources wraitii wraitii
Description

Per this topic, I've updated the patch created by HowlingFlute to work with technologies and support shift-multiplier.

#1572 fixed [PATCH] Water effects enhancements. wraitii wraitii
Description

(creating a ticket since it seems more convenient and Kieran recommended it on another matter).

So I've been working on updating the water shader effects. This features: -A new setting: "superfancy", in-game "advanced effects" I believe, which activates : coastal foam, waves, more realistic water depth and thus water rendering. -For fancy and superfancy water, a nicer and more customizable system for choosing the color of the water, based on both the tint and the color of the water. -The normal map that simulates waves has been enhanced: it's smoother on superfancy as it interpolates more between each frame(thanks to myconid), its effect scales with the waviness (which thus becomes much more visible a factor).

It's already pretty much up-and-running, and should be reasonably fast. The basic mode has practically not been modified, the "fancy" has been slightly but should be about as fast, while the "superfancy" is a bit slower, but not by too much on my computer.

Waves are still sort of a WIP at the moment.

This patch would fix #932, myconid added shadows on water. This patch sort of references #1501 (ship sinking effects could fairly easily be added, I believe). This patch may reference #1380. I don't believe it fixes it but it may change a few things (haven't checked myself).

(I'm still having a few troubles with this "patch" thing, so if it doesn't work, do report).

#1573 fixed Migrate posts from IP to WP MishFTW Brian Stempin
Description

We don't want to lose all of our front-page content when we move to WP. The task is to migrate the posts from the front page of the current website to the content-dev theme.

#1574 fixed [PATCH] Show shallows (walkable water) on minimap. wraitii wraitii
Description

I couldn't find any post discussing why this wasn't in the game yet, so I assume it's because no-one put it in.

The attached patch reads the value from "pathfinder.xml" for maximum depth of passable water (assuming "default"), stores it and uses it to display shallow water in a lighter color, to clearly show where units can traverse and where they can't. It's neat on map such as the RM "Rivers".

#1575 fixed Crash detecting graphics card on Windows 7 netbook ben david
Description

The game crashes after launch it, then after close the error message, appears that pyrogenesis has stopped working.

Much to our regret we must report the program has encountered an error.

Please let us know at http://trac.wildfiregames.com/ and attach the crashlog.txt and crashlog.dmp files.

Details: unhandled exception (Access violation reading 0x00000003)

Location: unknown:0 (?)

Call stack:

(error while dumping stack: No stack frames found) errno = 0 (No error reported here) OS error = 487 (Se ha intentado tener acceso a una dirección no válida.)

#1576 fixed [PATCH] Adjusting length for new cart/celt/brit/gaul gate models in wall_builder.js ben FeXoR
Description

The models of the cart/celt/brit/gaul gate has been redone and now fit the length of a long wall segment. That has to be added in the wall_builder.js by removing the exceptions for them (they where shorter before).

Note: Since my Windows is down and my Linux doesn't support 3D acceleration I can't test it (I tested it before though, so it should work). It can be tested e.g. by generating the wall_demo.js random map and test if the gates in the lower section of the map for cart/celt/brit/gaul overlap.

#1577 fixed two Chicken spawning inside Civic Centre on Alpine Lake. AI instability as results O.Davoodi rjs23
Description

http://img1.uploadscreenshot.com/images/orig/8/21507302655-orig.jpg

There are two chickens inside the building. One of the chickens died because one worker managed to reach it and killed it but could not gather it after it got slaughtered.

As seen in the picture, they're all gathering around it trying to approach it closer but they could not get any closer due to building obstruction.

I don't know how chickens got inside the building (not literally, but somehow it managed to get inside building's obstructions area).

It seems like a bug that rarely occur and sorta hard to reproduce.

I was playing random map: Alpine Lakes with 2 AI bot and 1 player (me) using default map size.

#1578 fixed Default map dropdown broken ben historic_bruno
Description

The default maps show as "Acropolis 1" instead of what's listed in gamesetup.js.

#1580 fixed [PATCH] Change player color in the gamesetup Stan O.Davoodi
Description

Discussion here http://www.wildfiregames.com/forum/index.php?showtopic=16318

https://i.imgur.com/tUvdJTY.png

#1581 fixed Construction visual enhancement: Scaffolds during construction historic_bruno michael
Description

Currently, the player clicks the building icon in the unit UI, then places a foundation. Then the unit walks to the foundation, smacks on it for a bit, some dust rises, then the building pops into existence.

The desired enhancement should go like this (the enhancements for this ticket are bolded):

  1. Player/unit places foundation.
  2. Walks up to it, starts building.
  3. Scaffold actor appears (or rises very quickly into place), and dust starts appearing.
  4. Building rises up slowly through this as a percentage complete.
  5. At 100% complete, the foundation actor disappears, and the scaffold actor either just disappears or drops down quickly (as if dying).

I could see something like this in the building templates:

  <VisualActor>
    <Actor>structures/athenians/barracks.xml</Actor>
    <FoundationActor>structures/fndn_5x5.xml</FoundationActor>
    <ScaffoldActor>structures/construction/scaffold_5x5.xml</ScaffoldActor>
  </VisualActor>
#1582 fixed [PATCH] Improve default player names. O.Davoodi wraitii
Description

The game uses the "Player X" template for player names when playing on a random map. While this is not a big letdown, it would be nice to use a system similar to AOE I/II, where the name of the AIs were historical rulers. (additionally, we could show the AI used in the endgame screen next to the player name).

#1583 fixed Team/private chats for multiplayer games Jonathan Waller fcxSanya
Description

It would be nice to have team and private chats for multiplayer games.

#1584 fixed Require player to be assigned in single player games rjs23
Description

http://www.wildfiregames.com/forum/index.php?showtopic=16369&pid=246971&st=0&#entry246971

Screenshot:

http://img1.uploadscreenshot.com/images/orig/8/21807480051-orig.jpg http://img1.uploadsc...480051-orig.jpg

Steps to reproduce this glitch:
 1. Change Match type to random (can be any random map)
 2. Assign player 4 as You
 3. Change Number of players from 4 to 3
 4. Start game
 5. Let it load,
 6. GUI and gameplay glitches appear badly. The errors are filling up rapidly!
 
 
 I was unable to exit the match therefore had to close 0AD.
 
 Screenshot: [http://img1.uploadscreenshot.com/images/orig/8/21807480051-orig.jpg http://img1.uploadsc...480051-orig.jpg]
 
 Happened in SVN build.
 
 Was trying to step up a match for bot vs bot
#1585 fixed Theme Finalization - Install Cache Plugin MishFTW MishFTW
Description

Wordpress creates a bunch of requests. Although our local images can be sprited, each plugin adds a request. A cache and minify plugin will help alleviate the number or requests, making load time faster.

#1587 fixed Warn about problems with island maps Aviv
Description

Island maps are available to users even though some components of the game do not fully support them, and performance is harmed on these maps.

Users should be notified of these problems with island maps ahead of time with messages such as: "This is an island map. Computer opponents cannot play very well on island maps, and you may experience increased lag on these maps as well. Thus, island maps are best played on multiplayer or sandbox mode."

#1588 fixed [PATCH] Make 0ad compile with clang/llvm retrosnub
Description

I've made a go at trying to compile 0ad with the clang/llvm toolchain and created a minimal patch (in regard to changes to the code) to get it compile.

Tested running linux and compiled using

cd 0ad/build/workspaces
CC=clang CXX=clang++ ./update-workspaces.sh -j3
cd gcc
CC=clang CXX=clang++ make -j3

The tests were successfull and I didn't notice any problems.

It'd be nice if we could make 0ad clang-compatible as clang provides better diagnostic messages (besides profiling and other stuff).

#1589 fixed [PATCH] Add access to entity templates for RMGEN/RMS Itms FeXoR
Description

Untill now there is no way to access the entity templates data from RMGEN area of code. Some things could be done much more tidy if there where (like placing walls, avoid placing chickens inside the civil centres obstruction etc.). I have really no idea how to do this so I open a ticket for it.

#1590 fixed Add particle support to actor editor shh historic_bruno
Description

The <particles> element of actors is not currently handled by actor editor. See art/actors/particle for examples.

#1591 fixed [PATCH] Show combined costs in gate conversion tooltip. leper wraitii
Description

The gate conversion tooltip only takes a single gate into account, even when the user has selected multiple long walls segment. It should take every wall segment into account and update the tooltip. It should also make sure the red overlay (showing a lack of resources) is correctly updated for multiple gates, see #1571.

#1592 fixed Game (and Atlas) crashes when selecting an entity. michael
Description

Much to our regret we must report the program has encountered an error.

Please let us know at http://trac.wildfiregames.com/ and attach the crashlog.txt and crashlog.dmp files.

Details: unhandled exception (Access violation reading 0x00000000)

Location: unknown:0 (?)

Call stack:

(error while dumping stack: No stack frames found) errno = 0 (No error reported here) OS error = 487 (Attempt to access invalid address.)

Also, there's no music in-game.

#1593 fixed Issue with fullscreen OS X retina display Mitchell K
Description

On my retina MacBook Pro running OS X 10.8, 0 A.D. windowed works fine. Fullscreen, however, has black bars on the top and bottom, clipping off parts of the interface, and the cursor input is offset. That is, the location where the cursor appears to be is actually about an inch *below* where it should be.

All this can be seen in the attached screenshot.

System Info: MacBookPro10,1 (Retina, Mid 2012) 2.3 GHz Intel Core i7 Intel HD Graphics 4000 (Integrated) NVIDIA GeForce GT 650M (Discrete) OS X 10.8 (12A269)

screen

#1594 fixed Handle sound system errors more gracefully stwf historic_bruno
Description

I've added some logging to the new sound system so at least we can see if the OpenAL device init fails, but it will eventually lead to a null pointer dereference and crash since there's minimal error checking in place. In general the errors need to be more descriptive and the error conditions handled more gracefully.

#1595 fixed Retrieve Windows sound driver versions on Vista+ historic_bruno
Description

Currently this is broken, as the following comment in wsnd.cpp explains:

// unfortunately this fails with Vista's DS emulation - it returns some
// GUID crap as the module name. to avoidc crashing when attempting to get
// the version info for that bogus driver path, we'll skip this code there.
// (delay-loading dsound.dll eliminates any overhead)

This may be useful info to report for debugging the new sound system.

#1599 fixed FinishOrder called when order queue is empty historic_bruno
Description

Getting a few of these errors in multiplayer matches, I haven't looked into why they might be occurring.

#1600 fixed Handle 'remain' corpses as discrete entities Deiz Deiz
Description

Per IRC discussion, the current way 'remain' corpses are handled presents several issues. Currently this behaviour is only used for huntable animals.

When units with the 'remain' property in cmpHealth die, they simply play the death animation but continue to exist. UnitAI makes this work by overriding a number of movement-related functions, so that corpses don't start moving around.

Absent an ownership change to Gaia, players that own these animals will have LOS from the corpses until the resources are harvested, and enemy buildings will fire on the corpses until they're destroyed.

Ideally, the promotion logic should be genericized and implemented inside each component, so that unit promotion, gate conversion, and units dying and becoming resources all share common code.

#1603 fixed LOSTexture breaks OS X 10.5 build historic_bruno
Description

While test building an OS X 10.5 bundle, I encountered a few errors in LOSTexture.cpp:

LOSTexture.cpp
../../../source/graphics/LOSTexture.cpp: In member function ‘void CLOSTexture::InterpolateLOS()’:
../../../source/graphics/LOSTexture.cpp:126: error: ‘GL_FRAMEBUFFER_BINDING’ was not declared in this scope
../../../source/graphics/LOSTexture.cpp:128: error: ‘GL_FRAMEBUFFER’ was not declared in this scope
../../../source/graphics/LOSTexture.cpp:129: error: ‘GL_COLOR_ATTACHMENT0’ was not declared in this scope

The fix looks simple, just replace e.g. GL_FRAMEBUFFER with GL_FRAMEBUFFER_EXT. I think these might have been typos because the new code strangely mixes the two.

#1604 fixed [PATCH] Sound system breaks on archived data stwf historic_bruno
Description

Found this error while testing a 10.5 bundle but it also occurs on Windows, this will break releases. At a guess it's from using fopen() which is naughty - it won't know how to read a .zip file, I think we should be using something like Vfs::LoadFile() instead (this implies using a loading method that is compatible with archives). Also it would be nicer to pass an OsPath rather than wchar_t* to InitOggFile(). See the old ogg.cpp for ideas.

gdb backtrace:

Thread 1 (process 97051):
#0  0x97c3f4cf in flockfile ()
No symbol table info available.
#1  0x97c3c3c3 in ferror ()
No symbol table info available.
#2  0x001e8f9e in COggData::InitOggFile (this=0x299f400, fileLoc=0x299fa0c) at ../../../source/soundmanager/data/OggData.cpp:55
	nameH = "/Users/ben/0ad/build/workspaces/0ad.app/Contents/Resources/data/mods/public/public.zip/Honor_Bound.ogg\000\001P\000\000\000tBL?P^??????????\002\t???p?\000\000\000\000\000P\000\000\000\000??\000\f??\002/\000\000\000f\000\000\000??D\000\000\000\000\000\000\000\000\000????l?D\000?p?\000a???\000\000\000\000????\000\000\000\000t\004\000\000"...
	f = (FILE *) 0x0
	err = -132
#3  0x001e9937 in CSoundData::SoundDataFromOgg (itemPath=@0x1c9384c) at ../../../source/soundmanager/data/SoundData.cpp:103
	answer = <value temporarily unavailable, due to optimizations>
	oggAnswer = (COggData *) 0x299f400
	realPath = {
  path = {
    static npos = 4294967295, 
    _M_dataplus = {
      <std::allocator<wchar_t>> = {
        <__gnu_cxx::new_allocator<wchar_t>> = {<No data fields>}, <No data fields>}, 
      members of std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Alloc_hider: 
      _M_p = 0x299fa0c
    }
  }, 
  separator = 47
}
	ret = 6988444992
#4  0x001e9f2e in CSoundData::SoundDataFromFile (itemPath=@0x1c9384c) at ../../../source/soundmanager/data/SoundData.cpp:79
	fExt = {
  path = {
    static npos = 4294967295, 
    _M_dataplus = {
      <std::allocator<wchar_t>> = {
        <__gnu_cxx::new_allocator<wchar_t>> = {<No data fields>}, <No data fields>}, 
      members of std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Alloc_hider: 
      _M_p = 0x1c90b6c
    }
  }, 
  separator = 47
}
	answer = (CSoundData *) 0x0
#5  0x001e7ec2 in CSoundManager::LoadItem (this=0x1a05630, itemPath=@0x1c9384c) at ../../../source/soundmanager/SoundManager.cpp:145
	itemData = <value temporarily unavailable, due to optimizations>
	answer = (ISoundItem *) 0x1c93810
#6  0x001f08f8 in JMusicSound::Loop (this=0x1c93810) at ../../../source/soundmanager/js/MusicSound.cpp:44
	aSnd = <value temporarily unavailable, due to optimizations>
#7  0x001f1af2 in CNativeFunction<JMusicSound, false, bool, &(JMusicSound::Loop(JSContext*, unsigned int, unsigned long long*))>::JSFunction (cx=0x1c1da40, argc=0, vp=0x19bb2168) at ScriptableObject.h:188
	rval = <value temporarily unavailable, due to optimizations>
#8  0x0058eeda in js::Interpret () at basic_string.h:227
#1605 fixed Add a "Used" section to each of the resources in the stats screen Deiz Erik Johansson
Description

It would be really nice to be able to see how much of each resource you have used in the post-game statistics. I imagine it would be easiest/best to do it similar to how the barter statistics are done, just add a "/ Used" to the top and "/ #####" to the resource display to the right of each resource displayed as gathered.

#1609 fixed Sound system ignores disabled sound stwf historic_bruno
Description

Starting the game with -nosound or -quickstart options should disable the sound system, but instead it continues to initialize and load sounds. This makes testing the game without sound impossible on some systems but also the sound system isn't dynamically disabled on errors (see #1594).

1 2 3 4 5 6
Batch Modify
Note: See TracBatchModify for help on using batch modify.
Note: See TracQuery for help on using queries.