If DISE is stuck trying to update, run this command in Command Prompt.

Monday, May 14, 2012

Talk about the next version of DISE

Hello from the monkey cage!

It has been a while since the last release of DISE. I've wanted to release it so much. At the same time, I was working really hard on solving the problem that happens when Valve releases updates to Steam; it breaks syncing in DISE, you send bug reports, I fix it, etc...

I'll talk a bit about how the project (and I included) have been doing so far.

Warning: The rest of this post uses some geek-terms.

My original solution for the problem
I moved all of the Steam-related code into its own library (I called it Steam Helper). The idea was to provide a copy of this library (DLL file) for each version of Steam. When your Steam client would update, I would build a new copy of Steam Helper for that version of Steam. DISE would then be notified and download the copy of Steam Helper that would work with your Steam client. I thought it was a great idea. For me, at that time, it was the best way to secure the future of DISE with syncing.

I got to work
All this would require redesigning my online database and building the backend (I didn't really have one before), web service and everything web-related. A lot of work went into this. Still, I knew that by doing this, I would have to support DISE and/or Steam Helper forever... Or at least as long as Steam didn't shutdown. Deep down, I had to admit it would be impossible.

A better solution?
I got an idea that could solve the problem... I made DISE search for the steam_api.dll shipped with Dead Island and call some functions it exports. I was so happy to see it work! That was until I realized that Steam wasn't actually syncing. It only looked like it.

You may know the feeling when you've worked so hard on something to learn that it was to no avail in the end.. You know there's "that other fishy method" you can use which will require your submission to the dark side. In my case, it would be 1) using a leaked Steamworks SDK, and 2) embedding the steam_api.dll file with DISE. It would unfortunately be illegal but would completely solve the problem. Believe me, it was tempting. I'm a very honest person, so it would haunt me in this life and even afterlife. Still, so temping, because it would make your life and my life easier.

Maybe I didn't look at all the possibilities
I decided to run the game in a debugger again. If you remember, I wrote about OllyDbg before. I put breakpoints on various exports in the steam_api.dll file, and tried to find out which functions the game called in the interface(s) created by the steam_api.dll. I got it! Now I knew which interface it used (ISteamRemoteStorage). It was a bit different from the one I used before (IClientRemoteStorage).

After some more studying, I wondered if I even needed the steam_api.dll after all. Good thinking! The DLL was eliminated and I was on the road to success!

It worked
Relieved and still sane. The dark side had not consumed my soul. No matter how much efforts I put into this, it worked out in the end. Nothing else mattered.

The next version
More features, allegedly more stable, several things have been improved. I won't give the whole list of changes yet, but I'll post some screen shots of the current development build in another post! :)

No comments:

Post a Comment