Why real time and is it really real time was a a major concern when I started the [SWToR]Logs project to parse combat log data from Star Wars : The Old Republic, I pondered for a while on how to go about parsing, analysing and storing the data. My immediate goal was to provide in-game meters to show healing and damage performance of my own character meaning real time parsing and analysing was needed in some form to take the raw data provided in the combat logs and turn it into meaningful data for a combat meter, I also needed to be able to see which abilities being used were the most effective. Sadly when I cam to read the combat data it turned out that true real time combat log parsing is not possible, this is mainly due to the fact that the game buffers combat log data and writes it in chunks.
However, the good news is that you can pretty damn close to real real, and as it transpires when used in-game with my personal overlay meters (see the screen shot) the fact the game is buffering the data is barely noticeable. Continue reading
Providing easy access to the Star Wars : The Old Republic Combat Log data has been a key goal designing the fight browser with this in mind I have implemented search features for searching by player name and then viewing this players fights by date or fights for a date a shown in the shots below. This is a start to the full search facilities that need to be implemented but it as start and a way to get to the graphs and visualisation for the combat log data
Fight Browser Player Search
See this in action with real combat log data collected parsed and analysed at SWToRLogs.eu
Fights By Date and Character
Fight Browser Fight List
Since starting this project I have already collected and parsed 5 1/2 million combat log entries, from 18,000 separately recorder fights. A fight being defined as all the events between an event causing a player to “Enter Combat” and an Event causing a player to “Exit Combat” (e.g. death, or killing the opponent).
Given all this data we need to do something useful with it and hence the “Fight Browser” at swtorlogs.eu was born. This can be used to analyse and study the performance of any player utilising the swtorlogs.eu combat log parser and uploader.
Here is a screen shot of the fight browser in action
SWToR Combat Log Fight Data
The basic framework is now in place, the system can now collect combat log data from the combat log files created by the Star Wars : The Old Republic game. This data is then transferred via a web socket to a central server running a Web Sockets server that parses the data, stores it in a data base and then broadcasts the parsed combat data and analysis to any subscribers.
Here is a screen shot of the Damage Meters in action in game. The PC client is a C# windows forms based application and as such in-order to be able to overlay the game the game must be running in Windows or Windows (fullscreen) mode. I decided I didn’t want to start hacking about with DirectX and so the windows mode overlays seemed by far the simplest solution
Here is a sample shot of a live combat feed on the swtorlogs.eu website using a Web Sockets enabled browser (currently Chrome, Safari, Firefox 12 and IE 10).
Combat Log Data shown as a live Web Feed
I thought I’d blog my journey through the development and delivery process of creating a combat log parser for the MMO PC game Star Wars : The old Republic. Personally I think this is an excellent game with a rich story line and masses of content for both the hard-core and casual MMO player.
One thing that was missing from the original game was the ability to see ones damage/healing output (the dreaded “damage meters”). With patch 1.2 BioWare introduced a “Combat Log” where by your actions performed in the game are written to a file in pseudo real-time.
Many people have taken advantage of this and created programs to analyse this data and display in various formats the data contained therein. As I love the game so much I thought I’d try my hand at creating a system for collecting and analysing this data. I had a few key featuers in mind to provide as I started out
- A Website to view historical combat data from multiple sources
- In-Game combat meters to show personal activity and group activity
- A way of grouping combat log data together to reflect an operations group activity
With this in mind the design i came up with involved creating a PC based client to read the combat log data directly from the data files created by the game an transfer this to a central server for analysis, categorisation, grouping and storage. The server to handle all this data was to be a WebSockets based server based on the WebSockets protocol (RFC 6455), the decision to use a Web Sockets based server was so that data could also be dynamically delivered to a web based HTML application.
So with the need to create a PC client, a Web Sockets server and a website – my journey began at swtorlogs.eu.