Sunday, February 26, 2006

Fighting Quailtards

Okay, I managed to get a few more animations in place for the "Quailtard" critter: a "moving to attack" animation, an "attacking" animation, and a "getting damaged" animation. This let me cobble together a demo showing a bunch of fighting quailtards. I think it works pretty well.
Fighting Quailtards

FSM makes it to The IT Crowd

Heh. While watching Episode Six of The IT Crowd, I noticed that there is a poster of the Flying Spaghetti Monster on the wall behind Moss. One of many little touches that makes this new British sitcom series awesome. Be sure to check out all the episodes.
Flying Spaghetti Monster Sighting on The IT Crowd /></div>
<div style='clear: both;'></div>
</div>
<div class='post-footer'>
<div class='post-footer-line post-footer-line-1'>
<span class='post-author vcard'>
</span>
<span class='post-timestamp'>
Posted
<meta content='http://nephilim.blogspot.com/2006/02/fsm-makes-it-to-it-crowd.html' itemprop='url'/>
<a class='timestamp-link' href='http://nephilim.blogspot.com/2006/02/fsm-makes-it-to-it-crowd.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2006-02-26T01:34:00-07:00'>1:34 AM</abbr></a>
</span>
<span class='reaction-buttons'>
</span>
<span class='post-comment-link'>
<a class='comment-link' href='https://www.blogger.com/comment.g?blogID=3005125&postID=114094287514513456&isPopup=true' onclick='javascript:window.open(this.href, 2 comments:

Friday, February 24, 2006

Monster Animation Sample

I just uploaded a Monster Animation Sample of the giant bird I blogged about yesterday.

In this animation sample, you can see the "idle" animation for the bird. "Idle" may seem odd, since I was trying to mimic the spastic, jerky motion of birds, but the idea is that this is the animation that plays when the bird isn't doing something significant, like attacking, getting damaged, etc. I'm pretty happy with how the animation turned out, especially the springiness on the plume.

Thursday, February 23, 2006

Sacraments 3D Monster Design Philosophy

I haven't had much of a chance to work on Sacraments 3D lately, thanks to some stuff at work. (Well, that's not entirely true - I've had some spare time, but I've been so burned out on that project that I haven't felt like doing the rather intense work that 3D modeling and animation requires.)

But what I have been percolating on in the back of my mind was my ideas on monster design for the game. One of the things that I tried to follow in the last version, and which I want to continue with this new version, was the idea of having "naturalistic" monsters. I want my game world to have a more mundane feel to it than the typical high-fantasy game world, so I am going to try to closely model most, if not all, monsters in the game after real-world creatures. There will be "giant" and "dire" versions of normal animals, but there won't be dumb (yet adorable) happy-faced slimes, for example. Too many RPG monsters are weird just for the sake of being weird. I want to go the opposite direction and have the monsters seem like a natural extension of the environment.

Peppered Quailtard Model
In particular, I want the monster ecosystem to make sense, even with the bestial, magical creatures. Monsters shouldn't exist axiomatically - their existence and behavior must be justified. One of the themes I wasn't able to really introduce in the original Sacraments was the idea that monsters - the real monsters, as opposed to animals - are created by normal animals being polluted by rotting magic. In the Sacraments game world, magic is an organic element of the world like water, plants, and air, and as such, it can stagnate, ferment, and rot. When this happens to magic, and animals come in contact with it, it changes them in unpleasant ways, but still ways that are recognizable. There are story-level reasons for this construct, too, but it really makes for a good explanation for why there are monsters to fight, and why they behave in such a hostile and dangerous way.

(Shown above: a sample animal foe (not one of the magic-altered monsters). It's a large flightless bird, between the size of a man and a dog, with a nasty bite attack. I'm debating calling it a "Peppered Quailtard" in honor of good ole Dick Cheney, but that little bit of fun might break the game world immersion too much. The problem is that "Quailtard" is such a great name for a bird-monster that I'm having trouble coming up with an alternative. It's as good as "Chocobo." Suggestions? Or should I go with "Quailtard?")

Alternative for Bush's Torture Program

You know, Bush doesn't have to go outside the Geneva Convention and illegally authorize torture to get his prisoners-held-without-due-process to talk. I've got just the answer for him.

I went to the dentist yesterday, and it occurred to me that all you need to do in order to get a suspected terrorist to confess is to do that little test where they measure how many millimeters down they can push the sharp pointy metal object between your tooth and gum for a couple of hours. The droning on of "one, two, two, one, three, two..." in rhythm of a nasty pricking feeling is nerve-wracking enough, but then, if you do as my dentist did and pipe in that awful twangy, whiny country-western music, you've got a skin-crawling experience that would drive any sane man mad.

(And this was from a good dentist. I can only imagine what it would have been like had I been at my previous dentist, who couldn't administer oral anaesthesia properly and whose dental hygenist would floss me so hard I could feel it between my toes.)

All Bush needs to do to get the confessions flowing would be to get some of these dentists and country western stars on the payroll. He'd have his answers in under an hour, and there would be no more embarassing photos of naked pyramids and dog attacks - any photos that emerged would simply look like a normal dental check-up: "We're not torturing them; we're simply ensuring that they have proper dental health while under our custody."

Wednesday, February 22, 2006

Mac Virus False Positive

Yesterday, we had a couple of Macs in our office turn up positive for the Inqtana worm. This is the first time we've ever dealt with a virus on a Mac.

Sort of.

It turns out we didn't have a virus at all. The vulnerability that the Inqtana worm exploits was patched back in mid-2005, and we're pretty good at keeping our software up-to-date around here, so we did a little poking around. Apparently, Sophos (the company that makes our anti-virus software) released a virus definition file that causes "false positives" for this worm when looking for viruses. So, it thought clean files were infected.

So we still haven't had a Mac virus yet (knock on wood!), but we had something pretty close. Since Sophos was set to delete infected files, a lot of files got deleted, which may as well have been like the behavior of a virus. Heh.

Saturday, February 18, 2006

Documentary on Britannia Manor

If you're a home haunt enthusiast, you have to check out this short documentary on Britannia Manor, the home haunt of Ultima series creator Richard "Lord British" Gariott.
Screenshot from Documentary
In the documentary, Gariott talks about the history and ideology of his $100,000 full-contact home haunt where visitors have to swim, swing, row, crawl, and deduce their way to safety.

The makers of the documentary are apparently offering a pseudo-free (you pay shipping and printing costs) DVD containing this documentary and a video tour of the home haunt. You can order it at Generation Fear.

Thursday, February 16, 2006

Bizarro spin

So you've all probably heard that the UN has chastized the Bush administration for continuing to keep Guantanamo Bay operational. Something's wrong when other countries have to remind America about human rights and due process.

But the thing that really boggles me is the defense laid out by Bush (via Scott McClellan):
The Bush administration dismissed the findings of the report, with White House spokesman Scott McClellan calling it 'a rehash' of claims made by lawyers for some of those prisoners.
Okay, so let me get this straight. The UN says, "hey, you're acting unethically here," and Bush's defense is "Oh yeah? Plenty of other people have said the same thing, too, so there!" Is that not the most bizarre apologetics you've ever heard? I mean, who buys an argument like that?

Tuesday, February 14, 2006

Yahoo! UI and Design Patterns libraries

Yahoo has released a UI Library and a Design Patterns Library for dealing with web-based interface issues. The design patterns in particular look cool, since they are organized on the problem you are trying to solve, which I think is a good approach. Haven't had a chance to review the quality yet, though, so I can't vouch for them.

Exit Obelisks

Today, I made some "exit obelisks," which will be a generic exit point marking for indicating locations where you can leave wilderness maps. Here's what they look like:
Screenshot showing exit obelisks
The idea is to have a convention that makes it clear to the player - after they've played a while - what to look for in maps if they want to leave, and what not to go between if they don't want to leave the current area and trigger a loading screen. Might break disbelief a little bit, but probably a lot better than pissing off the player who accidentally keeps leaving the map when he doesn't want to.

Also, I made another forest tile, but as it looks like all the other forest tiles, I won't bother to show it here.

Monday, February 13, 2006

Cooking For Engineers

Heard about this cool cooking site today: Cooking For Engineers, run by a guy named Michael Chu. It's pretty standard cooking site fare: recipes, ingredient info, kitchen tips, etc., but the cool thing is that it's aimed at the more analytical types.

Of particular interest is Chu's "tabular recipe notation" which combines the ingredients AND the steps all in one easy-to-read notation that has to be seen to be appreciated. (You can see an example at the bottom of his Halloween Green Slime Spinach Dip recipe. A chef after my own heart.) He's apparently trying to get a patent on this recipe notation, but it's cool, useful, and innovative enough that I won't begrudge him getting it.

Sunday, February 12, 2006

Sacraments 3D Tech Demo 2

Okay, I've just uploaded Sacraments 3D tech demo number two.
Screenshot from tech demo
This version includes these new features:
  • Tweaked camera and motion control
  • More town scenery
  • Nighttime setting, with glowing blacksmith forges
  • Animated Luthien avatar (with slightly awkward animation, still - sorry)
  • Skybox

More work on 3D village

No real geometry creation today, but I did do a lot of tweaking to the geometry and visual style of the buildings.
Two buildings from tileset
Still not sure if I like them better or not, but they at least have more of a consistent feel between them, which can be used for other buildings in the village.

Saturday, February 11, 2006

Saving Sal

There's a great little article over on Laff in the Dark called Saving Sal, which talks about the efforts of the Santa Cruz Beach Boardwalk to acquire, restore, and display the original Laffing Sal animatronic which welcomed visitors to the Playland-At-The-Beach park in San Francisco.

Interestingly, the park paid $50,000 at auction for her, and then invested what must have been a goodly sum to hire experts in animatronics, costume design, and art restoration to return her to her glory condition. I'm impressed that there's a park out there with such a commitment to the historical roots of today's theme park industry as to spend that much for a single artifact. Makes me want to go see it.

Blacksmith Shop

Tonight, I did about half the work on a blacksmith's shop for the town. This is definitely one of the more complex models for the town that I've started.
Blacksmith shop
I should have just made another shop.

Friday, February 10, 2006

Neph to present in Quebec, Gainesville

Looks like it's going to be a busy summer for yours truly. Three different trips firmed up late this week.

First, in March, some of us from NMSU Media Productions will be going to the IGDA Game Developer's Conference in San Jose, which would normally be fun enough, but it will be a working conference for us - we'll be meeting up with some game developers for a grant we're working on here at NMSU, and I'm really looking forward to meeting these guys in person.

Then in May, I'll be presenting two sessions at the 2006 National Extension Technology Conference in Gainesville, Florida. The first session is titled "Pirates" in Production: Developing 3D Educational Games, where I will be showing some of our work on the Pirates-themed educational game we're developing, and talking about various workflow and development issues for educational games. The second session will be Web Application Development using AJAX, wherein I will be showing some basic applications of AJAX and how they might be used to improve the interface for your web applications. I promise not to use the term "Web 2.0," except perhaps sarcastically.

Then in June, I'm going to be presenting a session called Practical CSS at the 2006 International conference of the Association for Communications Excellence in Quebec City, Quebec, Canada. In that session, I'll be talking a bit about some CSS tips and tricks, but mostly, I'll be talking about higher-level strategies for making sure that CSS isn't just another way to make some text a different font on a page, but also your site more flexible, easier to maintain, and "future proof".

Wow, I'd better get cracking on those sessions...

Surface namespaces in LightWave

Okay, I've been doing some experimenting with textures when going from Lightwave to Shockwave3D, and here are some things I've discovered and some recommendations for avoiding trouble.

It involves name spaces for UV Maps and Textures.

When you export Shockwave3D to Lightwave, it collapses all surfaces with the same name into a single surface. Thus, if we have two objects in a scene that have surfaces with the same name, those surfaces will be forced to look the same. This is good, because it means that no matter how many times we use a texture, it only needs to be put into the Shockwave3D file once.

The down side, though, is if we have conflicting surface names. If you create a model with a surface name of "floor" that is red and I make another one named "floor" that is blue, then when we put them into the same scene, they will both look blue (or red, depending on the order they were loaded in) because there can be only one "floor" surface.

Furthermore, even if you want two models to use the same image, you can't have more than one UV map name for a surface, because the surface in Lightwave can only have a single UV Map name. So if you import two models with the same surface name that use different UV map names, the UV map on one of the models is going to go all screwy.

For this reason, we're adopting the following conventions to avoid trouble:
  • First, we're making sure our texture images have unique names across all of us by using namespaces. We prefix all our textures with a descriptor (like a tileset name), so that we have "sandstone_floor.png" and "graystone_floor.png" instead of just "floor.png".
  • Second, we're reusing texture files where possible. This will help save on final file size and texture memory. The key is to think ahead to the different ways textures might be used and separate textures that are able to be generically used from specific use textures. For instance, wood paneling might deserve its own texture, since it can be repeated over and over again to cover a large wood-paneled area, even though it could be included as part of a "pirate ship" texture.
  • Third, the surface name equals the file name minus extension. For instance, if the texture image is "wood_panels.png", then the surface name would be "wood_panels". All textures that use the "wood_panels.png" file would have this texture name.
  • Fourth, the UV Map is the same name as the surface. All objects that use the "wood_panels" texture will use a UV Map named "wood_panels" so that multiple objects can define their UV mapping.
  • And finally, because of the above two items, all surfaces that use textures will just use UV Maps. You can mimic the mapping effects like "spherical" and "cylindrical" by selecting these when you create UV maps for your points, so we shouldn't ever need to NOT use UV maps.
You can rename surfaces using the Surface Editor. Choose the surface you want to rename from the surface listing, and click "Rename" at the top of the dialogue.

You can rename maps by going to the "Map" tab, selecting the map you want to rename clicking the "T" in the lower right corner and selecting the UV Map name from the popup there, and then going to the "Edit Maps..." menu to select "Rename map...".

Town addition

Tonight I added another town tile - a house. It's a two-story plaster-covered house framed out in wood. Here's a shot of it in-game:
Shot of new house
Kinda boring from an architectural standpoint - just a box, with some added details, really - but once I get other architecture into the town, I'm sure it will look fine. I'm trying to err on the side of too little geometry and too simple collision detection. If I start getting the town fleshed out and still seem to have plenty of CPU power left, then I might get more complex tiles.

I'm going to try to set aside some time every day to build 3D assets for Sacraments 3D. My idea is to just produce one simple 3D asset or half a complex 3D asset per night, and then put it away, so I don't get burned out - sticking to a regimen really helped with the production of the original Sacraments game.

Thursday, February 09, 2006

Buzzword-to-be of the day

Saw a new buzzword-to-be on the 'net today: bliki. Part blog, part wiki! Everyone will have one when Web 2.0 arrives!

Shockwave3D Rigging Success!

Screenshot of Luthien RunningWell, it took me a few nights, but I'm finally getting the hang of rigging models for animation in Shockwave3D. It's a lot more difficult than I thought it was going to be. I ended up rigging and re-rigging this model about a bazillion times. But I finally got it right with a fully-animated run cycle.

You can see this rigging test in action if you like. It lets you see Luthien running, and you can view her run cycle from pretty much any angle.

There are still some issues with the model and animation that I need to fix, but this is a workable placeholder. Things I'd like to fix are the leg showing through the dress on some frames, bringing the legs closer together for the run, and adding some animation to the hair to make it bounce. But I'm happy with it for now; I want to get back to making scenery and engine-level stuff.

Tuesday, February 07, 2006

GPU Max Texture Size Statistics

Ben over at RobotDuck has graciously provided the results of his research on GPU max texture sizes from a sample of about 700,000 players of one of his recent games. Here are the results:
texture sizeusers% ==% >=
16384x1638420.00%0.00%
4096x409617218722.84%22.84%
2048x204854159271.83%94.66%
1024x1024350854.65%99.31%
512x51234200.45% 99.77%
256x25615980.21%99.98%
128x12860.00%99.98%
64x6420.00%99.98%
?1500.02%
This sort of information is very useful for those of us developing Shockwave3D games for work and personal projects. I'm going to pass on this information to the dev team for our pirates project.

Monday, February 06, 2006

Guitar Hero Soundtrack

Someone's put together an iMix containing all the Guitar Hero songs (except for the Joan Jett offering, which isn't available on iTunes), in case you need to pick up any tracks to familiarize yourself with.

Note, though, that there are subtle differences between the original songs and the Guitar Hero versions. If you want to familiarize yourself with the Guitar Hero versions, you can listen to them for free on the Guitar Hero web site.

Character Rigging Tutorials

Coincidentally, while looking at some other 3D stuff for work, I found some good Lightwave character rigging tutorials that explain some bones deformation issues and good skeletal structure suggestions. Timely!

Luthien rigged, sorta

I worked on rigging Luthien for animation tonight. Here's some screenies (click for larger version):
Screenshot
I've managed to get motion out Lightwave just fine, but I'm having trouble with "gimbal lock" on some of the bones, so that I can't rotate them where I want them. I think this is because I'm being too stingy with bones in the character, so I'm going to give it another go tomorrow, but the proof of concept is there. If I had to, I could run with what I've got now.

Sunday, February 05, 2006

First Sacraments 3D tech demo available

Okay, tonight I got keyboard control, collision detection, and smart camera in place for an actual, honest-to-god tech demo. Yay.

Please let me know if you manage to walk through walls or experience other problems.

Saturday, February 04, 2006

Interesting Shockwave3D tidbit

I discovered today that the modelsUnderLoc command in Shockwave3D has an interesting and very useful quirk. By default, it doesn't return hits against models that have been removeFromWorld'ed. BUT, if you include such a model in the modelList parameter, it does return hits against it.

How is this useful? Well, imagine a game level where you want to have simplified collision detection (testing against boxes instead of the more complex geometry), but don't want to render it. You can construct simple geometry for testing against inside your game world, then remove it, and only use it for testing against. It's all in place, doesn't interfere with "normal" operation of picking in the 3D space, and lets you only test against the simplified geometry.

Another dev screenshot

The work I've been doing on a (potential) 3D remake of my console-style RPG Sacraments is really starting to look like I envisioned it. Check it out:
Screenshot thumb
(Click for larger version.)

Tonight, I added two new town tiles: a forest edger and a generic grass tile. Combined with the apothecary shop from last night, these tiles allowed me to test a walkaround with a pretty good idea of how a town in the game might look. Even better, it turns out that the 3D engine seems to be able to handle quite a bit of geometry gracefully. I was able to actually walk around the town without any performance issues. The test shot above is from a town scene that is 100 meters square - when you zoom out on the town to fit it all on the screen, you can't even see Luthien because she's too small to even be rendered.

This game is starting to look like it won't be that hard to put together after all.

Friday, February 03, 2006

Scenery test for 3D RPG

Now that I have a character modeled, I tinkered tonight with Lightwave to see what it would take to build scenery geometry. After some false starts, I managed to build a small shop for the Apothecary from Sacraments. I went for a kind of cartoony style, both because it's easier (and thus more likely I'd be able to actually finish a project with it) and because I think it would be a pretty cool look for the game. Here's Luthien standing in front of the Apothecary shop (click for larger version):
Screenshot of a building in the 3D world
This screenshot is taken from within the game engine, so it would actually look like that.

Thursday, February 02, 2006

Luthien model

Trying to bone up on my low-poly modeling skills, I made a low-polygon model of Luthien, a central character from my console-style RPG Sacraments. I'm pretty happy with how she turned out - much better than any of my other low-polygon models to date. (We'll see if she holds up when I rig her.)
Luthien model
(See larger versions here, here, and here.)

I've been tinkering with the idea of making a sequel/remake of Sacraments in 3D. It's starting to look easier than I thought it would be, although it will require a fair amount of artwork to get it done. This character took me pretty much all night, and I haven't rigged her or animated her yet, so we're looking at two nights for a fully rigged and animated model, probably. However, most of my art assets wouldn't need to be as detailed as this and wouldn't need to be animated, so it might be fairly practical.