We're transitioning the video creation duties from myself to Erik, and in the process of that we're having a few technical difficulties that are requiring some updates to his machine and so forth. So that's delayed the video for our progress report #9, but I wanted to go ahead and do a written update (and we have new screenshots) in the meantime.

Ideally we'll have the video ready sometime later this week, but no promises as yet. So what's new? Let's hit some of the cool new technical stuff -- skip down if you're not into that sort of thing.

Sprite DictionariesPreviously, the game used individual images in sequence for animations, instead of spritedictionaries (with texture offsets into a single image, in other words). This is consistent with AI War and Tidalis, and it has the advantage of being easy to update and easy to code to (and with SlimDX's wrapper of ISprite3DX, it was the only way to do sprites).

However, it has two disadvantages: first, being slower to load off disk, and second being more wasteful of VRAM and RAM, and thus minorly hurting performance if you have a lot of animations on different frames all onscreen at the same time. Now we're using sprite dictionaries, which I'm creating using a handy GDI+ helper program that I've been working on to let me manipulate AVWW-specific PNGs in various formats.

Proper Character Animation Offsets
This is another Big Deal thing that I did with the GDI+ helper program I'm talking about. The problem is a bit tough to explain, but bear with me. I'm rendering characters such as Darrell in Poser, and using three different cameras to do so; one for front, one for back, and one for the side (which gets mirrored in-game).

Each camera is at an arbitrary distance from the character, but showing the whole character, andthe characters are rendered very large, at 400+ pixels instead of 128px like they are shown in-game. Then I have to shrink each frame down to 128px in another program, and then I've got my animation frames. In the past, I had been doing a simple Trim operation in a Photoshop script, and then scaling them down to 128px by height.

Problem? That makes every frame of the animation exactly centered, and exactly 128px high from the bottom of the character's feet to the top of their head. But your feet rise and fall as you run, and your head bobs up and down. For that matter, your weight shifts from left to right, and thus the overall sprite is not perfectly centered in each frame (if any of them).

That's what should have been happening, and what I was exporting from Poser, but my Photoshop script was normalizing it all out so that the animations looked subtly wrong in-game. Using my GDI+ program, I've now got an automated way of analyzing an entire batch of frames from one camera for one character and using the resulting data to fit the character in 128px square roughly centered and with the proper head bobbing, feet rising, and weight shifting. The difference is dramatic. I look forward to showing you that in the video when we get that out.

More Character Animation Frames, And Animated Shadows
Previously we only had 12 frames per side on each character, which was still a total of 39 frames per character (including the three standing poses). And we only had one static shadow image. Why? Because it took long enough to export 39 frames from Poser, and because I was worried about RAM usage and disk loading times in AI War, when all those images were separate.

By adding the capability to have sprite dictionaries, this also let me feel comfortable with upping it from 12 to 30 frames per side per character (so 93 frames in all per character), as well as adding in animated and directional shadows (so another 93 frames for the shadows, too).

The result is that not only do the characters now look correct (see above), they also look wonderfully fluid in their movement, as do their shadows. At a full 60fps or higher, it really looks particularly nice. I also figured out that I can just render a "movie" in Poser to a series of PNGs, which saves me from (d'oh) exporting each frame one by one to the Queue Manager. Poser is new to me, but I'm getting a much better handle on it lately now that I'm really sitting down with it more.

In-Game Shadow Skewing
Know how the shadows in the game come out of the back of things and skew off to the upper left? Previously, that was just a flat prerendered image. That had two major disadvantages: first of all, it takes up an absolutely enormous amount of image space, and thus uses way too much RAM. Secondly, because of the way I was handling that via yet another automated Photoshop script, it didn't always look as good as it could (big and small objects tended to fade differently over distance, for example).

Now I've re-rendered all the shadow images in the game using the same Photoshop script of mine, but not bent to the side. The AVWW engine now has the capability to skew sprites, which is new to our engine, and it uses that for the shadows to get an effect that is very similar to what we had before, but way more friendly to RAM, nicer looking, and compatible with even older cards that don't support textures larger than 1024 in size (no guarantees on performance on a card that old, but it will at least work).

The other cool thing I did with these new shadow images was that I shrunk them all by 60% in their base images, so that they fit inside the same size image as their original source -- so if Darrell is 128px square, his shadow will fit inside that now, too. Previously, his shadow was in a 512px square, which is why there was no way I was going to try animating that -- too much RAM! The game scales the shadows back up so that they look normal, and there's no quality loss at all because of the fact that... it's a shadow! It's supposed to look diffuse and fuzzy at the edges. The fuzzier the better, actually, given the style of shadows we're showing here.

New Character: DawnSo we finally have a new character in addition to Darrell and the Neutral Skelebot! She's the first woman in the game, but there will be tons more character sprites for players to choosefrom, and to encounter as NPCs.

My private goal from a while back had been 60 such sprites, but I was iffy if I could hit that because Darrell took me about 6 hours to create (when I was still learning so much about Poser). Now, with all the various process improvements I've made in the last two weeks, and the automation tools I've added via my GDI+ helper program, I estimate that each character will only take about 30 minutes from start to finish. So 60 character sprites is looking quite feasible, and maybe I can even exceed that; that would be nice!

Re-Rendered Characters
Because of the need to have full 30 frames on all the other characters and monsters, all of the existing ones have been re-rendered. I also improved their visual look quite a bit when it comes to the skelebots in particular. Now they have one arm and leg larger than the other, for instance, so that you can actually track them visually while they are moving.

Before it looked like their animation was half the length it was, because having their left or right legs forward lookedfar too much the same! Now they look a bit more stylized, as well as just much higher quality animated in general; you'll like the video.

Weather!
The game now has a lot of different kinds of weather. In non-windstorm times, we have: sunny (well, we always had that), light snow (in the snow areas, mainly), light rain (the junkyards are a great place to find that, but also other places have a small chance of having it), and blowing sand (in the desert, but not always).
During windstorms (every four tiles as you move, see the counter in the upper right of the world map), you get the following kinds of weather: snowstorm (in any of the snow areas), rainstorm (in most sunny or light rain areas), sandstorm (always the desert), and firestorm (always the lava flats).

Windstorms are such a huge part of the game, but now is the first time we've had an actual visual component to them. Plus just having calmer weather at other random times is a favorite thing of mine to do, anyway. We obviously don't have any weather in space in AI War, but that was something we did a lot of in Tidalis.

Main Menu Visual Improvements
Until now, we've only had a basic main menu that was just a rip from AI War with slightly different graphics. That was always to be temporary, but it's surprising how much more polished the game suddenly feels by having a proper main menu (including story scroll). That scrolling story from the main menu is now included in the main AVWW page, by the way.
The main menu shows as a background a randomly-created chunk of world, which is pretty cool to see the variety right even in the main menu every time you load up the game.

Related to this, we also now have the ability to create and load multiple worlds via the interface, which is quite nice. There's no limit on the number of worlds you can create, but it will show 10 per page.

New Objects, New Hands On DeckWe've also got a ton of new objects in the game, although most of them aren't being seeded in yet. I think 9 miscellaneous objects are in, then we have 9 flower sprites of various sorts, and we have something like 33 new vehicles, including some futuristic ones from the ice age time period. All broken, of course.

Erik, our PR guy, is also now helping out with some of the actual game development work, and so that's helping me out in a major way to be able to do more art faster, and then having him "wire them up" to have proper collision boxes and other metadata through a handy in-game tool we created for that purpose. So that's been a big help for our creation process, although we're just getting started with that.

Continued Below...

Logged

Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Six New Enemies!
We are finally getting into adding more enemies, and we added a ton of them: bat, fire bat, ice bat, sniper skelebot, esper, and desert burrower.

Bat, Fire Bat, and Ice Bat
These all have the same basic movement characteristics: they fly, they swoop and dodge, and tend to flock about you in swarms. Fighting them is a completely different experience from fighting the skelebots.

The regular bats are bad enough, but the fire bats set you on fire for about five seconds (which does damage over time -- and stacks from each bat that hits you), and the ice bats freeze you for about five seconds (which slows you down slightly -- and again stacks from each bat that hits you, which can all but immobilize you, though you can still fight).

An Aside: Region Level Gating
The bats also brings up the fact that we have level gating for various "population patterns" of enemies. Each chunk that is generated is assigned a population pattern which includes one or more enemy types in various concentrations and in various numbers relative to the size of the chunk. Some of these are demonstrably harder to deal with, no matter what your level is versus the other enemies.

So, the game introduces things to you gradually -- everything, really. The harder population patterns, the more complex crafting materials, and so on, aren't available in the lower-level regions. Every few levels you go up, more and more stuff is appearing around you. Of course, you can strike out into higher-level regions while you are still low-level, that's just pretty hard.

Skelebot Sniper
The regular skelebot is fast and a melee fighter, as anyone following this game knows (tired of skelebots much? Not more than me), but the sniper variant is slower and doesn't chase you at all. Instead of you kiting it, it kites you, intentionally keeping its distance and firing fireballs at you.

Sure, it's just a recolor, but the behavior is completely different and running into yellow and red skelebots at once is pretty interesting. In general, my goal with this game is to have a ton of variety by having a lot of base concepts (bats, skelebots, etc) as well as a good number of variants of each thing. People who are familiar with AI War and how crazy huge it is will know just what I mean.

Esper
The esper is a magical being that hardly moves at all, and which fires quite strong lightning attacks at you. Your own magic attacks are extremely weak against it, so you'll need to resort to melee weapons, firearms, or other physical types of attacks to take these out.

In motion, these look particularly cool. Both these and the fire bats also act as light sources, which makes battles with them in the dark forest particularly exciting-looking!

Desert Burrower
These were just added today, so we don't have any screenshots of them yet, but they are nearly-invincible enemies that live only in the desert and which roam around at high speeds underground. They don't chase you at all, but if you come too close to them they will strike out at you for substantial damage. The desert really is a dangerous place!

Magic is ineffective against these as well but you can strike at them with melee attacks and kill them if you dare to get close enough.

New Name Dictionaries!

We now have new sets of names for Darrell, Dawn, and the Neutral Skelebot. There are literally a few million possible combinations of first and last names each.

And that's only with three characters; by the time we have 60-some sprites, we'll have north of 50 million possible unique character names, I think -- that's enough that you'll likely never have two characters named the same thing for as long as you play!

Lots More Coming Up!

We're in progress on melee attacks, on a new and awesome-looking HUD graphics set (based on the Necromancer GUI skin for Unity), and we've got some very cool things up our sleeves for ground-level regions and underground regions. After that we'll be hitting a lot more crafting materials, weapons, etc, and then I'll finally be circling back around to more interiors.

It's exciting times -- things really are flying now. Keith has been sick and busy with his other job, which has slowed him down, and all the work with redoing all the shadows and all the characters and enemies in the game really slowed me down on the new content, but even so this has been a huge number of leaps forward in the last two weeks. I also finally sat down and learned how to do rigging in Poser, and the bat animation (only part of which is shown above) is the result. I'm quite excited by the possibilities that this simple new skill opens up!

Anyway, stay tuned for our #9 video hopefully later this week or else definitely next week if we run late. Enjoy!

Logged

Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

You were right about this being a large update. It's nice to see a new character and new enemies. The main menu looks really nice, I particularly like the updates button, "Found Updates, 18 Official 3 Beta."

You were right about this being a large update. It's nice to see a new character and new enemies. The main menu looks really nice, I particularly like the updates button, "Found Updates, 18 Official 3 Beta."

Heh, yea. AVWW started as a copy of the AIW codebase. I made shamelessly minimal changes at first It drove Chris batty until he just gutted out the rest of the AIW-specific stuff. But the updater is still looking at the AIW url.

Logged

Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Will the sprite dictionary also be used for the animated effects? (if so i do hope you release your gdi tool to align the single sprite png's... ;p)

I forgot to mention, but yes, all the sprites in the game are now in sprite dictionaries -- it saves even more RAM, VRAM and texture swaps with them, since usually you have many in a row that are at various stages of animation. Bear in mind I'm talking here about the individual particles exported from particle illusion that are used to make compound effects, not the actual compound effects themselves, of course. The main component of the fireball effect, with all its frames, is attached as one example (it's a two-image sprite dictionary).

I don't mind at all sharing the tool and the code for it, I've thought about doing just that, but the main problem is that it's really specific to my needs at the moment; it only does dictionaries in powers of two images, and it prefers to do two smaller images (say, two 512x512 images) instead of one larger image (one 1024x1024 image) when it can, since the total number of pixels quadruples each time you go up a size, and that wastes more RAM and disk space, ultimately. This whole thing also only works with PNGs, because that's all I needed; it's not a general-purpose tool. It also requires .NET 2.0.

Anyway, I've attached both the executable and the source code in two attachments here, so you're welcome to them if you want. A few other notes:

1. Min Combine Size sets the minimum size of dictionary frames it will use. So if your frames are actually 30px large at the largest, but you want them centered in 64px for some reason (I had to do this with the side-facing bat poses, for instance), you can set 64px and then the frame sizes will match those of your other stances, for instance.

2. To do the dictionary, hit Process Combine once you've put in a directory (when you click the textbox, it automatically pastes from the clipboard, to save some keystrokes). It's nondestructive, in that it will put in some new images based on your existing PNGs.

3. Scale Character will scale and entire folder larger sprites down to the size set in the Scale To textbox. It analyzes the entire non-transparent width/height of all the sprites in that folder when determining what offsets to place each one at in the reduced images. That's what I was talking about above for the characters, for instance. This is a destructive process -- it alters your existing images, so make sure you have a backup before you do this! I always run it on a secondary folder I've created just for that purpose.

4. Process Rename is what my original function of this program was, and it just looks in a folder and renames all the files to be FolderName.png, FolderName2.png, FolderName3.png, etc. This is handy when converting from the number format from one program (they are all different) to the specific format I was using before I started doing sprite dictionaries (thus making this no longer really needed).

5. Process Duplicate is identical to Process Rename, except that it also duplicates all of the frames in a series except the first and last, in reverse order. So if you have frames 01234556789, and really you need that to loop in a specific fashion in a dictionary, you can use Process duplicate and not only will it do what Process Rename does, but it will also duplicate things so that your sequence is 012345678987654321, and then it's ready to loop again at 0 seamlessly.

So hope that's of some help, but bear in mind it's not a general-purpose tool at the moment (though the source code is there, so folks can do with that what they will).

wow, looks really cool ^^I especially like the new monsters. I always enjoy having a huge amount of different monsters to fight in a game. I've seen plenty of games where there are only a few of different enemy types and you have to fight "stronger versions" of them once you get higher lvl. The monsters appearances and skills are exactly the same, they just have a slightly different name and a somewhat higher lvl. It's allright to have that if there are still lots of different enemies, but with only a few different enemies it gets boring in the end.I know 2 mmo's that are the complete opposites of eachother on this matter. Rappelz for example, is the one that gets boring after a while. They got stronger versions of the stronger versions, champion monsters, elite monsters, dungeon monsters, etc lol.Atlantica online is the exact opposite. They literally got hundreds of different monsters, with a lot of different skills as well. That alone is reason enough for me to just keep playing and reach the lvl cap lol.I hope AVWW will have a big variety like that as well. Not that I wouldn't play it otherwise coz it looks awesome from what I've seen so far, so no pressure or anything But still, variety in games is what keeps me playing and make me addicted. Wouldn't be the first time I called school and now my work to tell them that I'm "not feeling well" ....