Author Topic: About UOAI  (Read 31872 times)

0 Members and 1 Guest are viewing this topic.

Offline ArtaxerxesTopic starter

  • Moderator
  • *****
  • Posts: 27
  • Activity:
    0%
  • Reputation Power: 0
  • Artaxerxes has no influence.
  • Gender: Male
  • Respect: +18
  • Referrals: 0
    • View Profile
    • UOAI
About UOAI
« on: September 20, 2009, 03:35:21 AM »
+1
Summary

UOAI is a library exposing UO 2D client functionality in an object oriented way. It allows you to perform things like reading information from running UO Clients and perform actions on them. All information comes in object oriented form: clients are client objects, items are item objects, gumps are gump objects, etc. The library is not written as a simple dynamic link library, but instead comes in two flavors: as an ActiveX component library and a .NET library. The choice for a COM/ActiveX library results in easy usage from multiple languages on a windows platform, including java, lua, visual basic, java, javascript, vbscript, etc .
It's important to realize that UOAI is still actively being developped, though I'm hoping to reach stable versions of both the COM and .NET libraries soon.

History

On the runuo forums i was was asked several times why UOAI involves "AI" in it's name, while it does not actually involve any Artificial Intelligence in it's current form. The correct answer to this question requires looking back to UOAIs history, and I thought it might be interesting to post this history over here too.

Though my feeling with the easyuo community has changed now, UOAI does date back to that community, more specifically to a pathfinder project i started writing over there. My posts on this messy project seem to be still there on the euo forums: http://www.easyuo.com/forum/viewtopic.php?t=15777!

The idea, back then, was to write a more powerfull minerbot by using a pathfinder algorithm. I wanted to add the following 2 capabilities to my minerbot:
  • Being able to automatically find it's way in between different locations (bank/house, mine, forge, ...) without the need of pre-configured or recorded routes.
  • Being able to automatically find the next 8x8 block of mineable tiles (chopable trees for a lumberjack would be equivalent) that hasn't been depleted yet. (with some timeout to readd blocks once they are respawned).

At that time this seemed rather hard to accomplish goals within easyuo, so i decided to write an external program with which i could communicate from within my easyuoscript. The program implemented a A* pathfinding algorithm on top of the UO map-files that could also do things like finding mineable tiles, etc.

The first idea towards UOAI was grown out of the limitations of this pathfinder application. The main problem with the pathfinder was that calculated paths could not take into account items or multis that might block the road while walking the path. Even though i could recalculate paths to find a path around items, that was harder for multis, since easyuo didn't provide any info on the size of multis, so there was no way of knowing which tiles the multi blocked.

To obtain that info, I decided to start a new project (never published online though as it was never finished), which watched the packetstream (it acted as a proxy between the client and the server) and therefore was able to obtain all info on locations and sizes of items, mobiles and multis itself without interacting with easyuo. The idea was to implement a set of AI functions on top of this information: the pathfinder described above, now with correct recalculation of paths around multis; but also other AI things like a decission maker, which would heuristically choose the next action to take in a fight in UO (mainly targetting an automated dexxer, though the same algorithm could be used for an automated mage too)... so real AI things... which is why I named this project: UOAI. The project never got to he point of actual functional AI, for one because it's design was flawed at some points, but also simply cause I still lacked some required experience to write it.

Years later I started reading the announcements on the OpenEUO project, which however seemed to take forever to be actually implemented. It is at that time, being facinated by the OpenEUO idea, that I ventured into restarting my old UOAI project, since I felt I was more experienced now and could do a better job than before (it's up to you to be the judge of that ;)). I decided to rewrite it from scratch and redesign it: I would no longer depend on a completely packet-based approach, but would leave already implemented functionality in the client to the client; and I would expose everything as COM/ActiveX interfaces, since I had learned from other projects that this was a much more powerfull, yet easy to use, method to expose functionality than simple dll based APIs. The idea was still to eventually implement the kind of AI functionality I described in the previous paragraph on top of this library, so the name UOAI remained suitable!

Current Status

Even though usable and relatively stable, UOAI is still in development and therefore has a set of issues that might be considered serious depending on the application you have in mind. Since UOAI also provides hooks of the client's packet stream most issues can be worked around in packet based approach, however since the idea is to provide a simple interface to the client, I intend to provide easier alternatives for anything you can do packet based.

UOAI currently comes in two flavors: the COM library and the .NET library wrapping up the COM libraries' functionality.

It turns out however that most users prefer using UOAI from .NET languages; and it's also a fact that .NET code is easier to manage than a COM library written in C, and therefore I recently decided to split both project: the .NET library will be turned into a seperate project, no longer wrapping the COM library.

UOAI is intended to be open-source, but managing an open-source project is a lot of work, and I haven't found the time yet to provide and manage all the communication channels required to get multiple developers involved. This will change once the next UOAI.NET library has arrived, the first step: providing code through an SVN repository, has recently been taken.

UOAI currently lacks acceptable documentation. After the next .NET library is finished, I will work on this though.

Future

The near future of UOAI lies in it's next .NET libary: this will be a library completely decoupled from the COM library and will have several advantages over previous versions:
  • Easier to manage: I will focus a great deal on providing all details on both using this next version for applications and on documenting it's internals! Written in C# the code itself should already be more manageable and as all code will now be managed through an SVN repository: any C# developer could potentially contribute.
  • More stable and efficient: That might sound like big words, but my insight in most issues with the current UOAI versions has grown, and the next library version will solve all of these issues: faster searching of items, easier usage of gumps, seperately managed and more stable callibration-routines that are fundamental to stability, decoupling of the COM-library which has been the source of many problems due to the complexity of low-level COM-code, etc...
  • Well documented: once the first stable version is finished (a matter of (a) week(s)), i will focus on writing several applications on top of it and providing extensive documentation.
  • Extra functionality: special classes to ease the use of handling specific gump types; options to create/show/hide custom items and gumps on the client, classes to wrap up packethandling: parsing or building of known packets will be done for you!; some AI functionality such as pathfinding; access to the client's mul-files; ...

As the this .NET version of UOAI currently being designed will be more stable and useable from the start, further development will be slow and consist mainly of additions of non-essential functionality and maintaince of client-support.
Client-support will be maintained by me: I am moving all callibration-code into a seperate tool; both the COM and .NET library will obtain version-dependent info from an xml configuration file generated by this callibration tool in the future. My work will mainly consist of maintaining and updating this callibration tool.
Extra functionality in the .NET library can be contributed by anyone (which will still include me at first, but i'll move on to other projects later on).

The far future of UOAI, for my part, will therefore mainly involve the COM library:
  • It will be rewritten from scratch to provide the same stability and to solve the same issues as i am currently solving in the .NET library.
  • It will be rewritten to allow for web-usage: it is currently not a real 'activex' library in the sense that you can not load it on websites. The final COM library will be provided as a signed activex control which can be used directly from websites (if installed) : this will f.e. allow the site of a free shard to provide a webform that automatically launches your UO Client and connects it to this free shard when submitted. The idea is to open up a lot of extra potential applications for UOAI.
« Last Edit: September 20, 2009, 03:45:58 AM by Artaxerxes »
Developer at www.UOAI.be

Offline ArtaxerxesTopic starter

  • Moderator
  • *****
  • Posts: 27
  • Activity:
    0%
  • Reputation Power: 0
  • Artaxerxes has no influence.
  • Gender: Male
  • Respect: +18
  • Referrals: 0
    • View Profile
    • UOAI
Re: About UOAI
« Reply #1 on: January 17, 2010, 08:59:19 AM »
+1
After some months of inactivity; UOAI was now patched for the most recent client version (v7.0.4.4).

I'll make sure to post about any future developments in this thread.

Greetz,
Artaxerxes
Developer at www.UOAI.be

Offline ArtaxerxesTopic starter

  • Moderator
  • *****
  • Posts: 27
  • Activity:
    0%
  • Reputation Power: 0
  • Artaxerxes has no influence.
  • Gender: Male
  • Respect: +18
  • Referrals: 0
    • View Profile
    • UOAI
Re: About UOAI
« Reply #2 on: February 08, 2010, 02:50:38 PM »
-1
Update: we're currently working hard on getting UOAI2 online... an alpha version will be launched within the next few days.

UOAI2 is a completely .NET based version of UOAI, that rebuilds a lot of functionality packet-based to achieve greater speed. A lot of credit for large parts of the development of UOAI2 go to megamandos.

UOAI2 is based on top of another new library : UOAI Basic, which implements all 'basic' functionality of UOAI (injection, packet hooks, callibration of known functions and offsets, etc.). UOAI Basic will still be exposed to COM, even though it is written in .NET.

Right now a pre-alpha of UOAI2 is available but it's waiting for me to finish a first version of UOAI Basic before we can move on to the UOAI2 alpha. A complete UOAI Basic version with COM Interop support will be launched later.

The main advantages of UOAI2 will be speed and flexibility, compared to the previous COM library.
The main advantages of UOAI Basic will be stability and faster updates : UOAI Basic will practically always be up-to-date for the latest client and there are no longer any crashes associated with UOAI... if we can't callibrate some features, user apps can still use all other features. A great deal of time has been spent on correct error-handling in the midst of the more complicated low-level code.


This is all slightly preliminary info... since UOAI2 at this point is still based on an old version of UOAI's injected dll... but as soon as UOAI Basic is finished you should check out UOAI2! ;)

Find all info and updates at our new home: www.developuo.com (www.uoai.be is now forwarded there).

Greetz,
Artaxerxes
« Last Edit: February 08, 2010, 02:54:52 PM by Artaxerxes »
Developer at www.UOAI.be

Offline TrailMyx

  • Officially retired from UO
  • Administrator
  • *
  • *
  • Posts: 13310
  • Activity:
    0%
  • Reputation Power: 154
  • TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!
  • Gender: Male
  • Viper!
  • Respect: +3089
  • Referrals: 34
    • View Profile
    • ScriptUO
Re: About UOAI
« Reply #3 on: March 17, 2010, 10:35:49 AM »
-1
Sounds great; I always keep tabs on your project.  Are you still going to remain involved in the development?  I just hope that much of the test code remains C#.  I really do hate VBasic.  ;)
Please read the ScriptUO site RULES
Come play RIFT with me!

Offline ArtaxerxesTopic starter

  • Moderator
  • *****
  • Posts: 27
  • Activity:
    0%
  • Reputation Power: 0
  • Artaxerxes has no influence.
  • Gender: Male
  • Respect: +18
  • Referrals: 0
    • View Profile
    • UOAI
Re: About UOAI
« Reply #4 on: July 17, 2010, 01:58:08 PM »
-1
17th of July 2010

Currently UOAI is a little bit of a messy project; too many new paths have been taken before previous parts were finished. I therefore have decided to simplify things: i will implement first of all a simple dll written in C implementing all essential functionality. COM and .NET support can then be provided by referencing this C library. Right now, however i lack the time to do any serious work, so for now UOAI will remain silent, I can only apologize for that.

Even though i just admitted that i started on new ideas before finishing previous ones, there is one new idea i'm going to work on anyway: a mobile UO Client. After buying myself an android phone i wondered whether it would be realistic to implement an ultima online client for android phones. Currently, a few week later, after reading a lot about Android development, i came to the conclusion that a project to develop a mobile ultima online client would actually not be as hard as it might sound. The project i have in mind right now (which i call "UOMobile" for now, though a suitable name is open for discussion) is essentially the development of a java based ultima online client that will be distributed in two flavors: an android version and an applet version. The applet version will also include some php or asp script to add facebook-integration (basically this means simply coupling server+credentials to your facebook credentials). The challenge of this project is mostly getting the content (Ultima Online has over a gigabyte of art, animations and gumps as content) to mobile devices, but i'm working on that. As soon as i get any first version online, i'll let all of you know!

So in summary: i will continue on UOAI, focussing more on the basics, but not until i find enough time. For now i will be working on a mobile Ultima Online Client (Android client + applet version with facebook integration), as this is the kind of project i can work on irregulary, when i find a few hours of time... this does however mean that both projects will (continue) to move on slowly!


Regards,
Artaxerxes
Developer at www.UOAI.be

Offline TrailMyx

  • Officially retired from UO
  • Administrator
  • *
  • *
  • Posts: 13310
  • Activity:
    0%
  • Reputation Power: 154
  • TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!
  • Gender: Male
  • Viper!
  • Respect: +3089
  • Referrals: 34
    • View Profile
    • ScriptUO
Re: About UOAI
« Reply #5 on: July 17, 2010, 02:57:05 PM »
+1
Glad to see you back!  I've been taking a bit of a break myself.
Please read the ScriptUO site RULES
Come play RIFT with me!

Offline ArtaxerxesTopic starter

  • Moderator
  • *****
  • Posts: 27
  • Activity:
    0%
  • Reputation Power: 0
  • Artaxerxes has no influence.
  • Gender: Male
  • Respect: +18
  • Referrals: 0
    • View Profile
    • UOAI
Re: About UOAI
« Reply #6 on: July 17, 2010, 03:08:14 PM »
+1
Glad to see you back!  I've been taking a bit of a break myself.

I guess taking breaks is a prerogative for anyone involved in UO these days? :)
Anyway... i'm getting into the spirit of UO again, so expect some news! :)
Developer at www.UOAI.be

Offline TrailMyx

  • Officially retired from UO
  • Administrator
  • *
  • *
  • Posts: 13310
  • Activity:
    0%
  • Reputation Power: 154
  • TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!
  • Gender: Male
  • Viper!
  • Respect: +3089
  • Referrals: 34
    • View Profile
    • ScriptUO
Re: About UOAI
« Reply #7 on: July 23, 2010, 10:19:54 AM »
+1
Are you still merged with the DevelopUO effort?
Please read the ScriptUO site RULES
Come play RIFT with me!

Offline ArtaxerxesTopic starter

  • Moderator
  • *****
  • Posts: 27
  • Activity:
    0%
  • Reputation Power: 0
  • Artaxerxes has no influence.
  • Gender: Male
  • Respect: +18
  • Referrals: 0
    • View Profile
    • UOAI
Re: About UOAI
« Reply #8 on: November 02, 2011, 04:40:39 AM »
+1
I've been kinda out of the UO scene for a while. The idea behind the move to developuo was to get other people involved, as my time for UOAI was too limited to maintain the project, but that didn't work out as expected.

So at this point UOAI has been more or less death for around a year now; however I will be looking into reviving UOAI in the next 5 days. I'm currently looking into what can/cannot be done and hope to find a way to get a more manageable version of UOAI running soon.

Regards,
Artaxerxes
Developer at www.UOAI.be

Offline TrailMyx

  • Officially retired from UO
  • Administrator
  • *
  • *
  • Posts: 13310
  • Activity:
    0%
  • Reputation Power: 154
  • TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!
  • Gender: Male
  • Viper!
  • Respect: +3089
  • Referrals: 34
    • View Profile
    • ScriptUO
Re: About UOAI
« Reply #9 on: November 02, 2011, 07:01:37 AM »
+1
That's great news!  Hopefully we can help you polish your project.  I've been dying to start scripting again in something other than EUO.  OEUO just didn't do it for me; I love UIs too much and that part has been unfinished for over a year now.  With Forms, C# is a perfect way to interact with the user and the client.
Please read the ScriptUO site RULES
Come play RIFT with me!

Offline ArtaxerxesTopic starter

  • Moderator
  • *****
  • Posts: 27
  • Activity:
    0%
  • Reputation Power: 0
  • Artaxerxes has no influence.
  • Gender: Male
  • Respect: +18
  • Referrals: 0
    • View Profile
    • UOAI
Re: About UOAI
« Reply #10 on: November 12, 2011, 06:04:19 AM »
+1
For those interested, I reset the UOAI forums at http://www.decelle.be/UOAI/forum and I will post intermediate updates and development releases there while the next UOAI version is in development. For now there is nothing interesting there yet though ;).

-- Artaxerxes
Developer at www.UOAI.be

Offline TrailMyx

  • Officially retired from UO
  • Administrator
  • *
  • *
  • Posts: 13310
  • Activity:
    0%
  • Reputation Power: 154
  • TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!TrailMyx is awe-inspiring!
  • Gender: Male
  • Viper!
  • Respect: +3089
  • Referrals: 34
    • View Profile
    • ScriptUO
Re: About UOAI
« Reply #11 on: December 16, 2011, 07:19:41 AM »
+1
I'm really looking forward to seeing this project take off.  Since nothing is really happening with EUO or OEUO, it will be nice to see something else come around that can be a viable alternative.

Plus I'm looking to get back into C# coding.  My skillz are getting soft.
Please read the ScriptUO site RULES
Come play RIFT with me!

Tags: