Previous updates:
GameHeart Project, Update #1
GameHeart Project, Update #2
GameHeart Project, Update #3
GameHeart Project, Update #4
GameHeart Project, Update #5
GameHeart Project, Update #6
GameHeart Project, Update #7
WCS GameHeart
Hey everyone! This is Ryan from GameHeart. With the patch containing the WCS GameHeart project hopefully arriving very shortly I thought I should post a blog with some more in-depth information for you. In this blog I am going to talk to you about my time at Blizzard, as well as all of the cool new things you can expect to see as a result of the WCS GameHeart project.
My time was spent on the UI team, where I got to hear designers argue day in and day out about whether a button should be placed 20, or 25 pixels from the edge of the screen. I got to sit with many of the live operations engineers and listen as they tried to tackle Battle.net issues and discuss with them why I want to see Rosberg beat Hamilton to the championship this year in Formula 1 (incidentally… DAMN!). I got to meet and work with programmers, artists, technical artists, the data guys, the performance guys, the eSports team, the community team, and the QA team.
I got to talk to Samwise about stronger team colors, and ask David Kim what he wants to see in a spectator interface. At almost every turn when I brought up some aspect of GameHeart, they were constantly asking what they could do to make it better. With their help we have been able to transform GameHeart and its features into something that will not only help tournaments put on higher quality productions, but will also make the game better for you while you are playing it.
We have added functionality for UI designers, and created a new UI that demonstrates some of that functionality, as well as some functionality that has always existed but never been tapped into until now. We have added new doodads that melee map makers can use to add logo support to their maps and preview what they will look like right in the terrain editor, and that arcade map makers can use for their own purposes. We have added some complex actor interaction on these doodads which demonstrate some seldom used functionality in the editor. We have created an entirely new mod type that can act as a sort of eSports production kit, allowing tournaments to add their own logos and even elaborate information about the players if they so choose. We have made some of your favorite GameHeart features into actual features of StarCraft II so that you can enjoy them in your ladder games.
I am very proud of the work we did in such a short time, and I am sad that my time there is over. I already miss some of the great people I was working with (except Jason). But now its time to dive in and really go into the details of this project so you know what is coming. Let’s start with something a ton of people have been asking for.
Stronger Team Colors -
As you have probably already seen in the official blog stronger team colors has been removed from GameHeart, and turned into an actual feature of the game. That means you can use it in your ladder games. And rather than being an on or off setting, you can actually tell it how intense you want the colors to be using a slider in your gameplay options! The system works using game shaders instead of actual textures as well, so it is much more performance friendly and download friendly than the older version.
I created a gif animation of the progression of different intensity settings using the images ExoTheMage posted over on reddit.
I want to thank pzea469 from Team Liquid once again for creating the original stronger team colors mod, and allowing me to use it in GameHeart, as well as allowing us to use it while working on the official WCS version of GameHeart.
Team Colored Effects -
Similar to Stronger Team Colors, the Team Colored Effects from GameHeart have been removed and made an official option in your gameplay options. However, after seeing it in action for awhile I have been convinced that it is really only necessary on a handful of abilities. In particular I felt that Scanner Sweep, Time Warp and EMP were critical. The primary reason I felt EMP is important is because it is so difficult to see normally. They have not only created a team-colored version of EMP but they have also made the default version more visible. So there will be fewer effects that are affected by team colors but I think we have the important ones. Hopefully the reduction will make the game feel less like just a giant blob of color when a fight is going on.
Here is a screenshot of some team colored EMPs I have stolen from the official blog:
I want to thank mindgames87 for his suggestion to implement this feature, as it was really what got me moving to do it originally.
"WCS GameHeart" Extension Mod -
GameHeart is actually made up of two distinctly different types of mods (and soon to be three but I will talk about that later). There is the interface mod which modifies the look of the UI, and the extension mod which adds actual features (such as the upgrade notifications and the production labels over buildings). What we are going to discuss now is the extension mod. It is called “WCS GameHeart” and it can be added to your games by using the ‘create with mod’ option when setting up a custom game.
There are five different features that are added to the game using the WCS GameHeart extension mod. Most of them you have seen before but there are a couple of new things. Things like stronger team colors, team colored effects, league logos, team logos and team sponsors have all been removed from the extension mod and added to the game separately so the extension mod is actually relatively small now compared to what it used to be. I am going to go ahead and just use more images from the official blog for this as they took some great screenshots.
- Production Labels
These are the icons which appear over buildings indicating what it is training or researching. These have been reworked in WCS GameHeart. They are now part of the status bar of the building (the HP/Shield bar) so they will only show up when the HP bars are displayed. This gives the observer control over when to show them and allows him to draw more attention to them when he feels it is important to do so. - Upgrade Notifications
This feature displays upgrades as they are completing with a short countdown on the right side of the screen. It was developed by MIT Game Lab. It is relatively unchanged from the normal version of GameHeart. - Workers Killed Notifications
This feature displays a notification on the left side of the screen to tell you how many workers a player lost in the last engagement. It was developed by MIT Game Lab. It is relatively unchanged from the normal version of GameHeart. - Map Notifications
This feature displays small notifications on the minimap when a scanner sweep goes off or a medivac/shuttle/overlord loads up some units to do a drop. Hopefully this will make it easier to spot drops as they happen. It was developed by MIT Game Lab, and it is a new feature that has not been in GameHeart before. - Interface Interactivity
This is a strange feature that requires the WCS 2.0 interface to work correctly. You can still use the WCS GameHeart extension mod without the WCS 2.0 interface, and vice versa, but when you use them together you will get a little bit of new functionality. It basically just cycles through some information on the interface every 5 seconds. That way we can get you all the information you want to see, but without cluttering the screen with every number and icon a game of StarCraft II has to offer. This feature was developed by me but based on exploratory work that Christoph “Ahli” Ahlers did with interaction between StarCraft II dependent mods and custom interface mods. I will talk more about this feature in the WCS 2.0 interface mod section of this blog.
As you can see most of the features left in the extension mod were developed by MIT Game Lab. These guys have been amazing and extremely supportive of GameHeart. They actually created their own spectating mode called MIT Overseer about a year ago, and have been porting features over to GameHeart and/or developing new ones ever since. I really appreciate all of the work they (Philip Tan & Nick Mohr) have done and the help they have provided.
So that is it for the extension mod. It seems kind of small now with so many GameHeart features being made into actual StarCraft II features! In the next section I will go over the new spectator interface we have created.
WCS 2.0 Interface Mod -
The new WCS 2.0 interface mod will be accessible in your gameplay options after the patch. It is designed for 16x9 resolutions, but should also be usable for 16x10 users. If you are using a resolution that does not fall into one of those ratios, it will likely not display all of the information for you as some of it will get cut off. Because this is designed for tournament broadcasts, we really wanted to make it ideal for the resolutions they use.
It has been my goal for awhile to consolidate as much of the information on the screen as I can into one area in an effort to make the viewing space for the game feel more open, and reduce the effect of the UI creeping in out of the corner of your eye from all directions. This interface is the closest I have come to accomplishing that goal so far.
Here is a screenshot of what it looks like:
One of the most difficult decisions when designing one of these UIs is whether to put the information at the top, or the bottom of the screen. We have obviously decided to put everything at the bottom on this UI, and really quickly I want to go into why I usually do it this way in the interfaces I design.
First, the screen real estate at the top of the screen is much more valuable than the real estate at the bottom. Here is an image demonstrating why that is.
So we can show MORE of the game by putting the information at the bottom of the screen. But that is not all.
It is actually a more natural way to view the game to cover the bottom of the screen with information instead of the top. Think about that for a moment. When you are playing StarCraft where is the vast majority of the UI? It is at the bottom. Here is an example of what I am talking about.
Now think about the ESL or GSL interfaces, where you have huge chunky leaderpanel in the top left of the screen (the leaderpanel contains the production tab etc). You have giant player name panels in the top middle, and huge resource numbers in the top right. And in some cases you have something like 16+ numbers in the top right tracking every piece of data imaginable.
What has happened is the viewing area for the game has effectively been moved towards the bottom because of the UI creep at the top of the screen. Because of the way the camera is setup this basically changes the viewing angle that you watch the game from. By focusing our major spectator UI elements at the bottom, we can actually create a more natural feel to the viewing area and angle of the game.
So whether you agree or disagree with that let’s move onto the actual features of this UI.
Battle Mode
Something Adebisi has been requesting for awhile is a way to hide all of the UI except for the minimap, the player names and the supply counts so he can show as much of a battle as possible while still keeping the critical information on screen.
I have added that functionality to this interface, in fact it is on by default when the game starts. To toggle it On/Off all you have to do is press the spacebar. You can also view all of the hotkeys for this interface by pressing F11 to bring up the message log.
Cycler Panel
This is related to the “Interface Interactivity” functionality I mentioned earlier in the “WCS GameHeart” extension mod section. There are basically four different main information panels the observer can toggle on/off at the center of the player info bar. The first is resources, displaying the current minerals and vespene each player has. The second is a supply breakdown, showing you how much of their supply is in army units and how much is in workers at that time. The third is a quick upgrades panel, showing you what their armor/weapon upgrade status is. The fourth and final panel, is the cycler panel. It basically cycles through displaying the other three panels every 5 seconds automatically. In this way we can show more information, while using a smaller footprint on the UI. That means we can make the numbers bigger and more readable on low resolution and mobile streams as well as make the interface just feel less cluttered in general without compromising the information available to you.
Unfortunately this functionality is only available when used in conjunction with the WCS GameHeart extension mod.
Integrated Unit Info Panel
We have integrated the unit info panel (the big box that usually appears in the bottom right of the screen in spectator UIs) so it only shows up when the observer manually activates it. It now acts as an alternative to the production tab, units tab, spending tab etc. In general this panel is not necessary for viewers, but in some specific circumstances it still contains valuable information so by making it a toggle we can free up some space on the UI but still have access to it when we need it.
Player Name Override Functionality
This feature will allow you to override the player’s name displayed on the info bar with one that is stored inside of a Logos.SC2Mod. Obviously this will only work if you have a properly setup Logos.SC2Mod.
Player Team Logo
This feature will allow you to display the player’s team logo next to their name on the info bar. This will only work if you have a properly setup Logos.SC2Mod. It looks like this:
Player Intro Panels
These panels will display the portrait of the player, their player name, their real name, their nickname, their team name, their country of origin, their WCS rank, their WCS score, their team sponsors, and their trophies they have won from previous premier tournaments.
It is not easy to setup a Logos.SC2Mod with all of this information for a large number of players, so I expect this type of thing will only be used in smaller events and invitationals, or in the very last stages of big events.
Here is what it looks like:
Custom MIT Notifications
The WCS 2.0 interface also features a custom look for the workers killed and upgrade notifications that MIT developed. We mostly put this in as a demonstration for other custom interface developers to show how it could be done.
Standard Features
The interface is also equipped with most or all of the standard features you are used to in a spectator UI. Remember you can press F11 to bring up the hotkey guide. The entire UI is built to be very modular, and expand as you open up new information and features on the screen, but contract again when you no longer need them.
Here is a list of all the hotkeys in the WCS 2.0 interface:
So thats it for the WCS 2.0 interface mod. Next I am going to talk about the new type of mod that manages the logos you see on the map, as well as some of the images this interface uses for some of its special features.
Logos.SC2Mod -
In this section I am going to talk about Logos.SC2Mods, what they are, how they work and what they can do. I believe these things are going to change the way we watch StarCraft, and in particular I believe they will help smaller tournaments to put on higher quality productions without expensive equipment.
What are they?
The Logos.SC2Mod is a special type of mod file created by Blizzard specifically to support the WCS GameHeart project. It is a powerful, flexible mod that is designed to replace the current GameHeart logo functionality with something tournaments can create, customize, update and maintain themselves. For smaller tournaments who perhaps do not require that level of customization, they can just grab one that somebody else has made and posted online to easily enhance their tournament.
But that isn’t all. While the idea was to replace the logo functionality in GameHeart with something more powerful and flexible, what we have ended up with is an amazing tool that can be used without the WCS GameHeart extension mod.
And this thing isn’t just great for Starcraft 2 tournaments either. Arcade map makers will be able to make use of some of the functionality for their eSports productions as well (such as Starbow, Star Strikers or Pure CTF). I am very excited about the potential of the Logos mod and I cannot wait to see what people do with them.
How do they work?
The Logos.SC2Mod is basically just a collection of images and a single XML file sitting inside of a mod. The XML file is broken up into separate entries, and each entry will create a new item in a dropdown menu next to a player’s name in an SC2 lobby. So if you wanted to use this the same way the old GameHeart has worked, you would create a new entry for each team you were going to have in your tournament, such as Axiom, Acer, Evil Geniuses etc.
Inside each of these entries you can assign it a primary and secondary logo. If you were just going to use it like the normal GameHeart, the primary logo would be the team’s logo, and the secondary would be the team’s sponsors. These logos would then be automatically swapped in the place of some pre-placed doodads on the map (I will talk about these doodads in a little bit). In the first couple of lines of the xml file you can also define primary and secondary logos for the tournament or league, so those will be automatically swapped in as well.
You can also store other images and data inside of these mods if you want. For example, we could store a player’s name, WCS rank, his nickname and the trophies he has won over the years at premiere tournaments.
To make use of those images and data, they can be accessed using interface mods so tournaments and mod makers can create some really cool custom production stuff, all right in the game itself.
What can we do with them?
Well as I already mentioned we can use them to display team logos in the mineral lines for the players, and league logos on the map for the tournament just as we used to do in the old GameHeart. And for a moment I want to talk about that because it has changed a bit.
While support for team sponsors is still in, I have decided to make them substantially smaller than they were before. There is a fine line that needs to be walked to offer teams the support they need without undermining tournament sponsors who wonder why their competitor’s logos are larger on the screen than their own when they are the ones sponsoring the tournament.
Here is what they look like:
The decision to make these team sponsors smaller is unlikely to be popular with teams, but it is my hope that doing so will encourage more tournaments to use this functionality and support the teams that are participating in their events. There is also more opportunities for teams to show off their sponsors in some of the new functionality I will discuss shortly.
The logo images on the map are placed using a new set of doodads that are available to melee map makers. You can find them by searching for “Logo” in the doodad list. There are four different types and this is what they look like in the editor when you are placing them:
But there is more of course. The ability to add extra data and images to these mods means we can also do some pretty cool new stuff as well.
For example lets say we are having a 16 man invitational tournament. We could add an entry to the Logos.SC2Mod for each of those 16 players and inside of it include their ID (such as AcerMMA), their real name (such as Mun Seong Won), their portrait, trophies for the tournaments they have won and just about anything else we could want. We can then access this information using the interface mod to create player intro screens, to override barcode account names, and to display their team logos directly on the interface next to their name. The possibilities here are pretty substantial and I think it is very likely this will change the way we watch StarCraft II.
But remember all of this should be usable in arcade games as well.
This mod will allow smaller competitive games like Star Strikers, Starbow and Pure CTF to set up tournaments and still make use of all of this cool functionality for their own eSports productions.
In the next section I am going to talk about how to use and create this new type of mod.
How to use a Logos.SC2Mod
Before you can use it, you need to download one or create one yourself. You can download one I created featuring all of the teams currently in GameHeart from this link. Put that file in your Documents/StarCraft II folder. Now all you have to do is select the player’s team from the dropdown menu next to their name when you create a game.
But if you want to get your own league or tournament logo into the mod you are going to need to do a little customization first.
Adding a league logo to a Logos.SC2Mod
Adding a new league logo image to the Logos.SC2Mod is quite easy. But you will need some correctly formatted images first. A little while back I created a video guide on how to export DDS files using photoshop, please check that out. You can find it here:
League logos should be in a 2x1 horizontal format. I recommend using 512x256 or 600x300 for your image sizes. Save the two images you want to use as LeaguePrimary.dds and LeagueSecondary.dds. If you only have one image then just save the same image for both filenames.
Next we need to open the Logos.SC2Mod in the StarCraft II editor and go to the import module. From here you can just right-click in root directory (not inside one of the folders) of the import module and use the import option to import our two DDS files. It should prompt you with a warning that you are overriding the old ones. That is fine.
Save the Logos.SC2Mod and you are good to go.
But if you want to add your own teams and players to the mod, you are going to need to do even more customization.
Creating a custom Logos.SC2Mod
There are a lot of different ways to use the Logos.SC2Mod. In this example I am going to create one specifically for the Nation Wars tournament so you can get to know the basics.
First thing lets just download a basic Logos.SC2Mod that we can modify. Here is one to get you started.
Before we go any further, I want to have all of my images ready to import into the mod. So I am going to create a folder called ‘Teams’ and then create another folder inside of that one for every Nation Wars team. Inside of each of those folders I am going to save the corresponding team logo as a 248x248 DDS texture with the filename “Logo.dds”. I am also going to save it as a 64x64 DDS texture with the filename “LogoSmall.dds”. This way we can show the tiny team logos next to the player names using the WCS 2.0 interface later. I have also already prepared the two League logo files I want to use.
So lets open up our base Logos.SC2Mod in the editor. Open the import module and you will see the two League logo DDS files, and a LogoConfig.XML file.
I am going to import all of our prepared team logos and the two league logos and then save the document. When you do this be sure to maintain the folder structure we created for our images. Before this will work as a usable mod we need to insert all of the necessary references into the LogoConfig.xml file though. So we are going to export the current file and open it up in notepad or something. If it is editable right in the import module go ahead and edit it there, I am not sure if they actually got that functionality into the patch or not.
So looking at the LogoConfig.xml file from our base mod we see it is pretty barren. It looks like this:
<?xml version="1.0" encoding="utf-8"?>
<LogoConfig IgnorePlayerPrimaryLogo="false" IgnorePlayerSecondaryLogo="false">
<LeagueLogoEntry PrimaryLogo="LeaguePrimary.dds" SecondaryLogo="LeagueSecondary.dds"/>
<PlayerLogoEntry TeamName="No Team" PrimaryLogo="Blank.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Blank.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Blank.dds"/>
</PlayerLogoEntry>
</LogoConfig>
Real quick I will explain what the different elements of this are. The first part “PlayerLogoEntry” is adding a new entry to the dropdown list that appears in game lobbies. In that line we have three different parameters we can modify. The first parameter “TeamName” is current set to “No Team” and it determines the name that will appear in the dropdown list for this entry. So for example, if we were adding Team Liquid here we would just change “No Team” to “Team Liquid”. The second parameter is called “PrimaryLogo”. This is actually referencing an image file somewhere in our folder. Currently it is set to “Blank.dds” which is actually an image that doesn’t exist. When the game sees that the image doesn’t exist it will just ignore it so don’t worry. This is the image that will appear in the mineral line next to a player’s base. So if we wanted to set this to Team Liquid’s logo image, it might look something like this: PrimaryLogo="Teams/TeamLiquid/Logo.dds" assuming we use the same organization system I usually do. The final parameter in this first line is the “SecondaryLogo” parameter. This is another image reference, and it points to the image that will be used to display the team’s sponsors on the opposite side of the base from the mineral line. We aren’t going to have any sponsors in this example but it’s easy enough to figure out.
The next two lines are a little different. The “FrameLogoImage” entry is creating a new image reference that we can use in interface files. The “Alias” parameter determines the name we use to call that image reference, and the “FilePath” parameter determines what file the alias calls. For basic logo mods I just add two aliases, one for the large version of the team logo and one for the small version. That way I can call them in different places on the interface as necessary.
With that out of the way I think we are ready to start modifying our XML. So for our example lets start with Canada since they are the first country on the list for Nation Wars. We need to copy/paste the first player logo entry (the “No Team” entry). That way we have something to modify.
After the copy/paste it will look something like this:
<?xml version="1.0" encoding="utf-8"?>
<LogoConfig IgnorePlayerPrimaryLogo="false" IgnorePlayerSecondaryLogo="false">
<LeagueLogoEntry PrimaryLogo="LeaguePrimary.dds" SecondaryLogo="LeagueSecondary.dds"/>
<PlayerLogoEntry TeamName="No Team" PrimaryLogo="Blank.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Blank.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Blank.dds"/>
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="No Team" PrimaryLogo="Blank.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Blank.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Blank.dds"/>
</PlayerLogoEntry>
</LogoConfig>
But that just leaves us with two blank team entries on the dropdown list, so lets start modifying the parameters. First I am going to change the TeamName parameter to “Canada”. Second I am going to change the “PrimaryLogo” parameter to “Teams/Canada/Logo.dds". I am going to ignore the “SecondaryLogo” parameter since we are not going to display team sponsors with this mod. For the “Logo” alias’ FilePath I am going to change it to the same file as our PrimaryLogo parameter, so “Teams/Canada/Logo.dds". For the LogoSmall alias’ FilePath I am going to point to the smaller logo image like this “Teams/Canada/LogoSmall.dds".
After finishing the changes for Canada to the XML file it will look something like this:
<?xml version="1.0" encoding="utf-8"?>
<LogoConfig IgnorePlayerPrimaryLogo="false" IgnorePlayerSecondaryLogo="false">
<LeagueLogoEntry PrimaryLogo="LeaguePrimary.dds" SecondaryLogo="LeagueSecondary.dds"/>
<PlayerLogoEntry TeamName="No Team" PrimaryLogo="Blank.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Blank.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Blank.dds"/>
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="Canada" PrimaryLogo="Teams/Canada/Logo.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Teams/Canada/Logo.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Teams/Canada/LogoSmall.dds"/>
</PlayerLogoEntry>
</LogoConfig>
And now we just need to add the other teams. Here is what it looks like after they have all been added:
<?xml version="1.0" encoding="utf-8"?>
<LogoConfig IgnorePlayerPrimaryLogo="false" IgnorePlayerSecondaryLogo="false">
<LeagueLogoEntry PrimaryLogo="LeaguePrimary.dds" SecondaryLogo="LeagueSecondary.dds"/>
<PlayerLogoEntry TeamName="No Team" PrimaryLogo="Blank.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Blank.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Blank.dds"/>
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="Canada" PrimaryLogo="Teams/Canada/Logo.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Teams/Canada/Logo.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Teams/Canada/LogoSmall.dds"/>
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="Denmark" PrimaryLogo="Teams/Denmark/Logo.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Teams/Denmark/Logo.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Teams/Denmark/LogoSmall.dds"/>
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="Finland" PrimaryLogo="Teams/Finland/Logo.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Teams/Finland/Logo.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Teams/Finland/LogoSmall.dds"/>
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="France" PrimaryLogo="Teams/France/Logo.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Teams/France/Logo.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Teams/France/LogoSmall.dds"/>
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="Germany" PrimaryLogo="Teams/Germany/Logo.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Teams/Germany/Logo.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Teams/Germany/LogoSmall.dds"/>
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="Italy" PrimaryLogo="Teams/Italy/Logo.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Teams/Italy/Logo.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Teams/Italy/LogoSmall.dds"/>
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="Korea" PrimaryLogo="Teams/Korea/Logo.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Teams/Korea/Logo.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Teams/Korea/LogoSmall.dds"/>
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="Mexico" PrimaryLogo="Teams/Mexico/Logo.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Teams/Mexico/Logo.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Teams/Mexico/LogoSmall.dds"/>
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="Netherlands" PrimaryLogo="Teams/Netherlands/Logo.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Teams/Netherlands/Logo.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Teams/Netherlands/LogoSmall.dds"/>
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="Norway" PrimaryLogo="Teams/Norway/Logo.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Teams/Norway/Logo.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Teams/Norway/LogoSmall.dds"/>
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="Poland" PrimaryLogo="Teams/Poland/Logo.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Teams/Poland/Logo.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Teams/Poland/LogoSmall.dds"/>
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="Russia" PrimaryLogo="Teams/Russia/Logo.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Teams/Russia/Logo.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Teams/Russia/LogoSmall.dds"/>
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="Spain" PrimaryLogo="Teams/Spain/Logo.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Teams/Spain/Logo.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Teams/Spain/LogoSmall.dds"/>
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="Sweden" PrimaryLogo="Teams/Sweden/Logo.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Teams/Sweden/Logo.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Teams/Sweden/LogoSmall.dds"/>
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="UK" PrimaryLogo="Teams/UK/Logo.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Teams/UK/Logo.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Teams/UK/LogoSmall.dds"/>
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="Ukraine" PrimaryLogo="Teams/Ukraine/Logo.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Teams/Ukraine/Logo.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Teams/Ukraine/LogoSmall.dds"/>
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="USA" PrimaryLogo="Teams/USA/Logo.dds" SecondaryLogo="Blank.dds">
<FrameLogoImage Alias ="Logo" FilePath="Teams/USA/Logo.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Teams/USA/LogoSmall.dds"/>
</PlayerLogoEntry>
</LogoConfig>
So now all we have to do is save this LogoConfig.xml file and import it into our mod. Save the mod and you are good to go! Here is a link to the completed mod.
Specialized Logos.SC2Mod for WCS 2.0 Interface
If you want to make use of some of the WCS 2.0 interface features like the player intros you need to have a Logos.SC2Mod that is setup correctly for it. Here is an XML example of a mod containing just three players Jaedong, Bomer and Hyun.
<?xml version="1.0" encoding="utf-8"?>
<LogoConfig IgnorePlayerPrimaryLogo="false" IgnorePlayerSecondaryLogo="false">
<LeagueLogoEntry PrimaryLogo="LeaguePrimary.dds" SecondaryLogo="LeagueSecondary.dds"/>
<PlayerLogoEntry TeamName="No Team" PrimaryLogo="Blank.dds" SecondaryLogo="Blank.dds">
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="Jaedong" PrimaryLogo="Teams/EvilGeniuses/Logo.dds" SecondaryLogo="Blank.dds">
<FrameLogoText Alias ="PlayerName" Text="Jaedong"/>
<FrameLogoText Alias ="PlayerRealName" Text="Lee Jae Dong"/>
<FrameLogoText Alias ="PlayerRank" Text="9"/>
<FrameLogoText Alias ="PlayerScore" Text="2950"/>
<FrameLogoText Alias ="PlayerFlavorText" Text="The Tyrant"/>
<FrameLogoImage Alias ="PortraitCutout" FilePath="Teams/EvilGeniuses/Jaedong/PortraitCutout.dds"/>
<FrameLogoImage Alias ="Trophies" FilePath="Teams/EvilGeniuses/Jaedong/Trophies.dds"/>
<FrameLogoImage Alias ="Flag" FilePath="Flags/SouthKorea.dds"/>
<FrameLogoImage Alias ="Logo" FilePath="Teams/EvilGeniuses/Logo.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Teams/EvilGeniuses/LogoSmall.dds"/>
<FrameLogoImage Alias ="LogoText" FilePath="Teams/EvilGeniuses/LogoText.dds"/>
<FrameLogoImage Alias ="Sponsors" FilePath="Teams/EvilGeniuses/Sponsors.dds"/>
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="Bomber" PrimaryLogo="Teams/RedBull/Logo.dds" SecondaryLogo="Blank.dds">
<FrameLogoText Alias ="PlayerName" Text="Bomber"/>
<FrameLogoText Alias ="PlayerRealName" Text="Choi Ji Sung"/>
<FrameLogoText Alias ="PlayerRank" Text="7"/>
<FrameLogoText Alias ="PlayerScore" Text="3600"/>
<FrameLogoText Alias ="PlayerFlavorText" Text="Are you ready for bombing?"/>
<FrameLogoImage Alias ="PortraitCutout" FilePath="Teams/RedBull/Bomber/PortraitCutout.dds"/>
<FrameLogoImage Alias ="Trophies" FilePath="Teams/RedBull/Bomber/Trophies.dds"/>
<FrameLogoImage Alias ="Flag" FilePath="Flags/SouthKorea.dds"/>
<FrameLogoImage Alias ="Logo" FilePath="Teams/RedBull/Logo.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Teams/RedBull/LogoSmall.dds"/>
<FrameLogoImage Alias ="LogoText" FilePath="Teams/RedBull/LogoText.dds"/>
<FrameLogoImage Alias ="Sponsors" FilePath="Teams/RedBull/Sponsors.dds"/>
</PlayerLogoEntry>
<PlayerLogoEntry TeamName="Hyun" PrimaryLogo="Teams/Roccat/Logo.dds" SecondaryLogo="Blank.dds">
<FrameLogoText Alias ="PlayerName" Text="Hyun"/>
<FrameLogoText Alias ="PlayerRealName" Text="Ko Seok Hyun"/>
<FrameLogoText Alias ="PlayerRank" Text="1"/>
<FrameLogoText Alias ="PlayerScore" Text="5375"/>
<FrameLogoText Alias ="PlayerFlavorText" Text="Roach King"/>
<FrameLogoImage Alias ="PortraitCutout" FilePath="Teams/Roccat/Hyun/PortraitCutout.dds"/>
<FrameLogoImage Alias ="Trophies" FilePath="Teams/Roccat/Hyun/Trophies.dds"/>
<FrameLogoImage Alias ="Flag" FilePath="Flags/SouthKorea.dds"/>
<FrameLogoImage Alias ="Logo" FilePath="Teams/Roccat/Logo.dds"/>
<FrameLogoImage Alias ="LogoSmall" FilePath="Teams/Roccat/LogoSmall.dds"/>
<FrameLogoImage Alias ="LogoText" FilePath="Teams/Roccat/LogoText.dds"/>
<FrameLogoImage Alias ="Sponsors" FilePath="Teams/Roccat/Sponsors.dds"/>
</PlayerLogoEntry>
</LogoConfig>
As you can see, there is a lot more work involved in setting up the player intros. I expect they will only be used at small invitational events and during the last rounds of a tournament. You can download this mod here to get a better idea of how it is setup if you want.
Previews -
So what is going to happen to the normal version of GameHeart? Shortly after the patch I am going to be republishing the normal version of GameHeart using the new WCS GameHeart feature implementation. In this way I can use it as a platform to keep creating new features.
With all of that said, I still want to keep pushing GameHeart outside of the WCS GameHeart project. There is more to come in the future for regular GameHeart and I have a couple of things to talk about here in that regard.
Live Data
First I want to talk about the GameHeart Live Data feature I posted about awhile back on Reddit. I really believe that this sort of data output is critical for opening up a huge new world of possibilities for third party applications and websites to make use of game data. Unfortunately this mod currently suffers from some serious performance issues, as well as some practicality issues. While I was at Blizzard I asked one of the performance guys there to take a look at it. He made some recommendations on how I could dramatically improve performance. So I will be working on implementing those recommendations and hopefully have a nice smooth version of the mod soon.
The other problem the live data mod suffers from is the potential for cheating. The way it works currently is it outputs a text file onto the computer of everyone in the game, including players. While I was at Blizzard I requested they add a small new function which will allow me to output that text file only to observer computers. This way there will no longer be an issue with the potential for players to see this data. They did it for me, and it will become available with new patch containing WCS GameHeart.
Graphs
I have also been working on a new feature which tracks data over the last 10 minutes of the game and creates a graph to give you a more visual idea of the ups and downs for each player throughout the game.
It is still in a rough state but here is a video:
I would love to hear what kind of stats you would like to see tracked visually like this.
Thank Yous -
At the end of this blog I want to take some time to thank all of the people who have really helped GameHeart along the way.
Thank you so much to MIT Game Lab, who have created many of the features you love and also contributed generously to my IndieGoGo campaign last year. We have been working together to improve the spectating experience of Starcraft II for over a year now and I am very grateful for all of the contributions they have made and allowing us to use their work in both the normal version of GameHeart and in the official version for WCS and Blizzard.
Thank you to Christoph “Ahli” Ahlers who has contributed heavily throughout the process and is always the first person I go to when I have a problem I need help with. He also coded all of the previous GameHeart interface mods.
Thank you to “pzea469” for his work on Stronger Team Colors and allowing GameHeart to use it, and “Zolden” for all of his work on the model assets I have used in GameHeart.
Thank you to all of you who contributed to my IndieGoGo campaign and allowed me to work on GameHeart and turn it into a product that almost every tournament wanted to use. It has created huge opportunities for me that have already changed my life and I could not be more grateful.
And finally, thanks to Blizzard for bringing me on to come and work with the amazing Team 1 on this project.
I hope you all enjoy what we have created.