5 ms·
During the beta, the way we used to release CosmosUI was to send modified versions of the game interface files. On every patch, we had to manually go over all t
by vjeux 12y ago
During the beta, the way we used to release CosmosUI was to send modified versions of the game interface files. On every patch, we had to manually go over all the changes we made and re-apply them to the new files. This process took several hours and in the process, no one could really play because they didn't have all their mods.
Since it was becoming a real pain, I figured out that we could modify the existing functions from a new file instead of modifying the actual files[1]. I spend several weeks transforming all our code into "mods", essentially the first addons :) Once this migration was done and patches were no longer a pain point, Blizzard officially introduced the notion of addons.
[1]: http://blog.vjeux.com/2011/javascript/hook.html http://blog.vjeux.com/2011/javascript/hook.html
- kemayo 12y agoNice! I didn't get into WoW until around 1.9 (I think), and I had no idea that CosmosUI was the genesis for the addon system. Imagining a parallel universe where we stuck with a process in which installing a new "addon" involves applying a .patch to your base UI and hoping that it'll kinda-sorta work with the other patches you applied... terrifying, really...
- sveiss 12y agoThe third-party addon story for Asheron's Call, a MMO which pre-dated WoW by around five years, was like a dark, gritty crapsack world version of that parallel universe. There was no supported add-on mechanism; instead, a player-written framework called Decal hooked into the executable at runtime, and Decal exposed an API for plugin authors. I can't remember all the details, but I think did a mixture of intercepting function calls inside the client, injecting calls to client functions, parsing client memory to expose data to plugins, and either parsing the network stream directly to capture events or hooking into the client's packet parser. Oh, and this wasn't a nice safe Lua or Ruby API. It was an unmanaged COM API, so you had all the headaches which come with dealing with reference counting, pointers, and all the rest. Every month (and every interim patch), there would be a great whine and moan from the players until the memlocs file was updated, and all the plugins started working again. (Unless something more substantial in the client had changed, of course, requiring more work.) It was a seriously impressive technical achievement by the people behind it. And looking back on it, rather scary...
- BryantD 12y agoAsheron's Call is going f2p and maintenance mode in a month or two, btw. Still sort of cranking along. Go Turbine!
- vehementi 12y agoGodzilla made me want to kill some Olthoi...
- voltagex_ 12y agoThe Minecraft modding scene is also this scary.
- rcxdude 12y agoMinecraft has the advantage of (relatively) easy decompiling and recompiling of java. There is still the large amount of breakage on each new release, however.
- ch0wn 12y agoI can't believe for how long I've been using your software. CosmosUI back then, React these days. Thank you! :)