Blue Mammoth Games Games Dev Blog About Us Contact Homepage

Sunday, October 24, 2010

The Dungeon Blitz look, part 2

As we bring in new folks, I'm building a vocabulary of more precise and useful ways to say "That's good, but now we need to make it look like Dungeon Blitz."

Today's word: Beefiness.

Here are a couple of elements from the Wizard's Study set that we're working on:
Brett, the artist, is doing a fantastic job overall, so I didn't want to tell him the wrong thing and create confusion, but there was something about the Wizard Study pieces that weren't right. How to explain? I told him:

"The
y need to be beefier: more stable, more robust, more medieval, more caricatured."

And I tried my hand, clumsily, at making them beefier:
Darolle, one of our main artists, rescued me this time, and said, "You don't want small areas of color or thin lines. Each area of color needs to be clearly visible."

Yeah, that. Beefier.

Sunday, October 17, 2010

Runtime Shared Libraries, Preloading, and Dynamic URL Versioning

The idea behind Runtime Shared Libraries (RSLs) for Flash is great. Multiple swfs sharing library art are now much smaller because the shared library only has to be loaded once. Unfortunately, in practice they have been a headache for us to work with.

Problem One: Application Domains
The first part of the problem is that we need to load each game level into it's own application domain to prevent namespace problems. It turns out when you load something that loads an RSL into it's own application domain, the RSL seems to be loaded into that application domain. Unfortunately, when it is time to load the next level, Flash thinks that you have already loaded the RSLs, and does not reload them, and your level cannot load because it cannot find the definitions of anything in the library.

Solution: Preloading
We solved this problem by preloading the RSL into the global application domain before the level ever gets loaded. It takes away a bit of the magic of RSLs because you have to manage the preloading by hand, but it was the only solution we could come up with because of the way application domains work.

Problem Two: Dynamic URLs
To prevent the browser from caching our files, we use the get parameter trick to make the browser think the file is completely different (Ex: Library.swf => Library.swf?v=21). This works great, except for the way that RSLs get preloaded. The import statement inside the flash file says the symbol is coming from Library.swf, but we loaded Library.swf?v=21 during our preload. The game still runs fine, but the server ends up getting two requests for Library.swf, and neither is cached. One from when we are preloading, and the other from when the level is loading and automatically requests the library. Unfortunately, you have no control over how the automatic request is done, and updating the fla every time you change versions isn't a viable solution.

Solution: Madness
Our solution for this problem is crazy, and it works because of what seems to be going on under the hood during RSL loading. The RSLs get loaded to make sure all the definitions are in place before the actual file you are loading gets loaded, but it doesn't seem to care where they came from. Before we upload, we renamed Library.swf to Library_vX.swf and replace Library.swf with an empty swf. We preload Library_vX.swf so that all definitions are in the application domain when it is time to load the level. The level automatically requests to load Library.swf, which is now replaced by our dummy swf, and everything ends up working just fine. We then manually rename Library_vX.swf as we version it.

Our only hope is that Adobe gives us more control over the RSL process in the future, but for now our problems seem to be solved.

Wednesday, September 29, 2010

The Dungeon Blitz Palette

As we bring in new folks, I'm building a vocabulary of more precise and useful ways to say "That's good, but now we need to make it look like Dungeon Blitz."

Today's word: Palette.

Last week I started working with the guys over at Beware of the Art. They got to work on a background art set for the cavern jungle. Here is a sample of their initial work:

It looks good; it doesn't look like Dungeon Blitz. But I didn't have the art vocabulary to explain why.

Then one of our current background guys rescued me:

"Too much contrast. Black lines should be used VERY sparingly, otherwise the characters don't pop. That's the primary issue. Also, the bright stone behind the dark trees and bushes makes it read forward, not backward, and distorts the space. Its nice art, but its also not as "rough feeling" as the stuff I generally do... its also more fun and cartoony, which feels weird in the DungeonBlitz context, which is more DnD in tone.
"

Then he fixed it:


"I modified the colors, pushing them more in line with the Dungeon Blitz palette. I reduced the contrast, keeping the dark outlines as a one-off color in the same hue as the fill. I also added more secondary shadows to most of the objects. The background rocks felt too blobby and cloudlike, and the whole background plate was too bright, so I redid that.

More DnD, less cartoon..."

Nice. Armed with this I went back to the guys at Beware Of The Art and was much clearer with my feedback, and now we are on to the next scene.

Next time: Line.

Friday, September 3, 2010

Fixed Height Header Div with 100% Height Flash Swf

What I Want
A 25 pixel header and then a flash swf to take up the rest of the screen. The problem I am having is that the 100% height and the 25 pixel header get added together, and I get stuck with the bottom 25 pixels of the flash below the fold.

What I Tried
I tried at least 20 different combinations of divs and nested divs to try to get it to work. Even when I removed the swf and just tried to get the divs to size appropriately, I would always end up with 25 pixels more than I wanted.

What Worked
Eventually, I caved and moved to using tables. Here is the summary in case you need to do this same thing.
html,. body { height: 100% }
<table id="container" border="0" cellpadding="0" cellspacing="0" style="height: 100%; width: 100%;">
<tr style="width: 100%; height:25px"><td>
<div id="headerDiv">
</td></tr>
<tr style="width: 100%; height: 100%"><td>
<div id="flashDiv" style="width: 100%; height: 100%;">
<div id="flashObjDiv"></div>
</div>
</td></tr>
</tbody></table>
 
If anyone knows how to accomplish the same thing with divs (or a cleaner method in general), I would love to hear it. In the meantime, this will be the solution we go with.

Wednesday, September 1, 2010

Orphaned Users after MSSQL Database Restore

We find ourselves using the database restore to initialize new computers and pass major table changes around. Unfortunately, the restore gives you a user that isn't attached to any of your logins, even if your login matches the username. This is called the "Orphaned Users" problem.

Luckily, it has a simple fix. run the following query.

EXEC sp_change_users_login 'Auto_Fix', '__username__'

If you want to create a new login instead of mapping it to an existing one, run this query.

EXEC sp_change_users_login 'Auto_Fix', '__username__', '__login__', '__password__'

Hopefully this helps someone, and if you have any questions don't hesitate to ask.

Monday, August 30, 2010

Captcha Fail

I came across this captcha:

I'm too color-blind to solve this without more trial and error than the captcha allowed, but I am pretty sure I'm human.

My friend Josh Ferguson at Cryptic Studios interviews game designer candidates, and he asks them how they'd go about developing user interfaces. Candidates who address usability for color-blind players get a big check-plus. He says it's not just because 1 in 14 males in the US are at least partially color-blind. It also shows the candidate is thinking from the player's point of view, a required ability for game designers.

Another thing for us to think about when designing UIs. Like that isn't hard enough already.

Sunday, August 29, 2010

We need help.

We're looking for a really solid artist/level designer to help us build Dungeon Blitz. We've got a lot of content to build, and need good help. We need a developer experienced with Flash (we use Flash CS4 as the starting point for level layout), is a good 2D artist, and loves doing great work on a deadline. If that sounds like you, send us a line at jobs@bluemammothgames.com.


Right now, we just have contract work, but long-term we'd like to bring people on board full-time for Dungeon Blitz and future projects.
 
© 2010 - Blue Mammoth Games, Inc.
Footer