World Map Tutorial - Part 1  

Well, I know we already have a Map Tutorial on the Bioware wiki (which will be updated shortly by yours truly) but as far as I know, no one has been successful in getting a custom map to work in a stand-alone module. Or, if someone did, no one has come forth on the forums to help those who've had problems. So, here is a step-by-step tutorial on getting custom maps to work.

Step 1: Map Image

The map can either be in .tga or .dds formats.
TGA: You can use a freeware image editor like Irfanview or Gimp to convert a .jpg/.jpeg file to the .tga format.
DDS: You can use nvdxt.exe present in the <Dragon Age Install folder>\tools\ResourceBuild\Processors folder to generate a DDS file. nvdxt.exe is a batch utility and to use it you need to open a command prompt (Start -> Run -> cmd) and enter your command. An example to convert x.tga to is:

nvdxt.exe -file x.tga -output -nomipmap -8 u8888 -prescale length width

-prescale length width lets you put in the size (should be multiple of 4) to which the x.tga should be scaled before conversion

If you are using Photoshop, you first need the Nvidia Photoshop plug-ins and if you are using Gimp, you need the Gimp DDS plug-ins. In Photoshop, I saved my DDS as DXT5 ARGB 8bpp with Interpolated Alpha and No MipMaps.

The game requires the image to be with the client's localized name but the toolset reads the actual image so you need both <image_name> and <image_name_en-us> (for English clients). You have to place both images in your addin's module\override folder.

The game's world map (both OC and Awakening) is 912 x 687 pixels - this is the canvas size. The images have a 24 pixel transparent border which would make the actual image 864 x 639 (640 if you are using your own map)

Why is this important?
The map is anchored at the top-left corner of the book image and this corner is actually slightly above the book border. Without this transparent section, your map will never be aligned exactly in the center of the book.

Sample map in add-in module with DDS extension
There are ways to work around this but I will cover them in Part 2 if I am unable to figure out the transparent border.

Step 2: Building the m2DAs

You need to extend two 2DAs for the worldmap to function correctly in-game and create as many worksheets as you need based on the TargetWpTable entries (see below). All these 2das go into your module\override folder.

worldmaps from worldmaps.xls: A few things to note here:

worldmaps_tut 2da
  • The ID has to be between 0 and 255. Anything over that and the map will not work in-game and you will see the infamous grey square at the top left.
  • Bioware uses 1-5 for the OC and 10 for Awakening. I doubt the other DLCs use different world maps - if anyone has played them and has seen a different map, let me know.
  • The TargetWpTableID should match the IDs used to extend the m2da_base 2DA
  • The TargetWpTable entries should match the different worksheets containing the Source/Target waypoint information. I have yet to test whether this is actually used.
  • The MAP column contains the names of your map images
  • The Label column is the one used by the Toolset
  • As far as I can determine, the NameStrRef is not used anywhere so you can keep that at 0
m2da_base from 2da_base.xls: Create a new entry for each of the TargetWpTableID used in the worldmaps 2da extension. Keep in mind that the m2da_base is, in itself, a m2da so you need to only have a worksheet with the new rows.

source-target waypoint 2das: You can copy the existing target_wps_* worksheets and edit them if you so wish. It is basically a table with source and target areas on the rows and columns respectively. Their intersection contains the waypoint tag you will be transitioned to when traveling from the source to the target area.
test_map_1_wp 2da

Step 3: Setting up the map in the toolset

This is probably the easiest part. Fire up the toolset, navigate to the Maps tab, right-click and select New -> Map.

TIP: If you didn't know, going to the appropriate tab (Maps, Scripts, etc) and then selecting the New option by right-clicking there automatically positions the corresponding resource at the top of the menu. Selecting a folder and doing this creates the resource within that folder.

If you've done the previous 2 steps, you should see the map name (Label) in the drop down list for the Map within the toolset and the image should appear correctly.

To test what you've done till now in-game, just create a couple of map pins, save and export without dependent resources. Create a placeable using one of the Area Transition type placeables and set the PLC_AT_DEST_AREA_TAG to world_map (this is a hard-coded value inside the utility_h script). You can use any placeable for a transition but it is not as simple as this and I want to keep things simple till I start Part 2 of this tutorial :)

Fire up your module script and add the following lines of code:
#include "events_h"
#include "global_objects_h"
#include "sys_chargen_h"
#include "sys_rewards_h"
#include "world_maps_h"

void main()
    int nEventHandled = FALSE;
    event ev = GetCurrentEvent();
    int nEvent = GetEventType(ev);

            object oWorldMap = GetObjectByTag("<Tag of the placeable>");


    // if this event wasn't handled by this script fall through to the core script
        HandleEvent(ev, RESOURCE_SCRIPT_MODULE_CORE);

Export the resources for your module, start Dragon Age and launch your module. Once you click the Area Transition placeable, your map should be displayed.

Lastly, to show that this works with more than one custom map in the same add-in, another image. This one uses a .tga file as the world map and is bigger than the other one - just to show that there is no limitation on the size of the image - but you can notice the icons inside the map area -> the underlying book size is hard-coded.
Sample map in add-in module with .TGA extension
Part 2 of the tutorial will cover the scripting behind transitions, how to bypass/override certain events, customizations possible within the existing event framework and an explanation (or workaround) of the 24-pixel border. Stay tuned!

I did my testing as part of my module so if any of you who read this run into issues or find something inadequately explained, let me know and I will see what I can do.


Community Contest 2 Ends!  

The second Community Contest to create one or more props for use in a level is now complete and the entries consolidated and uploaded to DA Nexus!

Though we have only three entrants for this competition, two of them have submitted multiple props which should be nice additions for different kinds of level settings. We also have a cool-looking fountain from Mike for use in those upscale city neighbourhoods.

Download and judge for yourself the contest entries here.

While packaging the module, the toolset again exhibited one of it's many quirks - it can post level files which generates all those .rim files but apparently, it cannot package them up for distribution! You have to manually do that yourself.

  • Rename the .dazip to .zip
  • Extract the contents
  • Add a new env folder under the (addin-name)\core folder
  • Copy the posted level files into the env folder. Going by Bioware's example, just place the .rim files there. Don't package it into an .erf or the layout won't be available in-game.
  • Zip up the contents again - make sure the root contains the Manifest.xml and Contents folder or DAUpdater will throw an error while installing.
It's a good thing the .dazip format is just a renamed .zip format - I cannot think how difficult it would have been had it been a proprietary packaging format!

This highlights one of the problems David Gaider touches upon here - it's not a trivial task to package up a toolset for the community and test it and support it. I would go so far as to say that it is not restricted to the toolset alone but is relevant for any kind of modding capability. I just hope that when (if?) they do release a toolset update after DA2 (is anyone still hopeful that we will get a toolset patch before then? :p), it will fix some of the obvious flaws in the toolset.


Marketing - Get the word out!  

Continuing on from my previous post about the importance of marketing in the modding arena, I would like to touch/expand upon the means by which one can market our mods.

How successful is my marketing?
Blogs, as I've mentioned before, are a very good means of showcasing the development of a blog. However, I've found that when the blogs go beyond the standard fare - i.e., go beyond just the mod updates and include articles on inspirations behind the mod, design decisions, analysis of game mechanics, to name a few - I find them more enjoyable and the impression it creates of the author is better. One excellent example is Challseus' posts in July about the inspirations behind RoE. That made for a fascinating read - I was on vacation so I read through those posts later in one go but I can see how readers will want to come back and read more of those inspirations. It also lends some credibility to the modder; that they are not just changing things to be different but in fact have a good reason to do so.

I actually penned a series of articles related to BaL's design and why certain things were being changed/added/removed but I felt that it would give too much of the game away and I had to stop after a few posts. There's that fine line between revealing too much thus destroying the element of surprise and revealing just enough to build up the anticipation for release and I've yet to find that sweet spot.

The other important aspect is presentation; especially now when there are so many modules to choose from. It makes your content stand out - be it good screenshots (I'm guilty of taking too many dark ones myself), an attractive project page layout or a well put together trailer. If the presentation is good, it will automatically draw people's interest and then, you have to make sure that the content within stands up to that presentation ;)


What are the other means by which modules can be promoted?
Some time back, Mikemike37 suggested Twitter as a means for promoting my blog. The only time I've used Twitter so far is for the Bioware challenges during the infamous Bazaar event but I can see the potential there. It might be more so for a module like Baldur's Gate Redux since it comes attached to a familiar name but who knows! I'll have to get around to doing that soon...

The other option - interviews! In the context of Dragon Age, getting interviewed on the Dragon Age Podcast is sure to get you and your module those few seconds of mass recognition which will, in most cases, translate to increased visibility of your module - more views, more downloads, more ratings.

Well, that concludes my thoughts on marketing for now - this can easily change into a discussion about using social media for online brand marketing but that is an entirely different subject and too vast to be handled here! As always, I'm interested in hearing others' opinions on this subject.

Now, if you've been reading my blog before, you would have noticed these last two posts are not the norm. I was recently interviewed by a thesis student doing his Masters in Communication in Singapore and one of the aspects of modding we talked about was marketing. It was a lengthy interview and a lot of time was spent on this subject which served as inspiration to post here - an evolution of the discussion we had, if you will.


The Importance of Marketing  

Anyone creating content - be it a video game mod/module, a home video, fan fiction or mobile apps, to name a few - realizes the importance of marketing or if they don't, should realize and respect it's importance. The ultimate goal of content creation is consumption by the public; a narrow demographic for certain types of content like video game mods or the general public for things like home videos.

How do we get people to consume the content we create? Obviously, the first step is to make them aware that such content exists. Now, some modders might say (and I have heard this before) - I'll let my work speak for itself ; I don't need marketing. My question is - how will the work speak for itself if it is not even in the radar of the folks looking for such content? Alley of Murders, an excellent add-in for Dragon Age and if I recall, one of the first, had less downloads than other add-ins that were released after it. I think one of the problems was marketing.

Granted, most hosting sites have methods in place to show new content that has been uploaded. However, when there is so much content being released on an almost daily basis, will that one day of visibility be enough? It will most definitely be enough for a very small amount of content - The Phoenix Armory for Females is one such example. An extremely well-crafted, beautiful armor set that doesn't look out of place in the Dragon Age world and it's already garnered over 200 endorsements in the past 2 weeks.

It will also quite likely be enough for any content related to sex, as the BSN project page shows.

How can we modders then ensure our modules - which have had hundreds of hours sunk into them - are given that visibility? How can we keep them in the public eye even during development so that we will have an eager audience waiting to play it upon release?

One obvious method is to use signatures. Almost every module creator I've seen for Dragon Age has the project link in his/her signature bar. Signatures, however, are only effective if the module creator takes the time to post in a variety of forums - not just the DA Toolset forum, which is frequented only by other module makers and it is a reasonable assumption that they are already aware of your work. The task here is not only to maintain visibility to those who know about your project but also to pull in new people.

The other option that works well in the BSN forums is the 'What's New' feed. Everything you post in your project page (be it private or not, hehe) and status updates are visible to your friends. Making regular updates to your project discussion pages and friends posting in groups/discussions related to that propagates those posts to the 'What's New' feed of their friends. It's a fragile chain to be sure but a chain, nonetheless.

Blogs, I've found out, are really good tools for marketing. For one, there is the cross-promotion that happens as the "mod-blogger" community evolves - modders link to or follow other people's mods and this is usually reciprocated, resulting in increased traffic which translates into increased visibility. The other advantage is that visitors know that you are working on the module - especially when you post screenshots and provide regular updates on where development is at. Of course, stagnant blogs quickly lose the edge so you have to keep posting and updating your blog to keep the interest up.

One common denomination among all the above methods is that you have to keep working on the PR front as well as doing the actual modding if you want to ensure your module is consumed by a large portion of the community.
What do you think - is marketing necessary or are we over-burdening ourselves? Are there alternate means of promoting our content?

More on this in the next post...


A lull...  

In my earlier post,I had mentioned that I would be able to get the level I submitted for the contest tweaked and ready by the weekend. Well, that didn't happen. In spite of the long list of ideas I had on Friday, the weekend for the most part was a complete bust. I had to work on a production-critical demand issue and after spending almost an entire day on it, I was drained. I did open the toolset but I couldn't even get myself to write a simple trigger script - completely blanked out! Towards the of the weekend, I finally wrung out some energy to fix some of the glaring omissions in the level - floating buildings. I also went through the level in-game, both in tactical camera mode and third-person view to find anything else that was amiss and I recalled Mike's comments about the carts balancing on wheels and went about fixing those.

Where are those invisible oxen?!

I did manage to have a long conversation with Daeltaja on Sunday evening and have a list of things I need to complete for Craggy Island - minor scripting stuff for the most part. The one important thing I'm overdue on is getting a play-through done so I can get a feel for the current state of things. I plan to get that done with today so I can finish the work required from my side - after all, I volunteered for this so I definitely don't want to be the one holding things up!

On the Shadow Magic front, two of my first round games were won successfully and the last one is in progress. I want to win this too so I can be assured of a second round slot - with the modified swiss sytem we are using, two wins might not cut it if the opponents don't get many points. I would probably need to spend some time preparing for the second round once the map is announced and that will likely happen toward end of this month.


Tweaking stuff  

One of the good things with the level building contest was getting feedback from the judges. Mike and Semper have given some valuable feedback, including a tip about ambient animations that will go a long way toward polishing my level-building skills. So, that's what I've started doing now - fixing up the contest entry to remove some of the obvious mistakes - there were two floating buildings a small distance off the ground that I am really ashamed of as I went through the level specifically looking for that! I will also start addressing some of the things I wrote down in my earlier post and hopefully, get the level finished this weekend.

In the meantime, I've started dabbling in 3ds max when I get time so I can do some basic stuff. One of the first things I wanted to do was to get the fence prop with a relatively straighter upper post so it would look better when placed in a chain. I was able to do it though the end result wasn't that good - I just pulled all the vertices up and exported it, which I guess is not the way to do it :)

There is also a scripting contest coming up and I've already got ideas for 3 possible mini-games. All of those would fit in nicely with BaL though the 2 mini-games/puzzles I had planned for BaL won't be entered in the contest - I need to keep some original stuff for my module as well! I also have a cool idea for the setup for one of the games that would involve some new models but after going through some video tutorials yesterday night on 3ds max, I think it should be pretty simple (the available options to create models are staggering!)

Now that the contest is over, I'm also spending more time working on Craggy Island to get the scripts written as and when Daeltaja finishes writing a particular sequence and so far, there haven't been any real hurdles there. I might have to write a custom placeable script to strip out some of the features in placeable_core but again, the core functionality isn't being changed so that should be relatively simple.


Community Contest Submission Done!  

I think it's not really that big of a deal since a lot of people managed to submit some exceptional work for the contest. For me, however, the contest set a couple of important milestones with respect to level building.

A bird's eye view of Evermist

  1. This is the biggest level I've created till date. To be honest, this dwarfs the other 3 exterior levels I created. The size of this level is 224 x 288 and the playable area is 160 x 224 (or 5 x 7 using the default chunk size)
  2. This is also the quickest I've created any exterior level - it took a little over 10 days to complete this monster (well, it's still got a few tweaks that have to go into it but it is playable right now!)
Again, the above might not seem like major things but keeping in mind that every exterior level I have right now requires additional work (floating trees, night version to be created, more props), it was a very good effort, even if I do say so myself. The contest provided an end date to the work that I really didn't have before - I could create the other resources required for BaL and still be working on the module. Not so here.

Evermist - a view from the Chantry balcony
As I said above, there are still a few tweaks that have to go into the level -
  • I need to put in more fencing around a couple of raised up areas
  • More props need to be added to the houses
  • Some texture rework is required (I was not even sure whether I had utilized one particular texture in more than one area and some areas are still a little bland)
  • I need to cut down on the grass in the fields  - I think I have nearly 2000 trees in the level and about a quarter of them have High draw distance. Not a good one for lower-end machines
  • Some custom props have to be designed to replace tons of replicated props
  • Put in the mist that gives the village it's name :)

Given how I've handled these things before, they'll likely be pushed out till I get the level building bug again - and I'm praying it's not for some time yet. I literally haven't done anything else except level building over the past 10 days and man, do I need a break from that!!

To give you an idea, I was building the final toolset export today morning and I hit an error with the SpeedTree capture for a particular tree (condsn_a, I think). So, I deleted the files in the trees folder, did a post trees alone and it was successful. Just to make sure, I load the area layout in a test area and damn, all the trees except the 'wall' trees were missing their leaves!! I was in panic mode! I did a full post again, same error with the same tree, removed the textures from the SpeedTree temporary folder and another full post, which was finally successful. I go back in and same issue!!
Thankfully, I noticed that the trees closer to the camera were fading in and out as I went near...and then realized Fade Cutaway was selected!!!


Quick Update  

I've been really busy with the Settlement Level contest and pretty much devoting all my time to it. One good thing is, as I'm molding the terrain and putting in props, ideas keep coming up. Not all of these are game-play related ideas though. Many are logical ones - lot of fields and a bakery in the market, maybe add a windmill to grind grain into flour? or a prominent fish-selling meat market gave the idea for a stream through the village, etc.
Also, lots of ambient conversations just write themselves in my head when I am doing prop work. I must admit, most are just explanations for why things are in a particular way but I think even these complete the area as a whole.

Anyway, enough is a screenie for your consumption and I'm off to spend more time with the level editor - need to finish prop placement, texturing, more fields/orchard planting, vistas and getting the water to look right.



Yep, in plural!

I had been toying with the idea of submitting the Leeward level to the Community Contest. However, it is not *technically* a finished level since the village is not complete. The incomplete areas are not accessible in Blood and Lyrium but that wouldn't be enough reason to make that entry a valid one according to the contest rules.
I had started design work on the next big area in BaL, a village called Evermist. This would be a crucial area in BaL so I had spent some considerable time to make sure that all I needed could be presented properly.

Design on Paper

Given that I had the design work complete around middle of last week, I decided to take the plunge to try and finish it before the contest deadline. It is a fairly large level (192 x 288) and I've decided to use a lot of elevations and custom-built houses which makes it even more time-consuming.
At this point, the initial prototyping is done and it is looking pretty good - by my own low standards :)
The contest deadline is just 6 days away so I will be slaving away at it whenever I get some free time. I would love to hear any suggestions or feedback on the posted images either here or at DANexus or in my project feedback thread so feel free to share your thoughts on the level.

The view from the Chantry
The other contest, rather competition, that I am participating in is the Age of Wonders: Shadow Magic PBEM 1vs1 Tourney. Historically, though I've been a Singles Champion, I've never been able to see a 1vs1 competition through to the end. These tourneys typically go on for about 5-6 months and in both competitions held in the past, I've been forced to forfeit due to RL delays. Hopefully, this time, I can play till the end.
Of course, I haven't had much practice since I haven't been playing PBEM for nearly 9 months now but as luck would have it, my first round is relatively easy and I hope to go through to the final 16 without any major hiccups. Here's hoping!
Being on the forum staff, I'll also be helping out with the organization (setting up threads, resolving any disputes, etc) a bit so that is going to cut into the time I can spend on DA.

Too many things going on!
Till later...


Playtesting + Craggy Island  

I finished the area (Leeward) I was working on for Blood and Lyrium a couple of days back - finished as in, the required NPCs for the various quests are in place and their dialogue is written and plots and associated scripts are done. Technically, that means I can play through till this area and the story will progress accordingly. Of course, there is some additional play-testing to do to make sure everything is alright. I can't speak for other module-makers but for me, it is very difficult to do more than one or two runthroughs of an area if I haven't added something new to test. I know there are alternate options to choose and different approaches to the same goals (well, most of the time at least) but I just can't seem to muster the willpower to do it. I don't know - is it that the content is not interesting enough or is it just my psyche?

Anyway, the good news is, as I was play-testing, I got a very good idea for a quest at the beginning of the game. Now, some players might not like having to answer lore questions to progress through a main quest line. I even thought of adding in an alternative way to do it but then, ditched the idea. After all, Blood and Lyrium is about a Dalish protagonist and I didn't want to dilute the experience right at the start. I just made sure that the player can find the required answers either through conversations or codex entries before starting the quest.

New Quest - The camera needs a bit of adjustment still

A few posts back, I was talking about Craggy Island and how the island itself was looking beautiful. As it turns out, Daeltaja was looking for some help with scripting and I've decided to set aside some time to do just that. This last week, we went through a few hurdles getting B2B to work right but after the initial hiccups, managed to complete the initial plot and associated scripting. The module is not planned to be very lengthy so I expect, if we keep up the kind of communication we had going last week, to be done with the scripting front by end of this month. I hate to put an end date on things still in development (I've already revised BaL's release date twice!) but I reckon I will take a chance with this; especially as the main developer (Daeltaja) will have a couple of weeks vacation this month.

Till later...


DLCs - the future of gaming?  

During my weekly visit to Gamespot, I came across this video article talking about DLCs as the future of gaming. DLC, as most gamers are aware, refers to DownLoadable Content and this is a topic I (and many others, it would seem) have strong opinions on.
When I started playing games - which was pretty late, in my late teens - the additional stuff was always free; primarily because almost all of them were community content done by fans. Map packs, custom clothing/armor, total conversions, unofficial patches, new creatures, etc. All free.

Quake TC for Doom 3 - FREE!
I guess it was just a matter of time before someone in Corporate noticed the demand for these extras and decided that this was a good money-making opportunity. That's a perfectly good capitalist thought and it was a win-win scenario for both parties - more content, polished and with the official seal of compatibility for players and more revenue for the studios. The fallout of this model, at least in my eyes, is the death of the expansion pack. Games hardly have expansion packs nowadays - it's just more DLC to bridge the gap between sequels.
Civilization 4 - Fall from Heaven 2 - Better than most DLCs and free!
In the past couple of years though, the DLC scene has come to signify corporate greed and an utter lack of principles on the part of the publishers/studios. That's not to say all DLCs are bad - some rare ones are good but many of them don't justify the price tag. For example, the Bioshock 2 MP DLC - Sinclair Solutions - was already on the disk and the $5 price for the DLC was to get an unlock code. The reason behind the decision - players need to have exactly the same content to play online (btw, when has this ever been different?) and the DLC potentially is tied to engine updates and such that it had to be included in the disc. Then, there was the infamous Versus Mode DLC for RE5, a fiasco if ever there was one - a 1MB download for playing online, which made it so obvious the content was already there.

...and now, Dragon Age.
Admittedly, we know that the teams that do DLCs are separate from the 'main' development team. However, with the core development team concentrating on DA2 for quite some time now and the game and the toolset in desperate need of some patchwork, does it make sense to keep churning out additional DLCs? I swear the Feastday Gifts/Pranks was one of the worst ideas EVER - when players were still experiencing game-breaking glitches. And what do we get in the patch? Compatibility files for Awakening for the most part.
Why can't this DLC team work on fixing the bugs in the game? Most of these bugs are in the same category as content creation - they can be fixed with a toolset. Why can't some of these guys move over to DA2 development and free up one or two resources in the 'core' dev team to patch the toolset/engine? What's even more frustrating is that these bugs are acknowledged by Bioware. A couple of these (that I know of; maybe more), related to the chargen process, have even been fixed but apparently, there is no time to test and include the fixes in a build. Isn't that sad?

As I said, not all DLCs are bad. I am looking forward to The Witch Hunt for I know it will be good! Why? One word - Morrigan. Bioware knows that if they screwed up her story, it will be their worst debacle yet, bar none. I mean, they can't create a character such as Morrigan, give her the great build-up as in Origins and just let her fade away in a quick adventure, can they? I hope not.