AQWorlds
Artix Krieger
| Friday, February 7, 2025
The undead must be tragically low on deodorant.
If you enjoyed last week's daily AQW: Infinity progress posts, then... you must be crazy. And I like that about you. This week, we are going to have more animated GIFs and less words.
...well, slightly less words.
You know the deal. This page will be updated daily with the latest behind-the-scenes things happening in AdventureQuest Worlds: Infinity.
Our full-team meeting was pretty intense. Everyone is pushing to complete the game features and content for the next test.
Here is what everyone is up to...
"Hydra, how you doing?"
Nulgath sent in this freshly animated hydra this morning. We read the animation thread on Reddit and sort of liked the debate over the new animation vs the old. You probably do not know this, but I HAAAAATE Unity animation. I loved that old school 24 fps Flash animation... it felt like anime. So if Unity's ultra smooth, 240+ FPS animation just looks a little off to you, then know you are not alone. While the animators are using techniques to get that action and "pop" that our previous game's animation had, it is unmistakably different. I do appreciate that some people said they like it better. They said we were no longer limited by the lag and performance issues of Flash. This is true. The world definitely feels more alive when you walk around the game. The one thing that really matters to me... is that we did not hire some random 3rd party company in another country to re-animate our stuff. The same people who originally animated AQWorlds came on to this project and are here creating these new animations. I appreciate that a lot.
"OUCH! MY EYES!"
OK... so we are fixing this. Large monsters can have their hit flashes disabled. But if your eyes can handle looking at that atrocity of flashing... you will quickly notice that it is not the monster that is flashing, but the smoke cloud that appears when they die. This is because the flash effect is currently impacting all of the monster's sprites (art)... even the ones that are supposed to be invisible. So we are going to try solving this by tagging the parts of monsters that are supposed to flash when hit. Also, it will be possible to toggle off of the flash so it does not happen at all.
Oh, so last week Despair and I tried doing a multiplayer VTuber thing. It worked pretty good. Might be a fun to try doing a daily update like this. Is this something you would enjoy? What could possibly go wrong? In the GIF above, Despair is using one of the default avatars... as I write this, we are in voice chat looking at how to convert her character art (and the other team members).
In other random (and intentionally mysterious) news, it seems Kickstarter has no problem whatsoever with our video game doing the unusual thing I want to do. Which is great. Because, as my late Father often told me, "If you are going to mess up, you might as well mess up big." (Paraphrased). So, as of today, I am officially green-lighting the creation of an AQW Infinity Kickstarter. The only rule is that a sustainable Alpha needs to be ready to launch right after the Kickstarter ends (like we did with AQ3D.) That really only gives us two windows to do it... which is either Summer (which is too long to wait), or we do an absolutely stellar job in the next test (which I would prefer).... Spring Break. So the pressure is on. When do you think would be a better time to do it?
See you tomorrow.
Today was... Dialogger day!
Here is a secret behind-the-scenes peek at our cutscene/dialog editor in action....
Capt. Malcolm Reynolds: You think she'll hold together?
Zoë: She's torn up plenty, but she'll fly true.
Our dialog editor may not be pretty to look at, but it now allows the team to build anything-goes cutscenes in Infinity! When the cutscenes play in game, it will look normal... and not have all those weird bars and buttons all over the place.
I spent the day with Ghost & Tunik working on motion tweening and easing. We talked about easing in last week's post a bit. That is a way of controlling how something moves. Maybe it starts off fast and gets slower... or maybe it moves at a constant speed... or maybe it bounces? These are extremely important to creating good looking animated cutscenes. Flash had some pretty simple easing controls. We now have the ability to add as many as we want. Here is an example of three characters moving for exactly 1 second. The only thing different between them, is their easing curves. (Notice how the frogzard actually bounces until the 1 second ends. Hard to believe he is actually just moving in a straight line with a special ease curve.)
"Ease-y Zooming"
Easing has also now been added to the scaling objects. This allows Ghost to achieve what looks like a cinematic 3D zoom.
I have said this before... but what is absolutely wild about this, is it is not in Flash. The editor just saves some data stored in the database that we can edit in real-time. Which means we can change a cutscene in Infinity immediately, without needing to upload any new files nor restart the server. While animators like Ghost can still do special custom animations, this tool will let any dev made and editor cutscenes. The feature creep on this tool really did spiral out of control-- but ultimately, it was worth it.
This cutscene editor tool will allow us to do a lot of the things that made AQWorlds interesting and memorable.
NES = Nintendo Entertainment System.
This is personal news, but I am really excited to share it with you. As you may remember, last year I entered a retro game jam. One month to create a new 8-bit game for the NES. My entry was a cute multi-dimensional Pizza delivery game called Pizza Portals. It won the Best Game award. This week..... I was asked if the game could be featured as the Midwest Gaming Classic convention's ViG (Very Important Gamer) game! It is a huge honor. This means the convention will create physical boxed copies of Pizza Portals and give it to the attendees that get the ViG badge. So Pizza Portals is getting a limited run of actual carts made! I will be attending Midwest Gaming Classic this year-- and have a booth (Probably for Dungeons & DoomKnights). So if you can make it to Milwaukee and are into video games of all eras, would love to see you.
Combat stats are in the game! Immortal Joe already modified the Warrior, Rogue, Mage, and Healer to use the new stats. It needs some serious testing (...and balancing). I was asked if we could wait until Monster AI working to do our next major test. The guys are really excited about some ideas they have for boss monster combat. I told them they had my full support. We are going to need a little extra time to finish the quests and cutscenes in Bludrut too.
Also... for weird glitches like this...
See that little pop when it changes frames? The camera was not changing at the same time as the game objects. Bugs like this are the worst. 1.5 hours just to figure out why it was not all happening at the same time X_X.
Ghost, Tunik, and I spent another day on the dialog system. We added new features and fixed a ton of these little bugs. Hard to express how sincerely relieved I am that this is working. After armor & item conversion.... Cutscenes are the scariest part of this project. And it is now working. *knock on wood* It is dangerous to say those things until we actually do a live player test with them.
Throwback Thursday!
Wow, this was a blast from the past. The original AdventureQuest website.
Good times.
I remember talking with Warlic and trying figuring out how to build SoundFX. We used an umbrella to create a WOOSH sound which we used for the Fireball. He cracked ice and dinged it on glass to make the Ice sounds. It was just prior to that time that learned that Godzilla's roar in the movie was just a recording of someone opening the big metal gate to the movie studio. That was inspiring. I tried punching a piece of meat to make a hit sound FX. Not sure if we ever actually used that one, but from that moment on I called anything that sounded like that a "Meaty Thwack." Those original sounds were pretty special. Not that great sounding XD ...but special. Eventually the game saved up enough money to buy our first sound library. It was 8 or so CD-ROMs in a zippered black case. Back then, they mailed you stuff physically. You know sounds from this library intimately. They are used in almost every Artix Entertainment video game. The sound guys have had us buy a ton of SoundFX libraries since... but, you never forget your first. Jongaar has been experimenting with mixing some of those classic sounds in with new ones to make a nostalgic but modern blend. Of course making the sounds is only half of the task... the second half is actually putting them in the game! Which brings us to what we have been doing today....
... and some advanced map music stuff.
Warlic, Ghost, Tunik, and I spent a lot of today working on SoundFX & Music for cutscenes and maps. We ran into some unexpected complications. While adding music and soundFX to games is pretty easy these days, controlling the flow of managing dynamically loaded music & soundFX between cutsceens & maps is a worthy logic puzzle. For example, when you load into a map it should have a sound track. But what if we add a jukebox and want you to switch songs? No problem. We add a machine that you can click on and it can load a song from our server. Easy. But what if we want the music to change when you switch rooms? Ok... well, I guess we can assign a song to a room and then just load that song when you enter. But what if the loading takes too long and there is a long weird lag before the song plays? Ok, well, I guess we could pre-load all of the maps song when the map initially loads. OK, but what if I play a cutscene? Well, it could just continue playing whatever music is in the map. Eh, what if we want a custom song? Ok, we assign an optional song to the cutscene and it loads with the cutscene and plays. When the cutscene ends, it stops playing and tells the map to resume it's song. Sure....... but what if I have multiple songs in the cutscene? X_X OK, so we make a list of songs and load them all when the cutscene loads. Then we can just play them as we want. Fine. But what if I want a cutscene that loads, plays a custom song, and then when the cutscene ends, that new song just continues playing when you go back to the map. Huh? WHY WOULD YOU WANT TO DO THAT!? Because....
Alright, imagine you enter a creepy forest. The music track is ambient terror with wind and lightning. You walk a few rooms to the right.... and BEHOLD! A cutscene starts. A giant shadow creature springs forth from the ground. Intense battle music begins playing. You clench your weapon. The shadow creature roars! This is where the cutscene ends and you return to the map.... that battle music better still be playing here! Because if you go back to the ambient sound track, you lose the whole cinematic feel you been building up to.
...alright, you have a good point there. Loading the music and playing it is actually the easy part. Cleaning up the music from memory once it is no longer needed is the tricky part. Oh gosh, memory management. The game's audio manager does most of the heavy lifting. But some of some of the things we want to do create orphans. Those orphans can get stuck in memory and eventually crash the game. And we need a more elegant solution than Anakin Skywalker. (Boy this post went dark fast.) There are multiple correct answers. They are trying things while I am writing this. (Best guess: They are adding extra fields to the audio manager to be able to tell what something is and when it is time to clean it up.
That was a surprisingly accurate retelling of ONE of the issues we ran into today.
Another interesting challenge is the timing of soundFX in the cutscenes. Our cutscene system uses frames, but does not have a full animation timeline like Flash did. We can play animations though. So, maybe on Frame 3, your character throws a karate punch at unsuspecting board. Here is how the animation goes. Your fist flies forward, the punch lands, then you pull your hand back. Now, how do we add the meaty thwack sound at the moment your hand hits the board? We cannot put it at the start of the frame. That would be too early. Same problem at the end. One solution, is to add a delay timer to the sound. Not a perfect solution. But not bad! So we tell the cutscene to play the sound "Meaty Thwack" on frame 5 with a delay of 0.4 seconds. Now, what if we need multiple of the same sound to play on the frame? O_o Alright, we need the ability to add unlimited sounds to a frame, each with a delay. Great! What about panning? You know so you can move the audio between the right and left speaker. OK, fine. How about a volume adjuster? Wait, the player already sets the volume. Right. So this volume would need to be a % of the volume they set. And what about being able to stop certain sounds? You know, like looping ones only? OK, no problem.
And.... it sorta goes on like that for as many edge case scenarios as we can think of.
Unrelated, here are some skulls.
The second one has William Shakes-fear vibes.
A few things I really liked about today's audio work session all revolve around how the team has come together. The solutions came in fast. It was a supportive and safe environment. There was no heated debating, only questions and creative brainstorming to get to the best answers. The conversations were not negative "That cannot be done!"... they were forward thinking, "Imagine if we could do this!" This is the sort of team I have dreamed of being a part of. Legit honored to be allowed in the same room as those guys.
Around 2:30pm I met with Immortal Joe, Yorumi, and Eht for a quick update on stats. My jaw dropped when Eht showed me he made an entire website just to keep all the information about stats, combat formula, exp curves and other AQWorlds Infinity stuff organized in one place.
Until tomorrow, Battle on!
Happy Friday!
Started off the day with Dage & Zhoom at the gym. We got to hear Dage's story about his armored swords & axes team fights from the previous weekend. If you did not already know this, Dage's new hobby is wearing 60+ pound armor with a sword and shield and cage fighting other combatants. But this last weekend he fought in team vs team combat. It is pretty brutal. His team did well. But Dage ended up with a pretty bad knee injury.
The Infinity team continued working on their goals. Fridays are a production heavy. Perhaps that is instilled in us because we are so accustomed to working right up to the release on Fridays. Even if Infinity is not doing weekly releases... yet.
On Fridays, I also meet with the AdventureQuest 3D team and take care of any meetings that got pushed back. Today that also included some business paperwork, HeroMart stuff, Project Omni work, a local student looking for an internship, and then.... I received THE BEST surprise message.... it was from Warlic.
As you may know, Warlic created our lightweight launcher to let you play our web based games. When player support is sent bugs or issues from players, he is the one who fixes it. (Well, Captain Rhubarb does a lot too.) A recent bug resulted in him checking on the status of Ruffle-- a Rust based flash emulator. They have been working on Actionscript 3.0 compatibility for a long time... and the latest release is it looking really good for our games! O_O A rust based solution may allow AQWorlds and our other games to work inside a web browser once again. It could likely also allow us to publish platform specific games that we could put on Steam, Epic Games, and the Windows store. Not very good for mobile though. This news is only a few hours old, and it is extremely foolish for me to be posting this without testing. But... um, get ready to help us with some testing in the next week or two? A single person can do the work to set it up. This was a pretty crazy news to end a Friday on. Oh, I nearly forgot. If you are thinking, "Is it a good idea to put TWO versions of AQWorlds on steam at the same time?" Then the answer is an enthusiastic, YES. We can call one AQWorlds: Infinity and the other AQWorlds (The original Flash MMO) to make it super clear. I think other studios might have buried this news thinking that anything improving or future-proofing the original game would hurt the new one. But our goal is the preservation and future-proofing our games. Since AQWorlds: Infinity would be the clear (and only viable) choice for mobile... and also for anyone who wants 60fps+ and improved gameplay on PC, it makes perfect sense.
Question: Do you like the idea of putting both versions of the game up if we can? Has anyone else ever done anything like this? Do you think people will pick one of them or the other to be their "main"? Or do you think people will switch between them for different reasons? This is pretty weird, right?