FrameXML support in AddOn Studio for World of Warcraft v2
16 May, 2008 12:11 AM, RGabo,
1 komment
Kategóriák:
AddOn Studio
Címkék:
addon
,
designer
,
forms
,
FrameXML
,
serialization
,
studio
,
windows
,
xml
After the first release of AddOn Studio for World of Warcraft in last December (and a subsequent minor release in January), ideas were immediately flying around how to improve the overall experience of seasoned AddOn developers and those who were just starting to get their feet wet with customizing their World of Warcraft interface. Add to that the feedback that was posted to the Codeplex site and the forum threads that were praising AddOn Studio while pointing out some of its shortcomings and the plan for a v2 was born that Dan Fernandez - the man behind the idea of AddOn Studio - just posted about today.
One of the main areas where AddOn Studio could definitely improve was the FrameXML designer experience. V1 allowed addon developers to put together simple user interfaces by simply dragging an dropping buttons, fontstrings and other visual elements onto the design surface and then writing some Lua code to implement their behavior, FrameXML ninjas were understandably missing features like true support for the built-in virtual frames that you can inherit from, BLP texture support, font support and an overall WYSIWYG experience that didn't require them to fire up WoW or type /script ReloadUI() every time they made some small change and hoped the FrameXML was still valid and showed up.
With its upcoming release, AddOn Studio v2 will have a much better support for FrameXML files that was designed with the single goal of trying to resemble World of Warcraft as possible from the ground up.
The FrameXML support will have the following features (all subject to change):
- Support for MPQ archives, BLP and TGA textures and fonts
- Loading of resources from the MPQ files as well as the filesystem
- Loading and saving of FrameXML files (optionally with validation)
- Full inheritance support (virtual="true", inherits="...") for any FrameXML, including the built-in ones (GameFontNormal, DialogBoxFrame, UIPanelCloseButton, etc.)
- Complete FrameXML layout engine (Anchors, relativeto, explicit and implicit sizes, AbsDimension, RelDimension)
- WoW naming support for $parent (including inherited controls named using $parent)
- Design-time rendering of WoW visual elements, including Texture, FontString as well as high-level elements such as Button, CheckButton, Frame Backdrop), adhering to correct order (Framestrata, Framelevel and layer ordering)
- Toolbox items for all elements and property grid support for all attributes
- ... :)
Our team at EPAM is now working on finishing up the design-time experience to be as smooth as possible. While we're working on this, I'll be posting some technical details on how the FrameXML support was implemented. While our primary goal was to support the best FrameXML designer experience with it, it could certainly be used for working with FrameXML outside AddOn Studio. Stay tuned!
AddOn Studio for World of Warcraft goes public!
15 December, 2007 08:04 PM, RGabo,
még nincsenek kommentek
Kategóriák:
AddOn Studio
Címkék:
addon
,
daniel
,
fernandez
,
for
,
of
,
studio
,
warcraft
,
world
AddOn Studio for World of Warcraft has been released to CodePlex yesterday and it is available for download!
I worked on this project for the past couple months and I'm very excited to see it go public and see people interested in it. I can't wait to hear your feedback over at the project's CodePlex page.
Dan has an exhaustive post full of screenshots that can give you a basic idea of what AddOn Studio is and he also uploaded part of the TechEd 2007 Keynote (presented by Soma) where he demonstrates it in action. Both are a fun read/watch so I recommend heading over to his blog. You can watch the video here. I especially love the Jackass intro (which is Minutemen - Corona) in the beginning, at first I thought I was watching the wrong video ;)
I worked out the overall architecture of AddOn Studio and implemented the Lua language service that gives you word completion, member completion and method tips. My next blog post will go into detail about the language service. If words like lexer, parser, parser generation, abstract syntax tree make you interested, make sure you subscribe to my RSS feed or check back in a few days!
Make sure you digg Dan's post if we got you excited:
Long weekend in London
10 December, 2007 02:29 PM, RGabo,
még nincsenek kommentek
Címkék:
blue
,
clayton
,
dave
,
dinner
,
geek
,
london
,
monster
,
robert
,
scoble
,
sifry
,
steve
,
winer
What a great couple of days in London! The highlight of the four days I spent in London was Friday night's geek dinner with such luminaries as Scoble, Dave Sifry, Dave Winer and Steve Clayton, among others. It was great to meet some of our peers as well and be surrounded by really smart and fun people (may I mention the Resolver team ;)
There was a photowalk after we left the pub where the guys took some amazing shots. Check them out on Flickr: Dave's photos, Tim Watt's photos, Steve Clayton's photos
Steve also included a photo of my MacBook with the infamous Blue Monster as the wallpaper:
As much as he was shocked to see it, I know quite a few Microsoft enthusiasts and .NET developers who use Apple hardware daily (and I'm not talking about iPods ;)
Parallel FX & Silverlight 1.1 Tools Alpha for VS2008 RTM
30 November, 2007 09:50 AM, RGabo,
még nincsenek kommentek
Címkék:
2008
,
duffy
,
fx
,
guthrie
,
joe
,
parallel
,
scott
,
silverlight
,
studio
,
visual
I'm delighted to see that the first CTP of Parallel Extensions (a.k.a Parallel FX) is out. Check Joe Duffy's post for the details, I have been waiting for this for some time now! Also in the news is that Silverlight 1.1 (which will be named Silverlight 2.0, what a surprise) Tools Alpha has been refreshed for Visual Studio 2008 RTM. Scott Guthrie has the details (well, he always does). Certain proof of that is he also announced ASP.NET 3.5 Extensions which will be release next week. This will mark the first public release of the ASP.NET MVC Framework.
Now only if we could get that ADO.NET Entity Framework refreshed for VS2008 RTM.. Pablo? :)
London Geek Dinner, December 7
30 November, 2007 09:17 AM, RGabo,
még nincsenek kommentek
Címkék:
clayton
,
dave
,
dinner
,
geek
,
hugh
,
london
,
macleod
,
photowalk
,
robert
,
scoble
,
steve
,
winer
The usual suspects of the geek celebrity community are all showing up in London next Friday and for the occasion, Hugh Macleod is hosting a geek dinner in Soho, Robert Scoble, Dave Winer and Steve Clayton will all be there. Dinner starts at 7pm, but unfortunately there's only room for 50 people or so.. You can still join the Photowalk around London at 9:30pm.
The details:
The Coach & Horses
29 Greek Street,
Soho
London, W1V 5LL, UK
7.00pm
(Google Maps)
See you there!
Visual Studio 2008 RTM - A new era (again)
22 November, 2007 01:13 PM, RGabo,
még nincsenek kommentek
Kategóriák:
.NET
,
LINQ
Címkék:
2008
,
abrams
,
brad
,
entities
,
framework
,
guthrie
,
linq
,
mvc
,
RTM
,
scott
,
soma
,
somasegar
,
sql
,
studio
,
to
,
visual
Unless you were living under a rock, you are happy to know that Visual Studio 2008 RTMed. You can read what our beloved prominent bloggers have to say about this release:
- Soma: Visual Studio 2008 and .NET Framework 3.5 shipped!
- Scott Guthrie: Visual Studio 2008 and .NET 3.5 Released
- Brad Abrams: VS 2008 and .NET Framework 3.5 RTM
Brad's another post is worth mentioning: The ASP.NET AJAX Toolkit has been refreshed for Visual Studio 2008. Check it out here.
As for myself, I am extremely excited about this release. I have been working with the public Beta2 drop since its release and recently used RC drops for one of our projects. VS2008 being RTM means that:
- LINQ to X and LINQ to SQL in particular RTM'ed. It's there for all projects.
- I have an RTM C# 3.0 compiler that I can work with.
- I can soon press F11 and trace into .NET Framework code as well as examine the call stack with source and MSFT comments. (this is HUGE)
- and much much more...
Probably these three are what excite me the most and will undoubtedly change the way I (and my peers) will work on upcoming projects. I am expecting a rapid adoption of Visual Studio 2008 and .NET Framework 3.5 for a multitude of reasons:
- The CLR is still the same 2.0 CLR that is under .NET FW 2.0 and 3.0.
- Visual Studio 2008 can multitarget .NET FW 2.0, 3.0 or 3.5
- C# 3.0 features one-by-one and LINQ to X are typical examples of 'how could I live without these before?'.
There are two things that I think should be also included in this post when I think of the next few years of the MSFT .NET platform offerings:
- ADO.NET Entity Framework (LINQ to Entities)
- ASP.NET MVC Framework (One of those few products the Scott builds for Microsoft)
I think both technologies are particularly powerful when it fits the type of project you want to apply it to. The Entity FW will be the standard for any mid-sized or bigger project where having a conceptual model is useful and/or you want Astoria services (ADO.NET Data Services is the official name, I think) running on top of it. For smaller projects, the one-to-one mapping of LINQ to SQL will be sufficient. Let's not also forget that LINQ to SQL is RTM today and we still have to wait for the Entity FW a couple of months.
The MVC Framework is particularly interesting whenever you were drooling over Ruby on Rails and hoped .NET would have something similar. I love the extensibility and pluggability of the platform. Let's not also forget that the loosely coupled architecture and contract-driven design allows for great test-first and controller-first scenarios and the separation of concerns is something that should be included in the United States Consistution or at least the Bill of Rights.
Back from TechEd, back in Budapest
10 November, 2007 01:07 PM, RGabo,
még nincsenek kommentek
Kategóriák:
TechEd-Developers
Címkék:
budapest
,
keynote
,
teched
,
TechEd Developers
Yo, I'm back from Barcelona. Arrived last night, immediately after dropping my stuff at my crib (still not unpacked ;), went out with my friend to celebrate my return after the extremely long hiatus from the budapest party scene ;)
I am still coming through coverage of the keynote / TechEd that haven't seen, here are a few of them worth mentioning:
- http://news.yahoo.com/s/infoworld/20071107/tc_infoworld/93183
- http://www.infoworld.com/article/07/11/06/World-of-Warcraft-meet-Visual-Studio_1.html
- http://www.lowendahl.net/showShout.aspx?id=167
- http://blizzplanet.com/news/1818/
..and somebody who actually tries to correct the big newsportals, although I think a WYSIWYG FrameXML editor, decent Intellisense support for Lua and whole other bunch of stuff will improve your Notepad++ experience ;)
There's also some activity in WoW forums:
- http://wow.incgamers.com/forums/showthread.php?p=4059378
- http://forums.wow-europe.com/thread.html?topicId=1511962697&sid=1
Of course, there is a lot of confusion as to whether WoW was running in Visual Studio (no), was this only just support for the Lua language (not) or is this an environment where you can do end-to-end addon development from FrameXML to Lua (yes). I ommitted the coverage of the InfoWorld article as that spans couple Google pages ;)
LINQ to X: Take Two
08 November, 2007 06:45 PM, RGabo,
még nincsenek kommentek
Kategóriák:
TechEd-Developers
Címkék:
bolognese
,
castro
,
elisa
,
flasko
,
linq
,
luca
,
mike
,
pablo
,
taulty
,
teched
,
TechEd Developers
After James Lau's Visual Studio Shell session, I ended up attending the LINQ to X interactive session again, full of interesting questions. One particular subject came up which actually made both Pablo and Mike thinking:
Would it make sense to be able to query sub-object graphs stored in XML columns using LINQ to SQL or LINQ to Entities?
For instance, if you have a Product table that has a single XML column called Other but that XML column contains an object graph, would it make sense to do:
var q = from p in Context.Products select p;
where the Product class wouldn't just have an XDocument or XElement property calledOther but it would actually be of type class Other and would represent an object graph, deserialized from the XML contained in the column.
One concern that is a fair point that has been made during the session was that conversions while the objects are streaming from the database to the upper layer should never fail. This is the reason why System.Boolean cannot be mapped to an int column in a database, for instance. Now any XML deserialization could easily fail, except if you have an XSD that enforces the very same object model on the DB side that you have on your CLR side. This is something that the Entity Framework cannot validate or in any way assume.
So today, you can use that XElement to traverse the XML fragment, use System.Xml.XPath and its extension methods to query using XPath but its still an interesting thing. I'll whip up a proof of concept in the next few days and try to find a real-world scenario where this might come handy in the mean time ;)
LINQ to X: What's up with all these Data Access Technologies?
08 November, 2007 01:23 PM, RGabo,
még nincsenek kommentek
Kategóriák:
TechEd-Developers
Címkék:
bolognese
,
carl
,
castro
,
elisa
,
entity
,
flasko
,
framework
,
linq
,
luca
,
mike
,
pablo
,
perry
,
sql
,
taulty
,
teched
,
TechEd Developers
,
to
I'm waiting for this exciting interactive session to start. I'm sitting in the third row and all the speakers are already here. It's great to have all these people here at the same time. We've been handed out papers, most likely they do that for every interactive session. Not sure why but we'll see I guess :) I will fill in the answers after the session or if there's is some idle time.
1:30PM: Everybody's settling in, time to start!
How the technologies stack up performance-wise to more direct technologies like DataReaders? Followed up with: How does LINQ to SQL compares to Type DataSets and DataAdapters?
Will DataReader and DataSet dissapear?
No. :)
Are LINQ to SQL and LINQ to Entities entities serializable?
Yes. :)
What is state on caching in LINQ to SQL and LINQ to Entities?
There is no caching done today in those technologies but it is a request they hear often.
Why do you have LINQ to SQL and LINQ to Entities as well as two separate technologies?
The million dollar question :) They are two separate technologies developed at Microsoft parallel. They either release both or spend another 1-2-3 years unifying them. They chose to give the developers an OR/M solution that is coming out of Microsoft earlier than later. The target audience and the feature set is slightly different with LINQ to SQL being a closer to 1:1 mapping to the database and LINQ to Entities with its translation layer, the Entitiy Data Model (EDM) and no lazy loading (on purpose).
Why is there LINQ to Entities and ESQL as well? What is the reason behind ESQL?
ESQL allows for all the types of dynamic SQL that people exploited with SQL. It is a complete dialect of SQL with all the notions of the EDM. It can be more performant (an EntityClient exists which is really an ADO.NET Data Provider) or better suited for particular scenarios.
Do LINQ expression trees get translated to ESQL or SQL? (my question ;))
Both expression trees and ESQL queries (that express the query itself) get 'compiled' into CQT (Concise Query Tree) and the stacks underneath work with those only. CQT are first hierarchical and then get flattened out in the translation layers.
What are the main differences with regards to features between LINQ to SQL and LINQ to Entities?
- 1:1 mapping vs conceptual model (EDM)
- Implicit lazy loading vs explicit behavior
- LINQ as a way to query vs LINQ and ESQL as well
- LINQ to SQL available as part of .NET FW 3.5 vs LINQ to Entities only next year (Beta2 today).
There are some interim questions as well that I'll try to summarize later.
Will LINQ will be supported in SQLCLR at some point?
Luca is begging Pablo to say YES before answering the question ;)) It's something that they are looking at. LINQ to Object and LINQ to XML (something that you'd be using in any layer basically anywhere in C# code) are more likely to first appear in SQLCLR than LINQ to SQL or LINQ to Entities (or LINQ to X).
What are the advantages and limitations with using stored procedures with LINQ?
Stored procedures give full control to the DBA which is the important part about them. Both technologies support them but they are opaque and result in non-composable queries. As a intermediate solution, Table-valued functions work well and remain composable.
UPDATE Nov 10: Updated with some of the answers. Comment if something is unclear.
Entity Framework: Application Patterns
08 November, 2007 11:52 AM, RGabo,
még nincsenek kommentek
Kategóriák:
TechEd-Developers
Címkék:
castro
,
entity
,
framework
,
pablo
,
teched
,
TechEd Developers
I've been a little late with posting about the sessions, so here I am again! Yesterday I attended one of the coolest sessions presented by Pablo Castro: Entity Framework: Application Patterns. I didn't like the session because of the wealth of information I've learned from it but because Pablo is a very entertaining presenter and I really enjoy his talks (may that be on Channel9 or Mix or here at TechEd). He walked through different application architectures (mostly different in layering) and demonstrated how the Entity Framework (or the EDM) fits there and what are the very basic tips and tricks that everyone should know. He'll be at the Ask The Experts booth where I'm sure I'll ask him a bunch of questions (I already touched on persistence ignorance and other interesting topics right after the session). He also has an interactive session today which I'll be sure to attend. All the hotshots will be there: Pablo Castro, Carl Perry, Mike Taulty, Luca Bolognese, Elisa Flasko. Will be very interesting, given the session will be an interactive one (questions drive it).

