Author Topic: BN# Community Technology Preview - a Library for Battle.net Development  (Read 3604 times)

0 Members and 1 Guest are viewing this topic.

Offline MyndFyre

  • Boticulator Extraordinaire
  • x86
  • Hero Member
  • *****
  • Posts: 4540
  • The wait is over.
    • View Profile
    • JinxBot :: the evolution in boticulation
This evening I posted a technology preview of BN# (that's "BN-Sharp"), a new utility library I've been working on that manages Battle.net connections.  Most of the gruntwork is done for you in a core that manages a client connection based on a settings object; all you have to do is handle events as you see fit.  BN# includes MBNCSUtil out of the box, and although some might try to compare BN# to CleanSlateBot and others, there are several important features to consider.

1.) I've done quite a bit of work optimizing the multithreaded core; under the hood, it supports the ability to prioritize packet handling order based on ID.  So, it could be configured to be an effective channel protection client, for example.
2.) The event system is also multithreaded and priority-based.  Although you can use standard .NET syntax for handling events, it also supports a callback version.  Standard .NET event registration handles events at Normal priority.  So even with a graphical client, it can still be an effective moderation core.
3.) BN# doesn't support a drag-and-drop architecture; users need to be able to implement some objects on their own.
4.) BN# is fully object-oriented, which means that the connection class can be subclassed to modify behavior.
5.) BN# is (read: will be once posted) open-source under a BSD-style license and will be hosted on Google Code.
6.) BN# manages memory by pooling and reusing memory for packets, saving approximately 50% of total memory usage over previous editions of JinxBot and helping to prevent heap fragmentation.

The build has been posted here: BN# Community Technology Preview -- be sure to check out the Wiki page and the documentation which is available at BN# - Table of Contents.
I have a programming folder, and I have nothing of value there

Running with Code has a new home!

Our species really annoys me.

Offline MyndFyre

  • Boticulator Extraordinaire
  • x86
  • Hero Member
  • *****
  • Posts: 4540
  • The wait is over.
    • View Profile
    • JinxBot :: the evolution in boticulation
BN# hits another milestone release today!  In today's release I added:
-- The ability to add custom packet handlers.  See the wiki article.
-- The ability to handle Warden.  See the wiki article.
-- Some clan support.  See the BNSharp.BattleNet.Clans namespace for more information.
-- High-level objects for Battle.net, including the Product class, which has information about clients; stats parsing for Warcraft III, Starcraft/War2BNE/Diablo, and Diablo II.
-- I can't remember if this was in the last release: BNI parsing support as part of MBNCSUtil.
-- Imported it into Google Code!  BN#, JinxBot, and the JinxBot Controls library are released under the modified BSD license.  As soon as I can figure out how to make MBNCSUtil share source code with BN#, that'll be available as well.  Check out our Google Code page.

Known issues:
-- Yes, I know that Friends events aren't there and not all clan packets work.
-- The Disconnect event would sometimes be fired twice.  I attempted to fix it but I'm not sure I tracked it down.

I welcome your feedback.  Please keep it on my forum there, though, or on the gcode issues tracker.  Thanks!!
I have a programming folder, and I have nothing of value there

Running with Code has a new home!

Our species really annoys me.

Offline Chriso

  • Newbie
  • *
  • Posts: 2
    • View Profile
Sweet custom packet handlers, very very nice :)