 Hey, guys So So first I wanted to thank a couple people the EFF first of all I know you guys are here first subverting the world of Warcraft API. It's now extending the world of Warcraft API And I want to thank the goons to those guys are awesome getting us here and taking care of all the speakers like They they function on tips and beer so I'm Chris Mooney. This is James Lutke and This is our talk Which is broken? So if there are any blizzard employees Yeah, or if there are any fanboys in the audience this NDA applies to you You guys can feel free to read it, but So You would do the same to us So I'm Chris Mooney. I work for a or on a volunteer on a nonprofit. So does James. We both work with a gear man James works on Drizzle. We're C software engineers in the high-performance high-availability space We wrote this code together and And we have day jobs In the talk Basically, we're gonna run a demo. We were originally hoping to do this in parallel So you guys would have a demo screen and a slide screen, but that was kind of complicated to do So we're gonna try and speed this up a little bit So everybody kind of get ready to take in a bunch and then we'll get to the demo, which is the fun part to watch Let's see So What is the World of Warcraft API? So for those of you that don't know it's basically a Application programming interface for UI developers people that Want to change the way the UI looks change the way it functions blizzard has sort of made this a plug-in slash add-on Way to extend the UI because it doesn't look very good it's basically written in Lua, which is object-oriented scripting language and You load add-ons in the game they change the way it looks and feels and This is important because you can get a lot of information out of the environment and That allows you to take certain actions and then you can inject inputs back into the environment Which is really really important to making this code work so the UI in The 2.0 patch so for those of you who ever played World of Warcraft before burning crusades and your old school and it just came out I used to be able to make a function like nuke player and then You could create this cast spell by name fireball and you make a macro slash nuke player bind that to a key and You could just from a key press cast a spell like that Without macros in Lua in the API language that they had provided for you and that looks a little bit like See this pre-seal function over here You go through your party members determine who needs health and Then down here. I'm sorry for you guys that I'm neglecting this side of the thing, but I'll try and Down here. There's a target unit in a cast spell by name function So right in that area. Oh, look, I can't even look it up. That's all you're gonna get Yeah, so this allowed certain add-ons like recursive one-hit-wonder the code that we had originally written to work people use this extensively to do all sorts of really cool things like You know determine if somebody needed to heal you could do that all programmatically from a button press Anyway, and then they decided that they didn't want people to do that next slide so They removed stuff like target unit cast spell by name to normal mortals like us and Made them protected functions Which means that your add-on had to be signed by Blizzard and couldn't call the functions unless Unless that your add-on was signed and it couldn't use them They also changed certain things like set binding click so that you couldn't binding combat so like you were in combat you can't just rebind your keys quickly in combat so that you could continue to cast something in your rotation or what not and Yeah, and so basically you see these these functions over here all these add-ons before to one the recursive one-hit-wonder all that stuff All this stuff was disabled if you guys were around then and you play the game You know what that meant. It was a big paradigm shift for both coders and and players and They basically this is the same function the red here on each slide is the type of Function that they removed so that was the API call no longer worked Why they make the changes I'm gonna skip right down to the bottom one here. Maybe they hate us Cuz we all put a lot of code into this and a lot of time and you know, they just said forget it We don't care, but really I think it was something about trying to Stop programmatic decision-making so they didn't want us to basically you know have some person hit a key and have it make some sort of heuristic decision about what to do and It's kind of weird because everybody could do it So it was kind of like mutually assured destruction at that point and then they removed it Which made us really powerful so Then there's some new terms of service changes, but for speed. I'm just gonna go past those Basically, if you know the game you read them they're sucky So our plan of attack is Basically, we want to work around the protected functions not circumvent We want to Sorry EFF, thank you again So I know that some you know, it's basically assigned functions are algorithmically secure It's supposed to be mathematically intractable to be able to produce a signature of your code and whatnot and the the awesome attack That I'm sure you guys would want us to do is you know crack that or find some sort of way to do that But nope, that's the strongest chain in our little security problem and we're going to just sidestep it entirely So I know that some of you may say that's cheating. There's no such thing as cheating in computer security So we just identify our objectives and find the path of least resistance. So that we could slink And there are a few other things that are pretty important here Blizzard really really wants you or is it's pretty aggressive about prosecuting certain people and We wanted to work well within that framework Again, we have day jobs and actual wives and you know, lots of other things go in our lives We don't want to spend a ton of time trying to try to break this just to have a little bit of fun So we thought that maybe you know trying to deal with their constant patching and upgrades To binaries would be a pain. So we didn't want to just change the flow of execution in binaries We also didn't take the protocol route we are originally planning on a bunch of this stuff, but we looked at the easiest solution and then there were other considerations Wow glider and Just how Blizzard Functions with the DMCA what they've done in the past we wanted to make sure that we would steer away from anything that could be considered Circumvention technique and I think I would advise all of you in the room to pay close attention to the DMCA and lessons to be learned from cases So basically Let's see. Oh They are okay with a few things first of all they provide you the API and so we wanted to use that API. They gave it to us There it's not, you know wrong to use it. They're okay with that and Also, they're okay with with multi boxing So this is the idea of having one controller that will repeat your button presses to multiple boxes So you can have you know four or five mages or shamans or something like that You hit one button and they all cast the same exact spell at the same exact time We made sure that we tried to stick within all of these rules next slide So binding keys out of combat. Let me just say that this is how we did it and Feel free to start reading the code It's going to be a couple slides of it. Hopefully we don't go too fast But the demos way more impressive. So Basically, you could see this profit key binding the code is called BTP code because it was a guild that we were in and they were called they had the profit and so over there you see that we're calling profit key bindings, which is this function over here snip There's a bunch of detection work to determine if you're in combat or not remember because we can't find keys in combat so it doesn't try to and And then you go down into and I'm having trouble reading the red which was a terrible idea to choose that but We basically I know what this does. It takes a button creates a virtual button assign some information to it and And then winds up down here Taking that button and binding it to a key press. So that's the last red line Yeah, so this is the same key bindings function you're just looking at so now we're going to map those key bindings to a color You guys are probably starting to see what we're going to do here and So you've got this mapping And then it's basically just a hash. It takes whatever Whatever key it is and maps it Here and then there's another function Up here, which actually can't remember with this Yeah, so this is going to take keys and bind them to RGB values and This is a bunch of rolling through different keys And we're going to bind it to a bunch of those RGB values So then we display the colors in some frames again the red text over here basically goes through and allows us to call a function and set that particular so when you say You know cast spell fireball it winds up Mapping that to a color which is displayed in this frame. So this is the frame code to display That and you can see basically, you know, like I said, I'm we're kind of rushing through this. So And yeah, then we replace the API function. So remember the fuck blizzard. I'm sorry Love blizzard, we don't mean it Like profanely we you know, we mean it as a term of endearment. We replaced all of the function names Maybe in the beginning out of frustration now we you know Trying to make peace and So we replace them with this function that basically calls this this mapping and winds up Displaying the color and then you'll look down here this ff ff ff value Is sort of a signaling frame for us and so this is what our new Cast spell by name Our new target unit function looks like so up here and down here and then Over on the right you can see this is the original function. They remember they disabled it and what we've done is put our new API calls in here This is just frames have context. You'll see this in the demo. I'll try and explain more, but there are a bunch of different frames Inventory target inventory action container target container action Up here in the top and down to like player action and whatnot and that's for targeting and and casting spells and and why not And then what we do is take outside controller program remember we said auto hotkeys, which is something for windows and we You know scan for this gradient blue to detect where each frame is for the outside controller program and And then we basically The far left frame that I framed the far right. That's incorrect. It's left the frame to far left signals that there's input We scraped the color from that frame so we basically are doing a frame buffer call and and getting the information from that and we have that color mapped to a key in the controller program and It hits that that key, but it hits it in a sequence of a bunch of contexts. So Let's see. Yeah, so this is the PC controller We used how to auto-huckeys because blizzard is okay with people using auto-huckeys for multi-boxing It's a scripting language. It has an API to get pixels, although It's kind of slow because you need to set up a context each time you grab a pixel So reads the pixels from the frame Takes an action based on that color and this is just sort of the syntax, which is maybe not as interesting and We also in the next slide Have a Mac controller, which is written in Objective-C It's way faster and it works way better because we wrote it As opposed to having to weird use some weird scripting language and And I think that we could get the same speed out of windows If we sort of followed the same model, but we didn't take the time to write a C++ controller or something So So what kind of cool things can we do now? We can cast spells We can target and we can move again and we can do that all programmatically So it's basically remember the pre 2.0 patch days. We've reverted everything back to that We can Re-enable a bunch of old add-ons by replacing their old calls Although those old add-ons because they're no longer being developed are probably deficient in a bunch of other ways Let's see. We've written our own substitutions for one hit wonder, recursive, that sort of thing We have a bunch of heuristic casting modifications. So You know basically does this person need a heal? Should I cast this really and a destructive spell on somebody? You know the the types of things that you would expect in a game like this So I don't want to say artificial intelligence, but There's definitely something close And this is really fun. So even in the pre 2.0 days you could not Target or Cast spells or do any of these things in response to or you could at least couldn't couldn't cast spells in response to a In-game event it had to be a hardware button press that triggered that cast spell by name function That's no longer necessary with us We basically if I'm sitting here, and I'm going to fight James and he starts casting a fireball on me that event is triggered in my UI and so that I can see his animation of him casting the fireball and And when that's triggered it can instantly just call our code and say well silence And it will automatically just silence him. So you get this sort of really Unbearable So let's see we have Healing DPS helpers they'll follow you around and there's a bunch of control functions to do it You can do all sorts of things trade items with them like make them do stuff There's lots of fun there we started you know trying to run an instance And we would tag a bunch of these things on to us in the back because nobody wanted to heal back then and so So we could run instances just the two of us like hanging out and that was a lot of fun Let's see Using the movement functions again. Yeah, that's right. So Notice we're using the word helpers here again EFF. Thank you for redefining our terms You can call Helper to you. This was kind of fun. We created this thing called BTP booty call and you would whisper it off to a robot and I'd be sitting there in some zone fighting somebody and and The robot and in some town and shatrath or something would mount up and Fly all the way up as high as you could go so we didn't clip against anything And then he would basically do XY coordinate stuff and just fly over to me until I'm fighting all of a sudden this druid comes dropping in from behind me and Would just start healing And then basically oh So that was a hop-skipping a jump to do and I'm sorry for the fanboys and everything to do node farming or any of those things On top of that although that all of that is broken now because it takes sort of a priori information of those XY coordinates to go there And we didn't repopulate that for the frozen throne. We haven't actually been playing that much We were a little freaked out on Tuesday because we're like I wonder if they've patched it and Totally broke in the code because that would admit and really mess our talk up but They they didn't And so let's see. This is a fun one. We're going to demo this You can use the follow functions to follow someone in battlegrounds So we have like maybe nine characters Which will probably be demoing how they work over in the Contest area we haven't set up there yet because we wanted to give the talk first But we have nine characters and we're going to demo how they work and we're maybe thinking of doing some sort of Like raffle or something to give a bunch of characters away because we don't actually play the game anymore And yeah, so there There's a bunch of really cool things that you can do there. Let's say a controller player Oh, this is fun. Yeah, so James primarily wrote the code that does this but Controlling player now can so, you know, I mentioned, you know, remember that they let you multi box So you can have, you know, five or whatever Things following you around casting the same spells. Well, our code really lets that happen So it's class diverse now you can have like a whole team of healers and tanks and all this other stuff and James wrote a bunch of code that Wines up triggering the other robots so that you can control their spell casting So if your inventory is restricted to a particular class now Your your spell inventory that is now your spell inventory is pretty much diverse across as many glasses as you want If you write the code to do that so you can, you know, do things that you've never done it stunlock forever sort of thing and Yeah, that's it for this slide. I think that's some cool stuff So we have a project you guys might want to write some of this stuff down because the slides gonna disappear for the demo We haven't opened it up to the public yet because we wanted to give the talk and then just allow Everybody to get in and grab the code and play with it use the framework. It's kind of messy right now There's some stuff that I wish we would have cleaned up, but We didn't and it has some forums in a wiki, but all that stuff is kind of preliminary We have a project on launch pad which will have the source code and we encourage you to branch what we've done and adapt Because this is public now. They're going to try and probably stop it. So I would encourage you to adapt It won't be that hard. We've thought about the ways that they can stop this and You guys can pretty much Get your yourselves around it and We're gpl in the source Let's see a developers wanted remember we want that C++ version of the controller There's not complete code for all classes. I don't think warrior or death night or any of those classes have Have code yet, but you just follow a template for other people in your all set And maybe port some of those old add-ons that people used to like to the new API And we're moving on to other projects. So anyone want to take over the project come and see us afterwards That's it so big conclusions here tiled background images are fail and Monochrome text is win So what we're going to do is try and show a bit of a demo of how this works. So this is a druid And this is worse on Gulch. Nobody pay attention to the names up in the corner in fact Actually, I hope the resolution is so terrible. You can't read it Blizzard employees So you don't ban it while we're doing the demo We have a lot of other accounts, and we will just continue though And So is it in PvP mode? so we're putting the robot in PvP mode and Now we're going to go to the outside controller program Yeah, I mean sorry helper. We're putting the helper into PvP mode And so there's just a couple little things here and we just hit start. Oh wait Was that nine or zero or something and start and then once you give the window focus it should start Trying to do some interesting things. I'll go ahead and click on the oh, hey. Oh, no. No, what's going on? Oh Fail this never happens. So just all right good there. We're good go ahead and We're gonna start over It's okay. We have we're good on time right so you guys can pretty much Yeah, so this is the trust This is what's worth it the the robot is fun and so I want you guys to watch it sort of enjoy what? Helper sorry, Jesus. I'm sorry They talked to me like an hour ago, and I have to remember the terms Okay, so you guys can start to see like a little bit of Weird flashing up here to see this little white thing so what he's trying to do right now is mount up so that when somebody runs by him he can Quickly connect on and start following them and in the corner up here This is that left signaling frame. It'll turn white actually is that off the screen a little bit over there maybe So we're just gonna wait to get in here While we wait we have 30 minutes. I think it's really fun. Have you guys play the game if you want to ask any questions? I have a green laser pointer, and I will blind hecklers so So feel free to get a give focus again click on the window. Oh Interesting We're pro this works very well. We swear. Yeah, it does. Oh, and we'll be demoing this the entire time in the Yeah, okay, there we go. All right So we're just waiting to queue does anybody have any questions sure. Yeah, go ahead So wow glider Doesn't really do what we do. We just entered battlegrounds. Oh, and also James hands off so He's buffing everybody right now while we talk So while glider takes an interesting approach to doing this they went the I think finding memory and modifying memory and Working like that people use this program called while glider used because blizzard decimated them use this program to Basically, you know level their characters and whatnot, which I should say We tried to do some of that with ours and our first invocation of the program We had two characters banned in the first day. So oh It's it's already all right. So there it's going somewhere. Oh, yeah questions Right. So so he was asking how well it handles chat interaction with other players and What not and I will say this so there is a little bit of I guess you could call it I still think it's heuristic artificial intelligence. So do you guys know what the AI ML is? It's the AI markup language the Alice bots are written on it and whatnot It we wrote a bunch of autoresponses. So when people Okay, whoops got a hill. We're good. Sorry. This is gonna be distracting for me. I get kind of like ooh shiny when I'm watching these things So, yeah, the What was I saying there? Yeah, that the Chatcode so we basically put all these responses in based on AI ML So when someone whispers us and says hey great heels, we say something sort of plausible back to them and And a funny story about this is I have a warlock robot that I was running through battleground Yeah helper That I was running through battlegrounds and and this GM whispers the helper and GM is a game master. They're the you know gods of this little universe James will help it along just to get it to tag down to other people the combat. Yeah This is just good for demo, but you can leave it and it will do the right thing Hands up, yeah, okay, so oh, oh he's gonna kick around so So basically the GM whispers it and I was like, hey, how are you doing today? And you know the robots I mean helper is like hey, I'm doing just fine. How are you and and you know It they have this little dialogue and after about six of these the Helper says back to the GM Look, I'm really busy. I'd like to just get back to playing the game. Oh It gets better so then so then it's programmed to just ignore the responses that the GM sends it and And so the GM's like no really you need to talk to me and it just goes on and on and they gets to the 10th response and The the helper says I told you I was trying to get back to the game Welcome to my ignore list and it actually calls the API calls and puts the ignore So it turns out they have a little a little hook that doesn't let you ignore a GM And the next thing says you can't ignore me. I'm a GM You're banned and basically kicks Kicks the helper from the game And so I get home from work and checking my email and I'm like fog. Oh, no so I sent a response to the people that Handle the complaints and I said I'm sorry first. I should say that it logs all conversations So I looked at that and it was plausible. It was actually a plausible conversation So I sent a response back and said this GM was a total asshole to me like what's going on He kicked me off and and banned my character. I was sitting right there and And and I got an email back with an apology And they re-enabled my account and I still have that account So that's how it does in-game Chat stuff it also you can control it. You can send it help messages and whatnot So it turns out humans you're still good at something It it performs okay in arena, but it's not the sort of thing that's easy to farm I Certainly play arena with robots tagged to my back as a primary controlling care. Sorry helpers This isn't gonna happen. Obviously my brain's incapable of figuring that out and Yeah, so I've I've played it, but if you put them in alone, they'll get crushed They just sort of stand there in the corner and heal themselves. It's really funny. I watched a 30-minute battle once Where they had like feared me off of the helper and killed me and then the Helper wound up standing there healing itself for about 30 minutes while two people tried to kill it But that doesn't win you a points and isn't that effective so Any any other question? Yeah, go ahead. Oh Okay So how are we modifying the lewifiles? So we're not really modifying any lewifile. This is an add-on. Yeah, this is totally This is totally legit with Blizzard there Well, I don't yeah. Oh, I so yeah So he's saying that we're kind of in the same domain as wow glider. I Think that there are some very subtle arguments that can be made. Oh What did we die? It should resurrect but there's kind of a bug that makes this quick. So yeah, there we go And then it'll just wait to something. Yeah, you know I think there are some very subtle arguments that can be made, but I'd rather not Really comments on that right now Yeah, he isn't appeals and everyone here Hope that the wow glider guy wins that appeal because the way that Blizzard got that judge to define what copyright was Between the interaction of the running elements that are essentially instantiated on the machine and the the user He's totally jacked up It's it's very very strange and I think the EFF can talk a little bit more about that, but basically makes Almost anything by that abstract definition a circumvention technology in our domain. So Let's see. Do I want to queue questions? We don't have a microphone or anything, but I okay So you I know I was gonna I'll get you in next Well people mash the keys. So the question was do we have any evasion detection? I We don't I definitely think you could inject some sort of variance in there You know make the robot look more like it's a handy helper like it's a Human or something, but and we don't try and avoid warden again auto hotkeys is the Program that a lot of people use for multi boxing and so Yeah, I think that would be tricky. I'm gonna get the guy in the wall and then I'll grab you All of them Let's see. So worse on Gulch is probably the most in I'm sorry, which battlegrounds is it recommended for? It works really well in all of them So if you're going to farm AV you should do it during the day when people are there at night So those of you running battlegrounds afk bots you suck because you break The major function of how this works Your quick bot goes into battle battlegrounds our quick helper goes into battlegrounds, and then we follow you and you stand there doing this And it doesn't help So Where are we on the healing meters now number two? Oh, that's good number one I bet that other guy has PvE gear, so we've got PvP gear And so there are certain battlegrounds that this is better for But they all work equally Well in certain times of day and in certain contexts There was somebody over it. Yes What's the score in game right now? Does that the okay? So that was the we were second on the healing meter go ahead and you bring it up again James if you want. Oh Alliance one. Oh Alliance one. Yeah. Well, that's because That's because If a good player were to you know step up we'd heal him Yes, yeah The leveling up bot Helper the thing that we tried to do so first of all Blizzard really doesn't like that and We think it was just really obvious You know, we were starting it was the first day of code that we were testing and we hadn't sort of added in any of this Stuff to make it look human implausible and it It failed the test because someone walked up to it and said you know Hey, what's this and then reported it and two accounts got banned. So Let's go back here It will continue to Heal itself or other players that are around If it's say a warlock or something that will continue to do DPS Did everybody hear the question is basically if somebody dies and we're not following anybody. What does it do? So it will continue that piece of combat if it's a rogue This is really funny the rogue will just go to town on the druid's back But it has this buff called thorns which does a little bit of damage each time and it's healing itself And so rugs will kill themselves trying to try to kill the the druid at least We also have a priest warlock Paladin shaman. There's all all of these classes work If everyone dies so if this was a DPS bot and it killed people which is really funny because it does This mage once was casting on the back of it And I was like well I'm going to be honest here and see if this passes the Turing test and not touch the keyboard and The mage decided to move around to the front of the warlock and and the warlock Decimated the mage and like was almost dead so the mage just kept going at the back It will then mount up so if it's out of combat it will mount up and wait for another friendly player to Run by and it will tag on to the back of them. It follows the signal of whether it should be mounted based on Whether or not the person that's following is mounted Yeah, go ahead So it it does really well in PV instances and in fact, there's another druid that I don't have here that has the full tier sets for Naxor on this or whatever the tier 7.5 and It works really well So what you do is you take the follow mode off and then you just move it around In the instance with all of your guild mates and it will make these decisions quickly and you can give it priority lists You can tell it These are tanks These are lower priority and it will It will try and do everything you can also put it into a like raid healing mode where it only puts one hot on all raid members Unless they're in a really critical state and so questions Go ahead actually I'm gonna leap over you in the red shirt cuz the guy behind you. Oh, yeah, it does it will Yeah, you'll act back. It already did it. I think if you look down here. This is the rebirth buff I'm pretty sure The rebirth spell and it's in cool down, which means someone died and it resurrected them Let's I'm gonna try and step back in the room brown shirt Timing mechanisms like what do you mean by that like we Yeah, so he's asking if there were so in the beginning there were counters and a bunch of other stuff and Blizzard took that stuff out We didn't re add that stuff. We started modifying the game after those things existed And so, you know, we tried to scratch the itch that we wanted But if we had had those things disabled on us, there's a chance. We probably could have done something That's a little bit trickier. We have a callback system instead so what happens is you make certain decisions and if they're time-based or if they should happen or be checked over and over we have a whole callback system in place and Oh, hey, look we're we're helping the flag person who we're gonna win And so when it goes back in so it's when these functions are called again They're sort of re-entrant and it goes and calls a callback and does a check for something that happened in a previous instance of the code run So Others is there a lot of red around? Okay. Yeah, we're doing great. Oh It's the other flag carrier. I see what's going on So hands off James How are we on time right now? Anybody know what time it is? We have 18 minutes left Eight eight minutes. All right. Well, we have plenty of time for more questions and more fun. So, yeah Go on. Yeah, sure black hat so there are Oh in response legally or program at like, you know legally or technically so the question is Well things that we've done here make your game experience worse in the future This is an important thing for Blizzard to understand that. Yeah, there are certain things they can do That will make your game experience worse because of what we've done Honestly, I don't think it's the right direction to go the community You know is already upset about this sort of thing. Did we win that flag grace? Okay So the community is already pretty upset about certain things and they're kind of losing developers right now Basically, there are recent add-on changes and they slowly lose developers because they're becoming disenfranchised with with Blizzard I think that either enabling these functions and making this code useless or You know just letting it be would be much better for the community Obviously, but I then we wrote the code, right? So we're a little biased. Yeah, a little biased Yeah, so there are things What I let the flag it let the flag carry die. Yeah. Well, well, you know, it's a druid the only of pots, you know That's not our ball It did the best it could Was it out of mono so we're losing it's not because our robots suck. Yeah. Hey top of the heli meter still though, right? Helper James helper Yeah, so, you know the multi-boxing stuff I would hope that they don't disable that because I know that's a lot of fun for people and whatnot Blizzard yep, go on Yeah, so let's talk about the frame context a little bit up here at the top If you've noticed oh good look, it's being active force their white boxes a signaling frame that says hey There's data and then each one of these boxes at the top here Is a different context so it might be a targeting context or an inventory context a Container context You know, there's a context for targeting a context for taking an action a context for your pets targeting your pets actions this is very cool and and basically each one of those colors is corresponding to a different type of button press and We just line them up and detect the colors map them to their presses send the events and it Basically does everything that it would need to So that's what the frames are Really simple, right? I mean, it's kind of a bit of code to make this work But it's not like some major security breakthrough. It's well within the framework. It's pretty simple Okay, I'm gonna go this guy right here so the question was if so there's a dual boxing websites or dual boxing comm or something to that effect and Do we recommend any sort of dual boxing programs? We kind of did this in a bubble. I Actually don't know of any there were some on the UI forums. Okay, so Places that offer help to people I wrote fanboys there for a reason and Whenever we try and go to the add-on community to talk about what we want to do So when we wind up in their IRC channels and we're trying to solve a particular problem They First ask us a very legitimate question. Why do you want to do this? And you know because they might want to say you're doing it wrong and you should do it this way And when we honestly answered what the end objective is They usually flame us and then ban us from their channels So there's not a very good community that I know of Although there were some people I want to do a shout out to cogwheel who is Developer that's done a lot of work here and he's become a little bit disenfranchised with blizzard But a discussion that we had had on the forums led to this sort of fancy binding mechanism that we do for keys and He doesn't know that's what it led to But that's what it led to so I don't know if anybody has sites, you know Feel free to recommend them for that stuff more questions. Yeah. Go ahead. Yeah, you know It's it's plug-and-play To a certain extent there it takes a little bit of knowledge We didn't We didn't focus on trying to make the the you know lame and user Lamin and user all the same thing you guys You know make this easy for them So there's sort of you know go into this script and edit a bunch of stuff You know the kind of way you would have like you were programming in parole or something like that Change all these variables and and set this stuff. It doesn't really make sense to you And it's not too too well documented all the functions that are there so it's sort of you know the source is the documentation right now, but It could be better for sure. So I want to note real quickly He did 644,000 healing and the closest alliance was at 400,000 Yeah Let's see I'm gonna go over here to the blue shirt. Oh Yeah, yeah all the source code is gonna be g peeled and released. So the question was will we release the objective C controller? We're gonna release everything So long as Our attorneys think it's okay. Yes, but yeah, we're gonna release everything hopefully by tonight Let's see over here on the wall white shirt. Oh, I couldn't really hear you Can you set it up on your laptops while we're here? Yeah. Yeah, we can help you set this up Absolutely. Yeah, come on over. That's what we encourage you We would like to show you how to use the API and write class code and do this stuff. So if you're into it, yeah Let's see what time is it right now, it's we have ten minutes left until until what three o'clock We have one minute left ten of right now. Okay. Let's take like a couple more questions Let's do a front row. I Have that shirt by the way. I hack charities. That's awesome. Yeah, go. Oh It actually we had to write some stuff there. So we don't want it to heal. Yeah, let's let's go ahead Let's go to strands of the ancient So their question was how well does it work in vehicular combat? So this is siege weaponry and whatnot We try to detect whether or not something's a siege weapon and we try not to to heal siege weapons occasionally I think we buff them that that's just the bug that shouldn't happen because it doesn't work And then it just buffs over and over but that's inexpensive right now And what's really funny is that a consequence of of all of this is that occasionally? So there's this farm BG field you click on the battle master to enter and it will click on the siege weaponry and Hop into it. So it's following somebody and it's periodically clicking the center of the screen And so it it will click onto the siege weaponry and enter it Which of course gives it the protection of the siege weaponry so nobody can attack it and then it heals everybody around the siege It's really cool Let's say I'll do this guy because whiners I am hoping that they take the same stance as Protecting what we're doing as multi boxers So the the BG thing is kind of interesting But really there's a kind of cool thing of being able to walk around with your guild in an instance or Or to be able to tag these things on to the back of you you're paying for multiple accounts You're running on multiple machines It follows all the same categories except that they may not like programmatic Decision-making Which is a bit tricky, so I don't know exactly what Blizzard will do in response to that as for whiners We kind of chose Def Con because we didn't think you guys would whine We thought it would be cool as opposed to being you know hung or something at blizzcon, so Yeah, and well Yeah, yeah, so okay, so now that this is public You take your lives into your own hands your characters lives Because they can write signatures in Warden They can try and disable the add-on and they can try and be jerks to you the same way they were With other people like wow glider, although I think it's arguable that we're not destroying any economies This is the developer community two of us Trying to say you know Blizzard come on like we were having fun. We thought this is a whole new game You know a whole new way to release a game And you took away a bunch of functionality. That's actually pretty cool for developers That being said warhammer online uses Lua there's a lot of other games that are going this direction and Think of these techniques in that context because other games can probably also do the same thing Yeah, sure black actually gonna go the black shirt first one. All right So any Blizzard employees in the audience I did want to say this one thing we I Think are pretty good people we try and help charities and We you know we try and do other things. We're not out like murdering people or anything like that. That's it Okay, so anyway, they like to pierce the corporate veil for DMCA stuff and totally ruin people's lives So if you're a Blizzard employee, just be cool when you tell Blizzard about this stuff Thank you very much everyone