January 14th, 2014, 02:43 PM
Am I on the Right Track?
Hello. I'm new as you can tell.
I have two weeks to make a program for a stream. I am a commentator and the lead production manager over at iCCup.com. We run StarCraft 1 tournaments and alike.
We recently adopted a new custom game which is won by whichever team has the most points by 30 minutes. Very traditional to what sports are like.
In order to make this custom game more observer friendly, I wanted to make a scoreboard and on top of that getting each players kills, deaths, flag captures and bonuses.
Sadly, I'm only an organizer, am I not a programmer but that doesn't stop me from trying!
I am asking if people can look at my methodology to this and see if I am going in the right direction, thanks!
There was a program released: http://www.teamliquid.net/staff/R1CH...OverlayPub.zip
about two years ago. All this program did was it read data given off by StarCraft and displayed it into a GUI. I am trying to replicate that to a degree.
I want to use ReadProcessMemory to gather all of this information and have them constantly write to a specific text file. I think I learned how to access the memory string from this tutorial: http://www.youtube.com/watch?v=knhWyXnmPzE
I haven't actually programmed anything yet, but at this point I can gain access to the data string so now I need to write that information to a textfile. You use the command FSstream to do this right?
The only things I have no idea what to do is the total scores for each team. There are four players, Red, Orange, Blue and Purple. There is HOT team and COLD team. Red and Orange are on HOT and the other two are on the COLD team. There must be a way to add the total scores of the players together to make an output right? Would you guys know how to do that?
Then I just need the files being updated like every .5 or 1 second.
My goal is to have like 10 or so text file that are all being written to when this program is active.
xSplit, the program I stream with, has a functionality to read text files and display their content while constantly refreshing.
If anyone could help me it would be much appreciated, hell, I'll even pay someone 50$ in amazon gift cards if they can write the program for me. I'll check this forum throughout the next couple of days thanks so much for helping when and where you can!
Also what is the difficulty of getting this kind of program to work? I feel like it would be a lot of copy paste after you get the first chunk of code done.
If your interested in writing the program for the amazon gift card, feel free to add my Skype @mastercosgrove . Thanks!
January 15th, 2014, 06:17 AM
Re: Am I on the Right Track?
Trying to extract information such as scores out of a running game without said game providing an explicit API to do so is going to be a whole truckload of various problems.
Your best bet is trying to get the authors of the game (Blizzard I guess) to cooperate with you and work with you to resolve this.
If this isn't possible then.
1) The legal issue
It is typical illegal to try and reverse engineer or patch into a game to extract information in the way you're describing. Make sure you have your legal issues properly sorted before proceeding.
2) the hacking issue
The way you describe it, you'll need to figure out where this information is stored in the game so you can access it. Depending on how the game was written, this can be anything from fairly easy to extremely complex. This isn't something a novice can do, you'll need to find cooperation of a experienced hacker to find the locations. And then said person will need to make a program to periodically extract this information. Again, this can be simple or complex. I've seen lots of "hacks" like this that work well enough up to the point where you try to close the game or where you try to launch new games.
Once this is properly in place, you'll still need someone to write an app to consolidate the info and make a pretty display of it all.
3) I've been to a few e-sport events, and I can't say I've ever seen it done anywhere near like this.
The typical solution is to use video hardware that "splits" the video signal so it goes to the monitor the player sees, and is also fed into a videomixer that allows you to project individual screens to the bigscreen, and even make splitscreens showing 2 or more players at the same time (with overlays).
I can't recall ever seeing a "scoreboard" of running games unless such a feature was provided by the game server itself.
end-of-match results are typically inputted manually.
Also... LOL at the 50$ gift card. What you're asking is at least several hours of work for an expert skilled person. So as a actual payment it's not anywhere near enough to attract a professional. And anyone else with the skills that does give this a go would do it for the challenge of getting it to work alone. Sure, they'll probably accept the gift card, but I can't see anyone doing this because of the gift card.
January 15th, 2014, 06:37 AM
Re: Am I on the Right Track?
I already have the sources where the data is held. I already have access to it. I just need each data when it changes to be rewritten. I'm trying to figure what commands I need to do this.
January 16th, 2014, 06:33 AM
Re: Am I on the Right Track?
if you already have the location info and you can reliabably extract it from an external program (and don't need to inject code into the running game) then read it with ReadProcessMemory and store it into a file. file access is elementary C++ which you can find in just about any C++ tutorial.
basically create a ofstream object, stream your variables to it and destroy the object.
Click Here to Expand Forum to Full Width