Xfire Technical Notes
(Release Notes also available)
Due to popular demand, we are trying to do a better job communicating technical changes to Xfire skinners, modders, etc. who are interested in what we do. This page will contain relevent technical changes each update. We hope that this will be helpful! Please give us feedback in the skins forum to let us know how we're doing.
Technical Notes for Release 1.113
You can now login to MSN Messenger using Xfire. This is a first release so there are several known issues, but we will be improving this in upcoming releases.
--- Chris Kirmse
General Manager, Xfire
Technical Notes for Release 1.101
We're starting an alpha test of a web browser in Xfire In-Game. For this release it is only available in Guild Wars, and you must go to the options display in-game to enable it each time you want to use it. The browser is a heavily tweaked interface to Internet Explorer. Feedback is appreciated.
--- Chris Kirmse
General Manager, Xfire
Technical Notes for Release 1.96
There will be an alpha test of a new feature to broadcast your live gaming experience to your friends or all Xfire users. It will begin on 2008-08-14. At that time, go to Tools | Options | Broadcast to enable it, run a game, then press Scroll Lock + B. Keep in mind that this is an ALPHA-quality test, and there are relatively low caps on the amount of people broadcasting video or watching the videos.
Parts of this broadcast feature are powered by dyyno, and some of their technology includes GPL-licensed applications. The applicable source code may be downloaded here.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.95
Flashback video capture stores the following number of frames in memory to record when you start a video capture. Depending on your frame rate, this could be only a couple seconds all the way up to a dozen or more:
- Low - 150 frames
- Medium - 300 frames
- High - 450 frames
- Very High - 600 frames
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.93
- Added an advanced options dialog to control various logging levels of the Xfire app. This will help our customer service solve user problems.
- Added the ability to detect web-based games, if the host includes some code from Xfire. This is in a pre-alpha state.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.91
Even though Xfire is a 32-bit process, on 64-bit operating systems (Windows XP 64 and Windows Vista 64) we run a second process as well, xfire64.exe, which detects 64-bit games. At this time, Xfire In-Game does not work with 64-bit games.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.89
Xfire now uses an accessory program for converting videos from AVI to MP4 format. This accessory program, called xfencoder.exe, is released under the terms of the GPL and the source code may be downloaded here.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.88
There were architectural changes to support the new vertical buttons and make it easier to create skins. There is a new skin class, XfireView, which can be used to display all of the list views for the application. A skin which uses the XfireView class should NOT include a BuddyListView, ServerView or DownloadView class. Backwards compatibility is guaranteed for old skins but the chat rooms, screenshots and videos will be located under their old locations (inside of ServerView and DownloadView).
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.86
Video capture can now be done using Xfire, in a beta state. No third-party software is required. We capture using our own proprietary codec, called xfcodec (creative, I know). This is automatically installed with Xfire, and is needed to view our captured videos (which are stored in the .avi container format) in various media players. Our codec was designed to compress well enough to not make files too big, while at the same time not using too much CPU time as to ruin the game experience. We will continue to improve this codec and the rest of the video capture system in coming releases.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.83
Video capture can now be done using Xfire. This is in a pre-alpha state. To try it out:
- Exit Xfire
- Edit your xfire.ini file, and under the [xfire] section add enablecapture=1
- Download huffyuv codec (the prebuilt DLL) at the Huffyuv page.
- Unzip and install the huffyuv codec by following the instructions in its readme.txt.
- Run Xfire
- Go to Tools | Options | Capture and configure your settings
- Run a game
- Press the capture key combination (Scroll Lock + V by default) during game to start and end a video capture session.
Please give us feedback in the forums if this works well for you!
In infoview templates, you can now use %game_shortname% to get the short name of the game.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.82
Although Xfire In-Game 2.0 has only been implemented in our own skins (Xfire, Standard, and Shadow), all skins can add support for it! Please look at the Shadow.zip or Standard.zip in your Xfire installation's skins\ subdirectory to see how it is done. Keep in mind that only skins based on XML files can support Xfire In-Game 2.0.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.79
Injecting Xfire In-Game on Windows Vista with UAC is a real pain; ideally Xfire would not non-elevated, so that you would not be prompted to elevate it each time it runs. However, some games run elevated, and to inject Xfire In-Game into these games, Xfire must be elevated. Additionally, programs marked to run elevated don't properly start upon login if they are set to do so.
To solve this, we run Xfire non-elevated on Windows Vista. If you have a game installed that we know runs elevated, we then launch a second copy of Xfire, elevated, which you must allow. The two copies of Xfire communicate with each other, and the elevated one injects Xfire In-Game into games; it does nothing else.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.77
- The new Xfire In-Game interface is enabled by editing the xfire_games.ini file and putting ENABLE_MOUSE in the InGameFlags for a game. It may work in many Direct 3D 9 games; feel free to test it out and give us feedback in the forums.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.75
- There are other slash commands besides /me, but they are still in testing. Type /help in a chat window to see the list. If you have other suggestions, please let us know on the forums.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.74
- We've upgraded our compiler. This is the first release using Visual Studio 2005 (all previous Xfire versions were built with Visual Studio 2003).
- The WoW data from the armory is retrieved by our servers and cached for 12+ hours. We also have a cap on the rate that we request data from them (currently set at 8 per second).
- 1.73 was the first release that we deprecated after initially releasing it to the download system; our QA team found that Xfire would hang if you typed an incorrect password so we had to do a new build before final release.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.72
- Added support for Source SDK Base which allows us to support Source-based mods from now on.
- Xfire Type 2 routers (somewhat predictable symmetric NAT devices) are relatively uncommon. We don't have many of them to test with. If you have a type 2 router and can test communicating with someone behind a type 4 router, please let us know your router brand and tell us your story on the forums.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.70
- Added a new in-client registration system. To see it, exit Xfire, edit your %appdata%\Xfire\XfireUser.ini file to set [ClientStatistics] RunCount=0, and then restart Xfire.
- Renamed some top-level items in XML-based skins. Unfortunately, these were not made backwards compatible, so existing XML skins must be modified. The top level elements MainWindow, ChatWindow, GroupChatWindow, InGameMainWindow, InGameAlertWindow have been renamed MainSkin, ChatSkin, GroupChatSkin, InGameMainSkin, InGameAlertSkin. Sorry about that.
- Fixed a problem with icons during Xfire game updates--after receiving a game update, most games would display with the Xfire icon until you exited and restarted Xfire.
- Added the /reconnect command to Xfire In-Game to reconnect Xfire to the servers if it has been disconnected.
- Added some support for using the mouse in the Xfire interface inside of games which is not yet visible.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.69
- Added an xfire: url to change skins (syntax: xfire:skin?name=skinname ).
- Rearchitected the Xfire In-Game rendering system. The skinning system is now used to render the in-game interface, which makes resizing much faster and will allow us to add many more features in future releases.
- Editing your profile page now requires you to have logged in to the Xfire web site recently; this reduces the damage that someone can cause you if they steal your browser cookies on another site.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.67
- We finally finished our database migration. All Xfire user data is now stored in MySQL databases. This has been a huge effort, in particular to do it without much disruption to the live system. It should now be much more stable than it had been.
- DISABLE_SCREENSHOTS is now available as an InGameFlag in the xfire_games.ini to disable screenshots in a game (in case there is a bug with screenshots with a game).
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.66
- When voice chatting, we increase the priority of the Xfire.exe process to fix dropouts in certain games (other voice chat apps do the same thing).
- For a few months, we've been slowly migrating our back-end database from Postgresql to MySQL. In the last few weeks we have made major progress and expect to be done before the end of 2006.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.65
- We added some headers on the web site to enhance search engine parsing of our pages (meta descriptions and meta keywords, in particular).
- Added MatchExe lines to the xfire_games.ini to match game executables using regular expressions (see Magic Online).
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.63
There are some changes to how infoview files are loaded. Specifically, any time the Xfire client is looking for a file using %include, we look in the following directories:
If it's a game-specific infoview:
- templates/custom_infoview/game_shortname/
- templates/infoview/game_shortname/
- templates/custom_infoview/
- templates/infoview
- templates/
- (not found)
If it's not a game-specific infoview:
- templates/custom_infoview/
- templates/infoview/
- templates/
- (not found)
By doing this, we ensure that any infoview customizations that you make will not be overridden by future Xfire updates, and at the same time any custom infoviews can include built-in infoview files easily.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.62
- All game icons are now put in an icons.dll instead of Xfire.exe; we had too many resources in one file for Windows 98!
- Started some significant work for a new, as-yet-unreleased feature. There are new files under templates/infoview.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.60/1.61
- The protocol changed for a few messages to make the encoding more compact.
- Added two entries in xfire_games.ini for the LAN server browser--ServerBroadcastPort and ServerGameName. ServerGameName is actually a regular expression to differentiate between multiple games that have the same server info type and port (such as the various Source games).
- Added /server command line parameter to set the host name for the Xfire client to connect to. This is useful for proxies.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.59
- The XML skin system has been significantly updated. It's still in alpha testing, and only the standard skin is distributed in XML format at this point. Read more about the XML skinning system.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.58
- The XML skin system is now officially in an alpha testing state! The standard skin (standard.zip) that is distributed as part of this update is in our new XML file format. We don't have any documentation on it yet, but please check it out. We still plan to tweak the XML skin system between now and its official release, so if you give us feedback now in the skins forum then we can still make adjustments.
- Raw server information is now available in the infoview for game servers with server information. This is for advanced users for now; we're going to add the ability to set filters based on any of these fields. Please take the server browser survey to help us shape this feature.
- Custom game infoview skins can now be stored in a separate directory (templates/custom_infoview/(short game name) is loaded before the default templates/infoview/(short game name) ) from our built-in ones, so your custom game infoview skins won't be overridden by our updates.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.57
- Fixed some bugs with the Xfire SDK. Thanks to all the game developers who have given us feedback on it!
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.56
- Fixed some problems with non-ASCII characters in xfire: urls for setting your game client data or text status.
- Fixed a problem with non-alphanumeric characters (such as spaces) in keys for game client data.
- Moved the downloads directories around a little bit--all files go in the normal downloads directory (or wherever you now configure it to be), and the metadata and archive directories are now subdirectories of it.
- More progress on XML skins, but still nothing user visible. I'm not going to make any more promises on the time frame at this point.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.55
Two things this update:
-
New game data fields
As described in the release notes, we are sending more data about various games to your friends. For now, we only have built-in support for Battlefield 2 and World of Warcraft. We also have an Xfire URL that lets you set your own game data in your own tools.
The way it works is that the Xfire client keeps track of a set of key/value strings for your current game. It polls once per minute to look for new data (reading a WoW file, etc.), and sends new data to the server if it is available. You can set your key/value pairs, which will be displayed to your friends, using an Xfire URL such as xfire:game_stats?game=shortname&key1=value1&key2=value2. The "shortname" part MUST be replaced with the short name field from the xfire_games.ini file for the game you're currently playing. To test this out, add yourself to your friends list, open a chat window to yourself, launch a game in a window, and then try the appropriate Xfire URL. You should see the key/value pairs show up within one minute. If you have MAME32, then a working example is xfire:game_stats?game=mame32&Playing=Ms.%20Pac-Man
Keep in mind this is the first release with this feature. We may adjust the syntax, polling rate, etc. in the future, and certainly we'll fix bugs. Any significant changes will be posted here after future releases.
- More preparation for XML skins
I'm sorry to say that the XML skins are not ready yet for this release, but it's being merged into our code tree now and will be visible in 1.56.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.54
- More preparation for XML skins. Nothing is user-visible yet, but we plan to have this available to you in 1.55.
--- Chris Kirmse
VP of Engineering, Xfire
Technical Notes for Release 1.53
- Reworked the parsing of skin .ini files. There should be no visible changes to skins because of this. We tested dozens of skins, but let us know in the skins forum if you think we broke something.
- Xfire now recalculates the window mask after any infoview open/close. This fixes a problem with skins with more than one infoview.
- Changed the chat window's send button to trigger on AppCanChat and AppCannotChat.
- Renamed templates/infoview/idle.tmpl to templates/infoview/user.tmpl .
We are in the process of building a new skins file format based on XML, which will hopefully make it easier to build and debug skins. I'll post more information when it's available.
--- Chris Kirmse
VP of Engineering, Xfire