Whirled SDK/archive

These are older release notes for the Whirled SDK.

Version 0.57 (April 15th, 2009)

 * Entities and AVRG agents can now listen for music events in the room and get the current music id3 tag info:
 * MUSIC_STARTED
 * MUSIC_STOPPED
 * MUSIC_ID3
 * getMusicId3
 * Game item packs may now be consumed
 * PlayerSubControlClient.requestConsumeItemPack in AVRGs
 * PlayerSubControl.requestConsumeItemPack in seated games.
 * The player will be shown a popup. If they agree, an event will be sent on PlayerSubControlClient and PlayerSubControlServer for AVRGs or PlayerSubControl (both client and server) for seated games
 * The number of items owned by a player is now reported in PlayerSubControlBase.getPlayerItemPacks for AVRGs and PlayerSubControl.getPlayerItemPacks for seated games.
 * Content consumption events are not currently handled in the SDK test bed
 * Really old method backToWhirled is now removed from the backend (it was removed from the API in August of last year)
 * RoomSubControlBase.getOccupantName now works.
 * RoomSubControlBase.getRoomName is now available on the server.
 * Brand new server agent interpreter, be on the lookout for any unusual behavior
 * Other minor improvements

Version 0.56 (April 8th, 2009)

 * In-Whirled Games (AVRGs):
 * Added a private property space for the server agent, which also supports persistent properties.
 * Added moveToRoom and getPlayerName to PlayerSubControl
 * Added getOccupantName to GameSubControl
 * Added getOccupantIds and getOccupantName to RoomSubControl
 * The AVRGameAvatar class now returns the entityId rather than the name.
 * Entities:
 * Added getEnvironment
 * Added showPage to bring the user to a page on Whirled.
 * New restrictions on avatar memory: only the instance in control may update memories.
 * Screen games:
 * ServicesSubControl.getDictionaryLetterSet was renamed to getDictionaryLetters, since the letters may contain duplicates (it's not a "set"!).

Version 0.55 (March 27th, 2009)

 * Some changes to GameControl.local:
 * Added isEmbedded.
 * Added showAllGames.
 * Removed setShowReplay. The expectation is that you'll provide your own replay/rematch buttons.
 * Some changes to AVRG's RoomSubControlClient:
 * Will now dispatch a CHAT_RECEIVED event when someone talks in the room.
 * Added canManageRoom.
 * There is a new uravatar base script that gives MUCH better performance, called MovieClipBody.as. Full documentation is pending.
 * Tons of updates to the 'simplegame' and 'platformer' contrib libraries.

Version 0.54 (March 10th, 2009)

 * AVRG server-side backend should no longer throw an exception when a room unloads that was not referenced by the server agent. This should not affect most games.
 * No more rematch button in the lobbied game test bed, this now matches the behavior on whirled.com.
 * New event for when the user closes the lobby. See LocalSubControl events
 * Renamed AVRG coordinate transform methods roomToLocationAtDepth and roomToLocationAtHeight to paintableToLocationAtDepth and paintableToLocationAtHeight, respectively. This is to match the naming convention used in other methods.
 * Missing documentation added for AVRG coordinate transform methods. See com.whirled.avrg.LocalSubControl.
 * All entities can now use registerCustomConfig, not just furniture. See com.whirled.EntityControl
 * FATServer should now actually work again.
 * As usual, many many contrib code changes.

Version 0.53 (February 18, 2009)

 * AVRG clients now hear room signals properly.
 * Added getRoomName for AVRGs (client-side only for now).
 * AVRGameRoomEvents now have roomId set to a sensible value on the client.
 * Renamed showSharePage to showInvitePage and similarly for its cousins, for lobbied games.

Version 0.52 (January 27, 2009)

 * Added a new API call to display the Invite Friends page. This allows games to include a custom token in the URL sent to a player's friends.  If another player starts a game from that URL, the game can use the token to put the game into a different starting state than usual.
 * Added a new API call to display the game lobby while in a multiplayer game.

Version 0.51 (January 24, 2009)

 * Game trophies now persist between sessions in the test game framework.
 * Fix for CS4's esoteric compiler changes and their impact on remixable items. Woot!

Version 0.50 (January 20, 2009)

 * Data pack changes, see class BaseDataPack
 * Support for new types in data packs (used in remixing): "int" and "Choice"
 * Strings will be automatically coerced to the requested data type where possible
 * Expose roomToLocationAtDepth and roomToLocationAtHeight to AVRGs through LocalSubControl
 * Don't spew out stack traces when Entity (actors, avatars and pets) functions are called after shutdown

Version 0.49 (January 13, 2009)

 * User cookies are now stored at a different location for each game that the developer is working on. Each game's build.xml should include the name parameter on the tag.  The cookies are then stored at userPrefs/gameCookieManager/ for each game.  They were previously stored at userPrefs/gameCookieManager, so in order to keep the cookies for a currently in-development game, they must be moved from the old location to the new location. On Unix-based systems, Java stores user preferences in ~/.java/.userPrefs.  In Windows, they are stored in the registry, and should be found at JavaSoft/Prefs.

Version 0.48
This version number apparently was gobbled up by marauding monsters passing by Whirled.

Version 0.47 (December 10, 2008)

 * Entities can now detect whether any user is a room manager (instead of just the local user)
 * Fix for orphaned avmthane(.exe) processes lying around when testing games from within the SDK

Version 0.46 (November 25, 2008)

 * Change the timing when we dispatch property events for entity arrival and departure.
 * AVRGs can now enumerate entities in a room, and query them for entity properties.
 * Entities now always have a controlling client. The requestControl method has been abolished.
 * Asking for PROP_MEMBER_ID on a pet will return the owner id

Version 0.45 (November 21, 2008)

 * Improvements to documentation
 * Various changes to contrib code
 * New event for when a room is unloaded in AVRGs
 * Fixed getGameData to return the right thing
 * AVRGs may now read from and write to the property spaces of offline players
 * Any entity can now detect chat events, only for instances in control.
 * entityMoved/Entered/Left and signalReceived events are now only dispatched to the instance in control.
 * The entityMoved event is now also dispatched when the walk starts as well as when the walk ends. See the asdoc for more info.
 * Renamed GOT_CONTROL event CONTROL_ACQUIRED
 * Renamed RECEIVED_CHAT to CHAT_RECEIVED
 * MOVE_SPEED entity property
 * Fix to loadPackData on server agents

Version 0.44 (November 11, 2008)

 * AVRGs can now send and receive room signals.

Version 0.43 (November 7, 2008)

 * Fixed testing avatars/etc under windows
 * Fixed the uravatar Body.as to not choke if an AVRG tries to put it in an unsupported state.

Version 0.42 (November 4, 2008)

 * Avatars and pet memories now work properly.
 * Lots of contrib code changes.
 * Hooks for seated games to track up to 100 different score tables using integer game modes. The front end for this needs fleshing out, but you can start recording scores for different modes.
 * New API methods for seated games and AVR games to download item and level packs. In particular, this allows server agents to access the packs, which wasn't possible before.
 * DataPack refactored to inherit from BaseDataPack, which only accesses the files within the pack so may be used by server agents. Existing uses of DataPack should not be affected.
 * Headless building for Mac

Version 0.41 (October 22, 2008)

 * New Thane binary - testing games with server code works on windows again

Version 0.40 (October 15, 2008)

 * Fixed the game test server so games can be tested once more
 * AVRG in-room game API is now live and public - make your own games like Pookah Rainbow and Bella Bingo
 * Improved backdrop testing, and backdrop xml properties files are no longer needed
 * More enhancements to the SimpleGame framework

Version 0.39 (October 7, 2008)

 * More improvements to AVRG support. Including the beginnings of API documentation for you early adopters.
 * Enhancements to the SimpleGame framework in contrib.

Version 0.38 (September 26, 2008)

 * Fixed the game server agent under windows.
 * com.threerings.util.Log has had an 'error' level added, now formats timestamps and levels more like Java, and each logging method now takes var-args. See the documentation.
 * Various changes and updates in the 'contrib' package.
 * More progress on the upcoming AVRG API.

Version 0.37 (September 18, 2008)

 * Fixed a problem with compiling with Flex 3.0 (related to AbstractControl)

Version 0.36 (September 18, 2008)

 * Game errors such as missing trophies are now reported in chat
 * Behavior of game.NetSubControl.setIn is more user friendly (see docs)
 * Frequent calls to trace by game server agents no longer cause disconnection
 * Games can now show their shop in the web browser using game.LocalSubControl.showGameShop
 * Games can now detect when a player buys something from the game shop by listening for GameContentEvent.PLAYER_CONTENT_ADDED
 * Game level packs and item packs now work more consistently
 * Entities may now register a callback to be told when a memory update completes and whether it was successful
 * doBatch method may now be given an arguments to pass to the function
 * Plenty of contrib code changes

Version 0.35 (August 21, 2008)

 * com.whirled.net package for common network operations between current games and future AVRGs.
 * lookup/updateMemory renamed to get/setMemory.
 * sendChatMessage renamed to sendChat.
 * Compatibility with Flex 3.1 (EDIT: go ahead and upgrade to flex 3.1, it's free and we will no longer support issues with 3.0)
 * EDIT: Whoops, this update broke the urpet template (It still uses sendChatMessage), you can fix it by manually replacing those calls until the next SDK release.

Version 0.34 (August 7, 2008)

 * Fixed jar file problem with preventing testing games
 * SeatingSubControl.getMyPosition now returns -1 for server agents
 * Some documentation fixes and improvements
 * AVRG APIs moved and slightly refactored but not yet usable

Version 0.33 (August 1, 2008)

 * Server side code is now officially supported
 * Tic-Tac-Toe project has been added as an example of server side code
 * All PROP_* property key constants are now found in EntityControl.

Version 0.32 (July 18, 2008)

 * The RECEIVED_CHAT event has been changed so that the 'name' field of the event now contains the entityId of the speaker, not their String name. Code compiled with an older SDK will continue to receive the name, but new code will have to look up the name if it wants it.
 * The "entity properties" API is fleshed out. Now there are ways to query other sprites in a room for many standard properties
 * the logical or pixel location
 * the layout hotspot
 * the dimensions
 * the type of the entity (furni, avatar, or pet)
 * the name of pets or people
 * the orientation of pets or people
 * and the memberId of people
 * Added EntityControl.getMyEntityId for finding your own code's entity ID String.
 * getEntityType was added in 0.30, but has already been removed. Backwards compatibility will not be provided for this one, sorry. Now you may use getEntityProperty(PROP_TYPE, entityId);
 * PetControl.getName has been removed. Use getEntityProperty(ActorControl.PROP_NAME);
 * Two cool new classes were added to the contrib library: RemoteEntity and Chunker.

Version 0.31 (July 11, 2008)

 * EntityControl fix, which didn't make it into the previous release
 * Documentation updates

Version 0.30 (July 9, 2008)

 * If no locale is provided when using dictionary functions, use en-US.
 * Fixed setting of width and height on in-game headshot graphics
 * Fixed backdrop test viewer
 * Backdrop test viewer now shows a default avatar
 * Fixed avatar in the pet test viewer
 * Documentation improvements
 * Entities may now access properties and detect other entities in the room
 * NOTE: Soon we will be rolling out Server agents, a way for your game to run code on the whirled server. You may notice some reference to this in the SDK documentation, even though it not yet available for general consumption

Version 0.29 (June 18, 2008)

 * DecorControl is now called BackdropControl. If you carry over an old project, you'll need to edit your build.xml and change the "app.type" to "backdrop" instead of decor.
 * In games, restartGameIn and playerReady will now throw errors if used in an inappropriate game type (the former is for party games, the latter for seated games)
 * Fixed some issues with testing non-game projects. Since a few versions ago, the viewer was copied to the current directory. Now the file to be tested is copied to dist, and parameters.xml is generated there. For old projects that you carry over, you may delete viewer.swf and parameters.xml from the project directory.
 * The viewer.swf should now handle remixable pets/furni better now, although there are a few issues that may cause errors to be thrown due to it thinking it's connected to whirled. It's a work in progress, we'll probably do another update soon.
 * When testing a game, internal errors will now be logged to chat as well as the trace log.
 * Added SimpleSoundManager to contrib, for managing a global volume level.
 * game/MessageReceivedEvent now contains the id of the user that sent a message.
 * Added getDictionaryWords to ServicesSubControl.

Version 0.28 (June 10, 2008)

 * Pet, furni, decor, and toy item types now join avatars as being remixable.
 * Avatar states will never be turned to null anymore, but when you read an avatar state, null (the default) will still be transformed into the first registered state, if any.

Version 0.27 (June 3, 2008)

 * In DataPacks, Image and DisplayObject files can now have maxWidth and maxHeight attributes.
 * Size restrictions are now enforced for all entity data. See the API docs for details.
 * Games will now automatically report coins earned to players. If you want to handle this yourself, you must listen for the COINS_AWARDED event and call preventDefault on it. The function is right on the event object, as it is inherited from flash.events.Event.
 * Include the new imageflipper-remix avatar as an example.
 * Many packages inside contrib were not being included in the SDK, now they are.

Version 0.26 (May 27, 2008)

 * Fixed viewer.swf, now avatar projects should be testable.
 * Changed some things around so avatar projects are testable on the mac.
 * New example avatar: ImageFlipper, which replaced Fairy, which wasn't a good example at all.
 * Added setFrameRate to GameControl.local so that games can use other frame rates and stage quality settings.
 * A new class was added to contrib: Scoreboard, for easy score handling in a game, showing the scores in the player list.
 * The test game environment should behave more like whirled when players disconnect from the game.
 * Added a new coin payout scheme for games: PROPORTIONAL.

Version 0.25 (May 12, 2008)

 * Fixed a problem that would cause compilation errors with certain projects when compiling against the library source code (as with Flash CS3), rather than the SWCs.
 * Added PetControl.getName.

Version 0.24 (May 8, 2008)

 * For in-room entities (furni, avatars, toys, etc), the function getInstanceId will now return the viewing user's memberId. Permanent users have memberIds larger than 0. 0 means "invalid or missing", negative numbers refer to guests. More documentation will come when we revamp this method and hopefully make it universal (so that games can access memberIds as well).
 * Games now do not report a player or occupant as having entered until they have fully downloaded and initialized the game media. However, the occupant is still in the room for humans to see (with an italic name).
 * Party games no longer can use the "seating" sub-control. They really shouldn't anyway, but in the past it would cope and return the occupants when you asked for the list of players.
 * Added DecorControl, decor is now a full-fledged room entity.
 * Lots of new stuff added to the 'contrib' packages.

Version 0.23 (April 25, 2008)

 * Fixed the game testing environment to work with Flash Player 9.0.124.0.
 * Added the ability to create remixable avatar projects.

Version 0.22 (April 9, 2008)

 * Changed GameControl.local.getHeadShot to return immediately and return a DisplayObject instead of a Sprite. The width/height are immediately readable, and if the player's actual head shot is smaller it will be centered in the area.
 * Backend change: games will no longer be lenient about resizing a 0-length array. Games cannot set an array property and then have it auto-grow anymore.
 * Changed the way controls connect to whirled under-the-hood.

Version 0.21

 * Renamed things to coins instead of flow.

Version 0.20

 * Fixed problems with 0.19. All the main source code is back in the src/as directory.
 * Fixed using a config.xml to specify game config when testing games.
 * The com.whirled.util package is gone. DataPack now has an easy static load function that can be used to load 1 or more packs.
 * Added more documentation to GameControl.net.set and variants.

Version 0.19

 * If you are building your projects with the flex SDK, you will need to download and install the Flex 3 SDK.
 * Fixed controls that extend from EntityControl to not throw errors when methods are called when it's not connected.
 * Added "Dictionary" support to games. See the documentation in the 'net' subcontrol of GameControl. This includes a new event for games: ElementChangedEvent, which takes the place of having an index in PropertyChangedEvent.
 * There are a few things to watch out for:
 * You can no longer grow an array on-the-fly. You must set the array's length prior to calling set with it.
 * You can no longer testAndSet an individual element in an array. Even old games using the old code will lose this ability. Sorry! I doubt anybody was using this functionality anyway.
 * Previously, if you set a property immediately, the value you passed was inserted into the properties. This has been corrected so that now a "reconstituted value" is inserted immediately, as if it were read off the network. (The difference is that if I have Object o1 and set it as a property, the property will be read off the network and will not be === to o1, it will be a copy of it, just like what all the other clients get.)

Version 0.18

 * Trashed the "ezgame" package, all game support code has been moved to the com.whirled.game package. com.whirled.WhirledGameControl became com.whirled.game.GameControl. You can change all your existing game imports to just "import com.whirled.game.*;"

Version 0.17

 * Added HOVER_OVER and HOVER_OUT events for furniture
 * AVRG API enhancements
 * Documentation improvements

Version 0.16

 * Lots of documentation cleanups
 * More progress on datapack support

Version 0.15

 * Major WhirledGame API reorganization. All services were split out into various subcontrols to group them into smaller, related sections.

Version 0.14

 * Camera and Microphone can now be specified by name. See EntityControl.getCamera, etc.
 * A request to award an unknown trophy (on the real game server) will now result in a chat message reporting the invalid trophy. This should let you know if you misspelled something.
 * Various AVRG additions, feel free to look at AVRGameControl and MOBControl to see things evolve.

Version 0.13

 * Added a whole section of contributed utilities in com/whirled/contrib. Check out the |API documentation.
 * Whirled now provides rematch and back to Whirled buttons automatically, so those were also added to the test harness for testing and UI consistency. They are controllable by the game. See:
 * WhirledGameControl.setShowButtons
 * Added a mechanism that allows different entities in the room to publish information viewable by all entities (for example, "lights: true" or "lights: false") and also to broadcast once-off messages to all entities in the room. See:
 * ControlEvent.ROOM_PROPERTY_CHANGED
 * EntityControl.getRoomProperties
 * EntityControl.getRoomProperty
 * EntityControl.setRoomProperty
 * ControlEvent.SIGNAL_RECEIVED
 * EntitiyControl.sendSignal
 * Added support for accessing the Flash camera and microphone. See:
 * EntityControl.getCamera
 * EntityControl.getMicrophone
 * Added a method to return the name of the user on whose client your code is running:
 * EntityControl.getViewerName
 * Made some enhancements to the SDK to allow development using the Flex Builder. Documentation forthcoming.
 * Further progress on our remixable data pack system which works in conjunction with our ItemPack and LevelPack system. Documentation forthcoming when wrinkles are ironed out.
 * Added support for MOBs in AVRGs as well as fair bit of AVRG framework progress. No one is making AVRGs yet except us so pay no attention to the man behind the curtain.

Version 0.12

 * More improvements to the test harness
 * You can now test item and level packs locally. Documentation forthcoming. See Treehouse Defense source for an example.
 * EntityControl and WhirledGameControl now dispatch an UNLOAD even which you can listen for to clean up your game or pet, etc. if you don't have your root DisplayObject handy
 * urpet/Body now supports _towalk and _fromwalk animations which will be played immediately before (and after) switching from STATE_idle to STATE_walk

Version 0.11

 * Various improvements to the test harness
 * Added a chat display so that you can test chat related things
 * Added code to fake a flow award at the end of a game
 * Added support for awarding prizes (items like avatars, pets, furniture, etc.)
 * See WhirledGameControl.awardPrize for details
 * Modified endGameWithScores such that if all players report a score of zero, the game is aborted rather than rated and no flow is paid out
 * Similarly if endGameWithScore reports a score of zero the game is aborted
 * This should ensure that people who enter your game and then immediately leave don't result in a bogus score being reported and messing up your score distributions
 * As a result of this, 1 should be the lowest score that you award for someone who actually played your game
 * Added new template pet and avatar files

Version 0.10

 * Added a new sidebar display which shows occupants of the game room and contains the game chat:
 * All occupants of the room (players and observers) are shown, for non-party games, players are shown above observers, for party games everyone is a player
 * The methods to reposition the chat (WhirledGameControl.setChatBounds and WhirledGameControl.setChatEnabled) have been removed
 * Added methods to interact with the new sidebar occupants list:
 * WhirledGameControl.setOccupantsLabel places a text label above the occupants list
 * WhirledGameControl.setPlayerScores sets a set of score strings and sort values; the score strings will be displayed in a separate column next to their respective players' names and the sort values will be used to sort the players instead of the default sort order which is by name
 * WhirledGameControl.setMappedScores works like setPlayerScores except for party games where anyone can be a player; pass an object that maps occupantId to score string and sort value
 * WhirledGameControl.clearScores clears out all score information; this should be called at the beginning of your game
 * Turn-based games will also have a turn indicator automatically displayed next to the current turn holder
 * WhirledGameControl.endTurn has become WhirledGameControl.startNextTurn; call startNextTurn to start the first turn of your game and to start each subsequent turn
 * WhirledGameControl.getStageBounds has become WhirledGameControl.getSize (it is inherited from EZGameControl)
 * Added SizeChanged event for games that want to hear when their viewable area has changed
 * Further progress on AVRGame support; take a peek at AVRGameControl, MOBControl and PropControl if you want to see how things are coming along

Version 0.9

 * Added support for awarding Trophies to WhirledGameControl:
 * - returns true if the player has already earned the trophy in question
 * - awards the specified trophy to the player
 * Trophies can be awarded at any time during your game and a little UI will slide down over your game UI to inform the player that they have earned a trophy; play Dictionary Attack to see trophies in action
 * You also need to create Trophy Source items from your game's detail page and list them in the catalog to "publish" them to the listed version of your game; a tutorial and documentation will soon be available on the Trophies page
 * Item and Level packs are now also fully implemented (and being used by Underwhirled Drift); a tutorial and documentation will soon be available on the Content Pack page
 * More progress has been made on the AVR Game system, but it is still very much a work in progress

Version 0.8

 * Beginnings of support for level packs and item packs for games; these will allow a game to download additional content on the fly and sell that content to players if so desired. More documentation will be forthcoming when the feature is complete.
 * Added background color and background alpha arguments to EntityControl.showPopup

Version 0.7

 * Updated flow payout API. Flow is now payed out at the end of the game based on either a set of supplied scores for each player or a set of winners and losers (WhirledGameControl.endGameWithWinners and WhirledGameControl.endGameWithScores). A payout strategy can also be specified, see WhirledGameControl for more details on the payout strategies.
 * The amount of flow awarded to a player is reported via a new FlowAwardedEvent. Register to hear it and it will be delivered immediately before StateChangedEvent.GAME_ENDED.
 * If winners and losers are reported at the end of the game, players are rated using an Elo rating algorithm. If scores are reported at the end of the game, players are rated based on their performance relative to the historical performance of every other player in that game.

Version 0.6

 * Stock avatar and pet code made available: examples/pets/urpet and examples/avatars/uravatar see the README.txt file in each of those directories for further documentation
 * Added EntityControl.showPopup and EntityControl.clearPopup for showing UI popups
 * Added AvatarControl.isSleeping and associated APPEARANCE_CHANGED event to allow avatars to have custom animations when their player has gone AFK
 * Changed flow awarding API, see WhirledGameControl.grantFlowAward

Version 0.5

 * WhirledGameControl (EZGameControl): added playerReady and the ability for a game to delay the start until it specifically calls playerReady rather than having the game start immediately; also a game can "rematch" by having all clients call playerReady after the game has ended, this will result in the game being started anew
 * WhirledGameControl: added backToWhirled so that games can display a button that allows the player to return to Whirled

Version 0.4

 * WhirledGameControl: added getStageBounds and setChatBounds, the former so that you can find out how much space you have on which to draw, the latter so that you can relocate the chat overlay if its default position at the bottom of your view overlaps something important to your game
 * EntityControl: added canEditRoom so that furniture can provide functionality only to the owner of a room (or a manager in a club for club rooms)
 * Created UI for FAT (Flash Authoring Tool, not big boned) developers to use when developing a game; just double click on the "fatserver.bat" script in the SDK (we'll make something that works for Mac users and is sexier soon) and point that at your Flash projector (standalone player) and your game SWF and you're in business; better tutorial (with pretty pictures) forthcoming

Version 0.3

 * PetControl: added sendChatMessage and RECEIVED_CHAT events so that Pets can listen to chat in a room and respond; this interface may evolve if we decide that having Pets hear all chat is undesirable
 * DataPack: made some progress on the way that Flash games, avatars and furniture will be remixable; this is very much work in progress so look forward to better documentation on remixability in a future release
 * Implemented a standalone development and test environment for Flash and Java games; check out the create games tutorial for more information on how it works

Version 0.2

 * ActorControl: Walk speed was changed to move speed and now takes values in pixels per second

Version 0.1

 * This was the first release, so everything's new!