Version 2.0: AddOn Studio for World of Warcraft
Note: all features subject to change
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”
- The goals of the release are to address direct customer feedback on CodePlex.
- To ensure code quality for community members to modify the IDE
- Side-by-Side support with previous version of AddOn Studio.
- SVN parsing/integration libraries (AnkhSVN)
- Updated IntelliSense files from Warcraft programming book
- 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.
- Show designer support for frame borders, styles, (edgefile and bgFile) and backdrop files including a browser to show the different files.
- Add WYSIWYG support for font styles
- Improve WYSIWYG support for Toolbox controls
- Fix so that manual changes to the FrameXML file are not changed.
- Automatically rename script file when it’s associated FrameXML file is renamed
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
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
- Update service to include statement completion for Lua 5.1.1 Wow-supported functions.
- The team developing the World of Warcraft Programming book has promised to provide an update for Warcraft functions and parameters.
- Add IntelliSense support for locals and custom functions
- Correct IntelliSense to show variables in the correct scope.
- 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.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
- Note: Many of these examples, in particular under the Wow functions section could simply use Ace3 libraries
- Using default control templates
- 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
220.127.116.11 Designing Frames
- Different anchors, backdrops, edgefiles, layers
- Inheriting different frame styles
- Customizing Blizzard Frames
18.104.22.168 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
22.214.171.124 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
126.96.36.199 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.1 Full list of work items addressed in this release