Version 2.0: AddOn Studio for World of Warcraft

Note: all features subject to change

1. Overview

AddOn Studio for World of Warcraft is a tool that enables World of Warcraft developers to easily build add-ons and serves as an example implementation of the Visual Studio Shell. Version 2.0 of AddOn Studio adds improvements in four key areas:
  • Improve support for existing addon developers
  • Improve WYSIWYG Visual Designers
  • Improve code editing and debugging experience
  • Greatly improve documentation and enable “live demo”

2. Requirements

2.1 Goals

  • The goals of the release are to address direct customer feedback on CodePlex.
  • To ensure code quality for community members to modify the IDE

2.2 Non-goals

  • Side-by-Side support with previous version of AddOn Studio.

3. Dependencies

  • SVN parsing/integration libraries (AnkhSVN)
  • Updated IntelliSense files from Warcraft programming book

4. Design

  • There are no major changes to the “core” of AddOn Studio for World of Warcraft, unless required for feature implementation

4.1 Add Unit Testing

Add unit testing to major existing features as well as to all new features in the application to ensure code quality. The primary reason for this is to avoid feature regressions as community members add or modify AddOn Studio.

4.2 Better support for existing AddOns

4.2.1 Import From File Wizard

As the name implies, the goal of this feature is to simplify the experience for customers who already have existing addons built on their hard drive.

Import From File Wizard Features and Steps
  • Select the directory for where the addon currently exists (folderbrowser control). The default should be to the \AddOns\ directory
    • Make a copy of all files and the folder structure to import. The existing folder should not be affected
  • Build a new project using the default AddOn name from the imported TOC file. If no TOC file exists, default to the NewProject name. Copy all files into the new project folder.

4.2.2 Import from Ace Wizard

As the name implies, this import wizard simplifies creating a project from the Ace2 SVN.

Import from Ace SVN Wizard: Features/Steps
  • Provide input boxes to point to SVN wizard (smart default location) and the user name/password combination
  • Show a treeview of projects available from the SVN root for them to select. I’m thinking this should copy all files (and file folders) in the projects

The state of the project will be copied locally, not officially a checkout, following the same conventions with Visual Studio.

4.2.3 Improve TOC Editor and Auto-generated TOC

  • Improve discovery of TOC Editor (New button, publish step?)
  • Enable users to manually control TOC editing
  • Enable visual reordering of items in load order and removing of items from TOC list. Need to think of how to do this visually as you want a master list of all possible files and be able to select items
  • Add an Auto-preview view that will show what the TOC file will look like
  • P3 - Add highlighting to show add/update/deletes to TOC file

4.2.4 Ace2 SVN Checkout

Similar to other source control systems, SVN will be integrated into Visual Studio to enable basic source control operations on files in the Solution Explorer. At its most basic, a user should be able to
  • Connect to a SVN system
  • Copy all files from the SVN
  • Check in new or updated files to SVN
  • Checkout files for projects with multiple developers

More advanced features like diffs, merges, etc will not be supported (note: unless we can get them for free from AnkhSVN)

4.3 Improve the FrameXML Visual Designer

4.3.1 Core Designer Improvements

Improve the core WYSIWYG designer. The designer should look as close to the real-time view as possible. There are a number of ways to improve this, not limited to the list below.

4.3.2 Blizzard AddOn Visualization Support

Improve the existing WYSIWYG designer by implementing a much more realistic real-time preview. Items should not be malformed, images should all load and it should provide a realistic-as-possible preview of the AddOn, including frame inheritance and blizzard frame styles.

4.3.3 Hidden/Visible Layers and panes

  • Enable a way to display UI visibility toggling
  • A “poor man’s” version of PhotoShop layers with the eye that turns on and off as many addons enable visible/non-visible frames.

4.3.4 Basic control binding WYSIWYG

  • Enable a developer to, at design time, see a list of tables they’ve declared and to bind values to list controls like the dropdown control

4.4 Improve Code Editing and Debugging experience

4.4.1 WowBench Function Emulator

Import the WowBench open source project, update the list of Wow functions and provide a GUI tool for testing functions (current tool is a console).

4.4.2 Lua Immediate Window

Add an Immediate Window for Lua functions by embedding the WowLua 5.1.1 compiler. A user will invoke this either by showing the immediate window, or by right clicking a selection of text and selecting “run” to send the currently selected code to the immediate window for execution.

4.4.3 Rename Refactoring

Enable the ability to rename variables, functions, and files. In terms of implementation, Search-and-Replace may be the easiest way to implement (note: if DOM loading not possible)

4.4.4 Update IntelliSense Service

  • Fix “self:” IntelliSense to show the correct variable context when using Lua OO concepts

4.4.5 Code Outline View

The Code Outline view is an implementation of the open source Code Outline Tool window that enables you to easily navigate source code by members (fields, functions, etc)

4.4.6 Add Ace3 File support

This is TBD based on when the schedule for Ace3 will release, but the work item would be to build a project template and documentation.

4.5 Documentation

4.5.1 Getting Started Page

To help beginners know how and where to start, the Getting Started page shows the tutorials and documentation available. Exact details

4.5.2 In-Game Samples Browser

The goal of the samples browser is to build a “meta” sample browser to showcase specific application building features. The application itself will be playable inside World of Warcraft with a simple list of all the sample available and the ability to load that sample.
  • Note: Many of these examples, in particular under the Wow functions section could simply use Ace3 libraries
4.5.2.1 Controls
  • Using default control templates
    • Ex: Inputbox template
  • Using an editbox control
  • Using a checkbutton control
  • Using a dropdown control
  • Using a FontString control
  • Using a GameTooltip control
  • Using a model control
  • Using a radiobutton control
  • Using a SimpleHtml control
  • Using a Slider control
  • Using a statusbar control
  • Using a ScrollingMessageFrame control
    • Working with items and item links
  • Using a texture control
4.5.2.2 Designing Frames
  • Different anchors, backdrops, edgefiles, layers
  • Inheriting different frame styles
  • Customizing Blizzard Frames
4.5.2.3 Lua basics
Ideally these examples would all work in the Immediate window (feature 5.3.2) as well
  • Working with strings (parsing/regex)
  • Working with tables
  • Logic constructs (if, while, looping)
  • Building and using multiple return value functions
  • Working with events
4.5.2.4 Wow Functions
  • Parsing combat log
  • Parsing slash commands
  • Using per user and per character saved variables
  • Building a timer
  • Exchanging information between AddOns
  • Exchanging information between other players
  • Designing for localization
4.5.2.5 Debugging Wow apps
  • Capturing Blizzard errors
    • Ex: Stack, error, line number, etc
  • Tracking memory usage/performance

5. Feature Decisions / Q&A

  • CodeDOM – Several of these features likely involve adding a full code DOM for navigation or code editing.
  • SVN Integration is being provided using an existing open source project. Due to the nature of the license (GPL), SVN integration will be in compiled library (DLL) form instead of in source code form.

X. Miscellaneous

X.1 Full list of work items addressed in this release

Last edited Jul 30, 2008 at 4:18 PM by danielfe, version 3

Comments

Davieboy53 May 18, 2008 at 6:37 PM 
AWESOME! I've noticed a few of the errors/issues that are being addressed in this version. Any approximate release date? No pressure just wondering.