Valhalla Legends Forums Archive | Battle.net Bot Development | Extra explanation on JBLS and BNLS servers

AuthorMessageTime
LX
I posted this noob question at bnetdocs first. Yegg was kind enough to point me to this forum and give me a brief explanation already.

Original question: "I am planning to write some interesting C# code for Battle.Net protocols. I've been searching the net for information and found loads of it. Enough to get me going, except... I have only a vague clue as to what the JBLS and BNLS servers are for and why you want to use them. So far I guessed that these servers act as proxies between chat clients (non Blizzard-games) and the real Battle.Net servers. But why not let the chat clients connect directly. Am I missing stuff here?.
If someone could give a non-expert Battle.Net guy a short explanation, that would be much appreciated. Then, expect great things to come in the future (such as a C# based BNLS/JBLS server, custom clients and other marvelous stuff).
Thanx.
LX"

Reply by Yegg: "You probably won't see this answer now, but JBLS and BNLS are the same concept. To keep things simple, they are servers that handle all of the complicated Battle.net procedures for you and tell you what to send to Battle.net."

Can anyone add some extra info to this? What exactly is the difference? Just implementation? What is the complicated stuff that you don't want to handle? I can imagine that referencing a good library is just as good as going through a proxy (which has the risk of taking username and password). So, why the servers?

BTW, check my other protocol work at http://gamingprotocols.codeplex.com.
May 3, 2009, 9:09 PM
Yegg
I didn't think you'd see that answer since the question was already 2 months old and you still had just one post on that forum.

BNLS and JBLS are the same concept in that they both provided the same tools to you.
I'm going to use BNLS to refer to BNLS, JBLS, or anything else that is the same.

If you don't know how to or don't want to worry about writing all the more complex tasks related to coding a Battle.net bot, such as cdkey decoding, hashing, encrypting, etc. etc., then you can have BNLS handle it for you.

A BNLS server has a particular protocol it follows (which I believe is documented somewhere on bnetdocs.org). You can send it certain commands and it will respond accordingly. If you need to hash a cdkey, you can send BNLS the cdkey and it will send back the hashed result. In some of the BNLS's commands, you need to send data that Battle.net has already sent you so that BNLS can produce the correct results for you to send back to Battle.net.

BNLS can make Battle.net bot development a whole lot easier.

Probably the two biggest advantages are that you as the programmer don't have to do all the extra coding, and even if some day you decide to no longer update your bot, it will probably be able to continue working for those who still use it, since most changes can be fixed on the server-side (BNLS).

Probably the biggest disadvantage is that in the event the server is offline, your bot isn't going to be able to get on Battle.net. Long ago, the primary BNLS (hosted by Valhalla Legends) seemed to be online virtually all of the time. Eventually, it seemed like it was offline quite often so other people made their own BNLS servers. JBLS became a popular one. However, JBLS was released open source written in Java, and others were allowed to run their own JBLS server on their own computer. As more servers became available, it meant more servers available for bots to use, effectively eliminating the issue of a bot not being able to get on Battle.net because the BNLS/JBLS server was down.

Hope this explains everything you needed to know about.
May 3, 2009, 9:19 PM
LX
Thanks Yegg for the elaborate reply. I googled all I could, but could not find any description anywhere.
This all makes sense. But if someone was crazy enough to program an easy to use library (I might be the one), say in C#, than anyone could have the same benefits of a BNLS server, but wouldn't have to rely on the servers being up. I am particularly concerned about the bad servers that seem to be out there.
I have found Java sources of JBLS somewhere, but are there sources for BNLS available? It would be hard, but doable work to translate the Java library and I am familiar with such work (again, see my previous work mentioned above). Would it be worth the effort with SC2 coming out in the near future?
Thanks.
May 3, 2009, 9:26 PM
Yegg
BNLS was never released as anything. Skywing and Yoni were the makers of it (unsure if anyone else was involved), and it's possible that a few other members ValhallaLegends (the clan, not the forum we're on) had a copy of it, thought I think some just had access to it, and not an actual file.

It would definitely be worth the effort to have an SC2 library for bots, I know for a fact that people would use it. If you were the first one to release such a library, a high volume of people would be rushing to use it. Though, if there were others out, it wouldn't happen that way.

I would take a look at MBNCSUtil - http://www.jinxbot.net/mbncsutil/html/N_MBNCSUtil.htm
It's made by MyndFyre, a member of VL and this forum. It seems to be very documented, it's open source IIRC. It's written in C#.
May 3, 2009, 9:32 PM
-MichaeL-
I've written a BNLS server in C#.net. You can find all the information on it here. Keep in mind it uses MyndFyre's MBNCSUtil so it should be a good example of how to use MBNCSUtil.
May 3, 2009, 9:57 PM
LX
I am VERY impressed with the quality of work by MyndFyre. Seldom have I seen such well documented code and of high standard. If only all programmers had such skills. And to find one in the gaming scene is just beyond me.
Anyway, I'll have a look around the library in a couple of weeks, as I am stomped with work till the end of May.
Thanks for the great pointer to the library.
May 3, 2009, 10:02 PM
LX
[quote author=-MichaeL- link=topic=17934.msg182581#msg182581 date=1241387820]
I've written a BNLS server in C#.net. You can find all the information on it here. Keep in mind it uses MyndFyre's MBNCSUtil so it should be a good example of how to use MBNCSUtil.
[/quote]

Thanks Michael. I'll also have a look at your code.
May 3, 2009, 10:03 PM
Yegg
[quote author=LX link=topic=17934.msg182582#msg182582 date=1241388145]
I am VERY impressed with the quality of work by MyndFyre. Seldom have I seen such well documented code and of high standard. If only all programmers had such skills. And to find one in the gaming scene is just beyond me.
Anyway, I'll have a look around the library in a couple of weeks, as I am stomped with work till the end of May.
Thanks for the great pointer to the library.
[/quote]

Many programmers have more skills than what most people get to ever see. MyndFyre is just one of the few people who actually puts true effort into the work he does. There are a few other very great Battle.net related third party softwares and libraries that are also very documented and maintained, just not many. Not that age makes the entire difference, but MyndFyre is also a little bit older than what seems to be most of the people involved in Battle.net development (though I think he's busy with other things lately) and often times someone who is older tends to put more effort into what they do and actually cares how things are put together.

I don't think MBNCSUtil supports warden (or, latest warden changes) but it has everything else in there.
May 3, 2009, 10:19 PM

Search