My favorites | Sign in
Project Home Downloads Wiki Issues Source
Search
for
SolutionOverview  
A brief overview of the parts of the UOFAP solution for developers.
Updated Jan 16, 2008 by mumblyju...@gmail.com

Introduction

The UOFAP solution is made from several programs and libraries, which will be briefly summarized here with links to more detailed information.

We use the terminology common to Visual Studio to make life easier, as it is the environment used to develop the solution. This means that UOFAP as a whole is called a solution, and all of the parts that make up UOFAP are called projects, such as FapClient.

The solution is split into so many well defined projects to allow easy development, the details are not necessarily important to the end user.

It is recommended that development take place in Visual C# 2008 Express, as it is free and supports the .NET Framework 3.5.

The Main Projects

FapClient (FapClient.exe)

This is the actual program to be run to use UOFAP. The general concept is to keep this application as simple as possible, mostly user interface code, where every item of any real use is seperated into plug-ins.

When loaded, UOfap.exe shows virtually nothing until plug-ins are loaded. Technically there is no reason UOFAP can only be used with UO, we could have created it to to be extensible to any game due to virtually everything being a plug-in and having a high level of abstraction, however we are keeping it to just UO through first party plug-ins for the moment.

FapServer (FapServer.exe)

A server for the UOFAP system.

FapServer can also load the same plug-ins that FapClient can load, and if those plug-ins are designed to communicate with other people using the same plug-in, it will facilitate this.

This allows the person running the server to allow (or disallow) the use of certain communicating plug-ins.

FapTestBed (FapTestBed.exe)

This program is a simple set of automated tests for the classes in the project, mostly used to test changes during development it will also test all plug-ins for certain features to assist developers.

Plugin (Plugin.dll)

This is the library containing the UOFAP.Plugin class, which all plug-ins inherit from, and which has a number of useful static methods for interaction with the program and other plug-ins.

The Supplied Plug-Ins

The below plug-ins are supplied by default with UOFAP and hence count as UOFAP projects. However, there is something important to note - they can be replaced.

For example, the UOFAP.Mapping class inherits from UOFAP.BaseMapping, an abstract class which has all the methods and properties that the chat plug-in will ever interact with. Due to this, a better third party mapping tool may be made available and be used instead of our mapping tool, and still work with our chatting tool, as long as it inherits from UOFAP.BaseMapping. Naturally this allows you to write a plug-in that interacts with the map and you can assume fairly safely that it will work with our mapping tool or any third party mapping tools.

Plug-ins have the ability to say what other types of plug-ins they rely on. For example the mapping plug-in will say it relies on a UPFAP.BaseSettings plug-in, and a plug-in of that type must be loaded first. Plug-ins can also choose to use other plug-ins if they are loaded and not if they are not, such as chatting relies on settings but will only use mapping if it is loaded.

UOClient (UOClient.dll)

The default plug-in for gaining information from the UO client. Virtually every plug-in will rely on this obviously. As with other plug-ins it can be replaced with a third party version, for example someone may wish to write a new plug-in that inherits from base class UOFAP.BaseUOClient to work with a version of the UO client we do not yet support.

Basically this is a plug-in to interact with the UO client. Similar in many ways to the Ultima.dll used by the RunUO programs, though we intend our code to only have the ability to read information from the client.

We only read information from the already loaded client, it will not modify the clients memory, and the information that it will retrieve is restricted to a set of values we have decided are useful (and will commonly expand as needed), and it may not be able to read all values from all versions of the client (plug-is can discover if a feature is available programatically).

Information is not gained through packet capture as it is with other programs, so not all information will be available through UOFAP for plug-ins.

Settings (Settings.dll)

The default plug-in for saving settings easily and reloading them. Virtually all plug-ins will rely on this, so it really has to be loaded first.

Networking (Networking.dll)

A simple plug-in that other plug-ins and the server can use for communication. The concept is to abstract the communication to a plug-in, and if people wish to write a more efficient networking plug-in or one that works on different concepts they may, and other plug-ins that use networking can still operate.

Once again, this will probably be relied upon by most plug-ins, and the same networking plug-in must be used by FapClient and FapServer for them to be able to work together.

Mapping (Mapping.dll)

The mapping plug-in.

Chatting (Chatting.dll)

The chatting plug-in.


Sign in to add a comment
Powered by Google Project Hosting