ill
   

A Timelord's Travel In Thedas | Alazander's Blog | Baldur's Gate II Redux | Community Contest | Creations of AmstradHero | Dark Sun Glare Blog | Ossian Studios | The Sanctum | RP Singh

2016 : Aug | Sep | Nov | Dec
2014 : Jan | Feb | Mar | Apr | May | June | July | Aug | Sep
2013 :
Jan | Feb | Mar | Apr | May | June | July | Aug | Sep | Oct | Nov | Dec
2012 :
Jan | Feb | Mar | Apr | May | June | July | Aug | Sep | Oct | Nov | Dec
2011 :
Jan | Feb | Mar | Apr | May | June | July | Aug | Sep | Oct | Nov | Dec
2010 :
Jan | Feb | Mar | Apr | May | June | July | Aug | Sep | Oct | Nov | Dec
2007 :
Jan | Feb | Mar | Apr | May | June
2006 :
Jan | Feb | Mar | Apr | May | June | Oct | Nov | Dec
2005 : Aug | Sep | Oct | Nov | Dec

 

2/28/10 -Sunday: VOICE ACTING

Right, so voice acting... Not so easy, it turns out :)

First and foremost, I sifted the WIKI for information on all things voice acting, and came across this page. There's also another page on how to prepare the text to send out for auditions. They even included some SQL statements to generate a .csv file that includes the text along with the ID's the system needs to fully integrate them into the... system... I may actually write a Ruby or Python script to automate this some more at some point. Why one of those languages? No reason, except I want to just increase the array of programming languages I know.

Anyway, once I was done reading through those pages, I started out by grabbing my logitech headset/mic combo (first mistake), and began to record some lines using Audacity. These particular lines were for the big cutscene I had been working on 2 weeks ago. I just wanted to get a feel for things, so I just chose the first couple of lines. After a bunch of tests, here are some notes:

  • All of the voice overs were very low in volume starting out. I could barely hear them while the cutscene ran. After some seaching around, I figured out how to raise the volume.
  • I dont' think my headset/mic combo thing is going to cut it. I don't have experience with these types of things, but whenever I raise the volume, I hear a little bit of a static noise when the voice over is played. Nothing big, but it just seems... weird... I will have to sift the audio forums for some advice.
  • Some things that I have written, well, they just sound outright ridiculous when read out loud :) My fiance was trying to sleep, and was listening to me do take after take, trying to get things right. Finally, she said something along the lines, "Listen, babe, that just doesn't sound right. Just cut it out of the dialog". She was 100% correct.
  • The last issue is that some parts, mostly in the beginning, there is just too much time in between the VO. It was fine when text was actually displaying on the screen, but now, it just doesn't feel right. It's not that big of a deal, because I already came up with some extra things to fit in.

So overall, it was definitely a learning experience. I have a bit to go, but I definitely have the fundamentals down, and that is a good thing. Tomorrow, I'll be doing a lot more research into actual mics and whatnot. Doesn't make sense to keep recording with my old logitcech mic/headset, so I will spend my downtime doing a little more polishing, as well as designing the next level of the game.

Till tomorrow...

2/27/10 -Saturday: TONS OF POLISHING

These past few days have been all about polish, and little else. Here's what I've been doing, at a glance:

  • Adding a ton of props to existing levels, to flesh things out a bit.
  • Fleshing out some dialogue, giving the PC more choices.
  • Adding flavor dialogue to minor npcs.
  • Fixing up some minor bugs in the Bonds of Battle system.
  • Added more chances to gain/lose approval with party members.
  • RE-working how things work when enemies surrender to you.
  • Other spoilerish type things.

All in all, things are looking very good at the moment. Of course, every time I play through the intro, I find more things to fix, but that's a good thing. I'm not going to go crazy, but I really want thngs to be polished before moving on to the next section of the game.

As of now, I have about 6 things in my notebook, but only 1 of them are things I really need to fix. Once I fix that tomorrow, I have 3 choices...

1) Fix up the other 5 or so issues
2) Start looking into getting VO into the game
3) Start the area design for the next area of the game

Most likely, it will be #2. Only reason why it would be #3 is because sometimes I need a change of scenery, and that time is slowly creeping up on me. We'll see...

Till tomorrow...

2/22/10 -Monday: IT'S THE LITTLE THINGS

Lately, things have just been coming together with this game. I'm knocking out complex cutscenes during the week, adding in custom abilities, and writing a ton of dialog. In short, I'm feeling very confident about things at the moment.

Yesterday, was more of the same, with regards to putting all the pieces together. One problem that cropped up yesterday was an issue with trying to move non-party member creatures between areas (essentially transitions). I assumed that if the areas were part of the same area list, it was possible. After sifting through various area transition functions, I posted a thread on the scripting forums, and was pointed in the right direction. The trick is to add the creature to your party before the transition, then remove them afterwards.

There was another thread on the scripting forums that had to do with friendly allies not attacking hostiles after a while, sort of like the issue I was having with my mid-scale fight earlier. Well, after a bunch of back and forths between some community members and a Bioware dev (Craig Graff), a solution was discovered. Essentially, it seems that when creatures lose sight of an enemy (perhaps after said enemy is killed), their threat table (essentially the thing that tells them who is threatening them, and who they should attack) wasn't being updated properly. Once I added the solution to my scripts, the problem was gone. Glad I don't have to deal with allies and/or hostiles standing around, do nothing! Props to community member Magic for the fix.

Speaking of the scripting forum, I have to say, it's really nice to have the amount of developer support that we do. I can't say the same thing for the other toolset forums... But yeah, it's not out of the ordinary for Craig Graff to answer community scripting questions on the weekend, which is really nice. I hope at some point, we get the same support for the other forums, especially the audio one. We need answers, dammit!

Tonight is going to be an easy one for me. I'm just going to pull out my notebook and go through everything I have from start to finish, compile a list of bugs/features, and just work off that for the next few days. Because once this is done, it's on to the next huge sequence of the game, which will start off with a little area design...

Till tomorrow...

2/20/10 -Saturday: PUTTING THE PIECES TOGETHER

So today, I spent the majority of my development time putting the pieces together. Turns out, it was a very involved process. First thing I tackled was this bug where anytime I would transition from a house into an exterior area, I would always end up at the coordinates 0,0,0. This was a known bug for a few months, but since I wasn't really doing a lot of testing with transitioning out of the house, I just put it on the backburner. After about 20 minutes of work, I realized that I had inproperly assigned a tag to the transition destination waypoint. Instead of putting the value in the tag field, I put it in the name field. Oops...

Next, I decided to mess with area lists. In short, those allow multiple areas to be loaded up in memory at the same time, so that when you do transition, there is no loading screen. Obviously, the trade off is that the initial load of the area list will be a little longer (well, I assume as much anyway, didn't notice much), as well as some other things that you can read about in the link I provided. For whatever reason, while I didn't think it would be difficult, putting together one took like literally, 2 minutes :) I just defined a new one, then assigned the areas to it, and poof, it was done.

I was also having some issues with some custom potions. At the moment, I just created some new potion templates, that mirror what the existing poultice system is doing. Because of this, even thought they show the correct name while in inventory, when you use them, or check the description, it still shows the default poultice stuff. I'll get around to changing that at some point, just not right now. What was irritating the hell out of me was that when I started each game, even though I could see them in my inventory, I couldn't use them. Turns out, if put them in the inventory of a creature template, they weren't usable. As soon as I dynamically spawned them in one of my module initialization scripts, everything was fine. Weird...

Overall, things have been connected up more or less correctly. I can start the game, and run through everything to the final cutscene, with little issues. There's a lot of work that needs to be done however. More ambient conversations, more journal entries, and most of all, I need to properly jump creatures across areas. Certain conversations that were working fine during my tests (where I would supply the area with all the creatures taking place in it) were acting up when these creatures weren't in the specific area. I'm sure it's something small, but I am too tired to look into it at the moment.

Tomorrow will be more of the same. If I am lucky, I may start the VO process. Here's hoping.

Oh, and before I forget, a group a people have started a Dragon Age Podcast, much like the existing NWN Podcast. It's always nice to see the community doing things like this, and I really hope it grows to become something special.

Till tomorrow...

2/19/10 -Friday: AND... CUT... THAT'S A WRAP, PEOPLE!

As the title suggests, I am finally finished with all the shots I need for this cutscene. I should stress the word, shots, because I am still going to have to go on the editing floor to add the VO and other sounds effects. But, later for that. I'm just damn happy to be done with it all!

The last shot actually ended up being extremely easy, as were the corresponding animations and visual effects. The only thing that is extremely annoying is that the longer a cutscene gets, the more of a resource hog it becomes. What this means is, if I want to edit something at the 3 minute and 3 second mark, it may take like 5 seconds for the editor to recognize what I clicked on. It may also have to do with the amount of actors/VFX's in the scene.

Tomorrow, I will do a small touch up on some things in the scene, and then move on the scripting projects I alluded to yesterday. Plus, it's good to do different things every once in a while. I don't want o get burned out just doing one aspect of module building.

Till tomorrow...

2/18/10 -Thursday: 1 POTENTIAL SHOT TO GO

I'll keep this short, as I have a little bit of a headache, most likely due to not getting enough sleep. I worked through the pain to finish up the shot I started last night. I'm still debating (surprise, surprise!) on how to do the last shot. I was going to have particular scene occur, sort of taking the decision out of the hands of the PC. Instead, I decided to move that scene further in the story, and actually allow the PC to manipulate it a bit.

So, I can potentially end the scene right here, which would involved chopping up the music track that is used, using Audacity. Or, I could try to pad on another 20 seconds. I'm leaning towards ending things here, but that may because the headache :) So, I'll sleep on it.

Even though I am behind schedule (not that I entirely expected to make it), I'm really happy I was able to pull off so much this week. Usually, I would leave complex, time consuming cutscenes for the weekends, and knock out smaller scripting things during the week. What this means is, this weekend, it's going to be one huge scripting orgy! I need to:

  • Implement the custom potions from my earlier games
  • Implement custom codex's (and find out how to get rid of superfluous ones from Dragon Age)
  • Tweak an existing fight
  • Glue all the small pieces that encompass this opening sequence together
  • Probably other things I am forgetting due to my headache

Let's not forget this little VO that I will have to do as well... Besides the VO, eveything else is pretty easy, so it should be an pretty easy going weekend, development wise.

Till tomorrow...

2/17/10 -Wednesday: SLIGHTLY BEHIND SCHEDULE

So, I fell a little behind schedule today. I spent at least an hour putting together a particular segment of the cutscene, and after I watched it the entire scene as a whole, being the perfectionist that I am, I ended up scrapping the work and going with something else. These things happen, so I wasn't too distressed. Oddly enough, the re-imagining of the segment took a lot less time than the first iteration. All I have to do is add in the corresponding animations, and I can call it a wrap...

...Then I can finally move on to the final shot. This shot should be very easy, as there is nothing to it. I expect to finish that up tomorrow night, then just go through the entire cutscene and fix up little things here and there. I definitely have to clean up some of the dialogue, because some of the stuff that sounded okay written sounds pretty silly when spoken out loud. Speaking of which, I totally didn't add in the VO work in my estimation of how long this would take. Oops! I'll prolly leave that for the weekend, as it's going to involve the actual recording, then learning how to get it into the game, which I am sure isn't too easy (is anything ever easy!). Even still, it feels good to have come so far with the scene.

Till tomorrow...

P.S. Even though I didn't catch the early train, I still surprised myself by getting a lot of work done tonight. Seems like my body is getting used to things.

2/16/10 -Tuesday: I SURPRISED EVEN MYSELF!

So, when I laid out my schedule for the week yesterday, even I didn't believe it :) I mean, I had good intentions, but inevitably, something always comes up. Well, tonight was different. I actually got home early, and wasn't distracted at all. I just go to work.

For those that don't know, I commute to Manhattan every day, which in total, is about a little over 2 hours, each way. So, I essentially lose 4+ hours out of my day. Now, I did this the entire time I worked on The Coming & Cry The Beloved, the difference being, I had a laptop... Not this time around.

Anyway, at work, I am currently learning the ins and outs of the the programming language, Ruby, and the web framework, Ruby on Rails. I am a Java man myself, but at my level, it really just comes down to syntax at this point. So, I spent the entire day installing the neccessary things, setting up a plugin for Eclipse, etc. I'm still attempting to start the server of the application that I will be working on, but I know whatever the issue is, I will figure it out tomorrow morning. Well, turns out, it was snowing pretty heavy in my hometown today, so people on my team were suggesting that I get out a little early, just in case. Who am I to turn that down?! Plus, the Ruby work I was doing didn't have to be finished at the moment.

It's amazing really. I have been on average, catching the 6:45 train, which gets me home around 8:30. Today, I caught the 5:30, which happens to be an express, and it arrive at 7:00. I know an hour and a half isn't that much of a difference, but man, after a long day of work, that time counts! After eating, and reading a bit of my new Game Informer Magazine, I was all ready to go.

I got right back into the cutscene, and started with adding some more actors that will be needed. Then, I setup some more camera angles, to correspond with the dialogue I wrotre last night. Then, I brainstormed while listening to the cutscene music, for at least 20 minutes. As always, some new ideas came to me, and I was able to incorporate them no problem. I then began to write the dialogue for the next segments of the scene.

Tomorrow, I will start getting in the appropriate animations for the next scene, as well as some more camera angles. Hopefully, tomorrow goes just as good as tonight, and if so, I will actually be on schedule. What a concept!

Till tomorrow...

2/15/10 -Monday: I'M GETTING THERE.

First and foremost, I have to say, this was a very productive, extended weekend. I set a goal on Friday night that I was going to accomplish a lot, and I did just that. Hopefully, I can keep this going. Plus, I expect to be able to start working from home at least one day a week soon, which is always good. Saves me 4 hours of commuting. Ah, so very nice to be a programmer for a living sometimes... All I really need is a computer at home, a way to connect to my computer at work, and I'm good.

With regards to the cutscene I've been working on for the past 2 days, well, it's really coming along now. I have a little more than 2 minutes done, and about another 2 minutes to go. I was debating how I was going to do a few camera shots today, so I ended the night just writing some more of the narration for the scene. Another thing that popped up while integrating the narration into the scene was how it was going to sync up with the music. I was already thinking about syncing issues between the music and the camera angles, and all of a sudden, the narration/VO was thrown into the mix. It wasn't a big deal, just something else to think about.

If I'm lucky, I can get a nice chunk done tomorrow, and then finish things up on Wednesday. Once that is done, then I will go back and clean up a lot of things in this intro sequence. A lot of my testing has been faked, as in, just jumping into the game in the middle of the scene and whatnot. Now, I'll have to go from start to finish, make sure everything is connected properly, and of course, fix up as many bugs as I can. I expct this to take me to Friday.

Next weekend, I hope to begin the next section of the adventure. This next section will be very story heavy, with the PC meeting with various important people. The first thing I will have to tackle however is the area design. Once that is done, a lot of my work will be consisting of writing dialogue, and creating short cutscenes. And music... I will be adding a ton of new custom music. For those keeping track, I am at 5 tracks so far, and in this next section of the game, I will be adding at least 4 more. But really, I am excited about this next section because, this is where the player really starts to get a feel for the game, the story, and in general, things to come.

Till tomorrow...

2/14/10 -Sunday: ...AND SO IT BEGINS...

Well, today I finally got started on that mammoth of a cutscene. It's funny, even when you mentally story board things, even when you already know what's supposed to happen, things can still change. As soon as I started laying things out for the scene, while listening to the music, an idea hit me. I immediately scrambled to see if an appropriate prop was available, using Adinos' DATool. Once I found what I was looking for, I added it to the scene, added the appropriate visual effects, and was on my way.

I then created the dialogue file that will be used to display the subtitles. While I usually use self deprecating remarks about my skills as a writer, it's not all bad. Still, I'll definitely have to get an editor at some point, because I'm not that good :) This scene will have VO as well, but I will obviously leave that until the end.

So, I only got about 30 seconds of the scene done, but what I have is really looking good, in my opinion. Everything is in sync with the music, I'm loving the camera angles, and the mood is just how I originally imagined it.

Till tomorrow...

2/13/10 -Saturday: A VERY PRODUCTIVE DAY!

So, as it should be on the weekends, I got a lot of work done today. While I didn't get started to late in the afternoon, I really hit my stride, and was able to put in like 6 hours. This is exactly what I needed. And to think, I still have another 2 days (though admittingly, I won't get as much done tomorrow as it's Valentine's Day).

So as planned, I began work on a new cutscene. Man, let me tell you... Designing cutscenes is painstakingly slow! I pretty much spent the entire night working on a single, 30 second scene. First, there were the logistics. All 20 actors had to be placed in just the right spots. The camera shots themselves weren't that hard actually, but I did have to keep moving the actors around to get exactly what I wanted in each shot. And of course, all of this had to be in sync with the custom music that plays throughout the scene.

The most time consuming aspect was definitely the animations. Getting 20 actors to use different animations at different times in order to have some semblance of realism is definitely hard than it seems. In terms of finding the animations you want, I would definitely be pulling more hair out of my head if I didn't have Beerfish's Excel Utilities. In particular, there is a spreadsheet that has a description for all the animations files, since the filenames themselves aren't too intuitive. Definitely a life saver!

Tomorrow, I will put the finishing touches on some animations, and call it a wrap. Then, I'll move on to the even bigger cutscene I've mentioned many times already. Just thinking about it is a little daunting, but once I get into the zone, I should be fine. Now off to bed with me. I think I'll put the track that plays during the cutscene on repeat, for added measure :)

Till tomorrow...

2/12/10 -Friday: MORE SCRIPTING

Tonight marks the beginning of a 3 day weekend! I intend on getting a ton of stuff done. No, seriously! No distractions this time!

I started off the night by refactoring a lot of the code that I had written last night for the new Unsion Ability. I then added a new effect to the ability, to make it a little more powerful. Once that was done, I checked in the script, and decided to move on to yet another small scripting project.

So, have any of you ever been fighting alongside party members and other neutral allies? Have you ever been fighting an enemy, and for whatever reason, if the neutral ally lands the last blow, you don't get the XP? Well, I have, and it's annoying. So, I whipped up some scripts to make sure that as long as you have done damage to the enemy, if the npc gets the last hit, you'll still get the XP. I'm actually just using the same marking code that I use in the Bonds of Battle system. Essentially, whenever a party member lands a hit on an enemy, I flag/mark them as having damaged the enemy. When the enemy is killed, if the killer is not a party member, I check to see if any party members marked the enemy, and if so, I give out XP. It may change somehow down the road, like possibly only giving out XP if a party member did more than 50% of the damage, but for the time being, I'll leave it as it is.

Tomorrow, I essentially have the entire day to start working on the cutscenes I so desperately wanted to start last weekend. While I am definitely enjoying designing new abilities and whatnot, I am still very excited about moving the story forward. As always, I have had these particular scenes in my head for some years now. Time to get a move on!

Till tomorrow...

2/11/10 -Thursday: FIRST CUSTOM UNISON ABILITY DONE!

So, I am happy to say that I have finished work on the first (of many!) all new Unison Ability. As I stated in my last journal entry, I had to mull over how I was going to implement it. Was I going to directly modify core scripts? Was I going to override the abilities I needed in ABI_base.xls and point them to my new scripts? Turns out, I chose the latter.

The implementation, while only taking a few hours, had some minor twists and turns. First off, this can be defined as a Timed Unison Ability, meaning that you must have the 2 participating party members pull off the talents within a short window. My initial decision was to use local variables, similiar to what I did when I designed Whirlwind Heal for my old games. Essentially, when Clopon cast heal on Aramus, I would set a local int on him for say, 3 seconds. If Aramus performed a whirlwind attack within those 3 seconds (I obviously just checked to see if the int was still set), then the ability would be activated. I also did the reverse, in the case that Aramus performed the whirlwind attack before Clopon cast heal on him.

The difference in Dragon Age is that there is no DelayCommand function that I can use. There is a DelayEvent function instead, that I can use to pass an event and some parameters off to any object I want. So I ended up creating my own event, called EVENT_TYPE_SET_VARIABLE. Essentially, the event is sent to an object with a bunch of event parameters used to set the local variable. Nothing too fancy. In the end, not needed, however...

...Because I realized that whenever many abilities are used, the effect that is applied on the target already has a bunch of parameters stored on it. Better yet, for my purposes, the talent's affects are only applied for a duration, and that duration is the exact window I need to determine if the Unison Ability will be activated. More specifically, whenever one party member uses the specific talent on an enemy, the effect will only last a short time, and a reference to the party member will be saved as a parameter on the effect. Now, when the next party member uses their talent on the enemy, I just check to see if the effect is still on them, and if the referenced object on the effect is the first party member. If so, then the ability is activated. It's only about 40 lines of code in all.

Next up was the testing of this new ability, trying to do the initial balancing and whatnot. I want it to be wothy of your attempt to pull it off, but not overpowered. In the beginning, it was damned hard to pull off. The prerequisite talents need to actually hit before the ability can be activated. Now, it could be because I am testing with a level 1 character, and the enemies are too strong. It could be that that is how the original talent was designed (I cannot remember for the life of me how it worked in the OC). But, this is what I like about combat design. It will go over many iterations before it's final. And that's fine by me. I'm just glad to have finished it!

Finally, on the way home from the train station, it hit me that there should be one more benefit of using this ability (besides the obvious impact of its effects)... Bonds of Battle aquisition. Yes, that's right. Whenever you successfully pull of the ability, you will gain a BOB point with the respective party member. I actually did the same thing for players when they pulled off Whirlwind Heal. It all comes down to one thing... I really want players to get an extra benefit from fighting side by side with another party member.

Till tomorrow...

2/8/10 -Monday: BEST LAID PLANS...

Well, I had plans to get a lot of development done over the weekend... Sigh... Turns out, Super Bowl festivities took more of my time than I anticipated. That meant that I didn't get a chance to do any development. Oh well, it happens, and it will happen again, I'm sure...

Now that I'm back to the work week, I'm going to put the new cutscene on hold at the moment, and knock out some other smaller things. It sucks that I have to put it on the back burner, but I really like to devote many hours in a row to this, and I just couldn't do that tonight. It's far easier for me to do small scripting projects that will have to get done at some point anyway.

With that said, I started the work on the first all new Unison Ability. It will be the combination of 2 existing Dragon Age talents, that should blend seamlessly into the existing system. I still haven't figured out how the player will receive this. Perhaps from gaining Bonds of Battle points? Maybe you will already have it, and it will just be discovered through use, like the combos from Dragon Age? Maybe it will be given out through a story sequence? I'm leaning towards the BOB point way, but I'll make that decision later.

The implementation is actually straightforward, it's how I want to do it that is the difficult part. I hate touching core resources, especially core scripts. Unfortunately, since I happen to be using existing talents, they all point to some core resources, and thus, I cannot think of a solution I really like. I can do 1 of 2 things:

  • Directly modify the corresponding ability scripts
  • Override those talents in my own custom 2DA and point them to my own custom scripts

Now, I'll most likely go with the 2nd option. I still have to look into it, but I may be able run my own special code, and then call the core talent script to do the actual talent functionality, so I don't have to have duplicate code. If I can pull that off, I'll feel a lot better.

Till tomorrow...

 

2/6/10 -Saturday: DRAMATIC CUTSCENES

I've never cried while playing a video game before. I remember Aeris' Death Scene being shocking. I even used it in a 12th grade class presentation (in 1998) that was about how dramatic video games could be. Then I watched the above cutscene while playing Lost Odyssey last year. Yep, you guessed it. Tears were definitely free flowing. I even had my fiance, who doesn't even play video games, and who had never seen me play this game watch it. Yep, she cried to. It was a combination of things that make this scene so well done:

  • Voice Acting was right on. When they cried, it felt real
  • The music, as expected, was very dramatic, at the perfect times
  • Obviously, the visuals bring the sequence to life
  • I'm not sure how well people can see it in this video, but towards the end, you see tears streamin down the faces of some of the characters. Simply amazing.

Scenes like this are what I have always envisioned for Rose of Eternity when it was still a brain child of mine back in 1999. Everyone has different ways of being drawn into a game, and cutscenes are definitely the thing for me. With the Dragon Age toolset, it will be eaiser for me to make the most dramatic cutscenes I have ever created. Though obviously, I will never get to the level I really want until I have a whole cast of voice actors, and let's face it... Not gonna happen any time soon. Even still, I will continue to do what I can.

Turns out, the cutscene editor is very similiar to the one that shipped with The Witcher Adventure Editor, so I felt right at home the first time using it. Just being able to have free reign over the camera and actors, and not being contrained to a scripting solution is very liberating. At the same time, as expected, with more power comes more complexity. To be fair, I haven't run into anything I haven't been able to do, but the process of creating cutscenes in general is definitely longer than anything I did in NWN1 & NWN2.

So far, I have created 5 or so cutscenes, of varying importance and length. The best part about creating them is being able preview everything you're doing right from the toolset. Oh man, back during my NWN1 days, having to restart the game everytime I wanted to see a change was hella annoying. Now with this preview feature, things like syncing up the music with what is happening on the screen is so much easier.

I will most likely be starting on a new cutscene tomorrow, which shouldn't be too bad, as it won't be that long. Then, I will be moving on to the biggest one so far, which will hopefully pull the player even closer into the story. I think I mentioned last month, as I thought I would have gotten to it by now. Anyway, it's going to have some VO narration by yours truly, so that should be fun. There is so much coordination that has to go on for a scene like this. First and foremost, there are the actual shots of the cutscene. There will be many things going on at once, so I have to setup the movements/animations/etc. for all the actos in the scene. Then, those have to match up perfectly with the music track I have picked out. Then there is the narration itself. That dialogue has to be written, and again, it has to be matched up against the backdrop of the cutscene. Finally, there is the VO recording. Technically speaking, once I'm at the part where I need to record the VO, everything else will have been done and tested dozens of times.

I've had this particular scene in my head for about 3 years now, so it feels very good to be finally implementing it. I've day dreamed about it while listening to music that will play during it so many times, I can see it clear as day. I hope the actual product is close to what I've envisioned!

Till tomorrow...

 

2/5/10 -Friday: FINALLY!

So, I finally felt like I got a decent amount of development done tonight. Though, I almost missed my opportunity. Being Friday, it was very easy for me to climb into my bed after getting home from work. In fact, I did watch a little TV, and felt myself dozing off. For me, there is a short window of time where I can either get up and get something done, or pass out for the next few hours. I bit the bullet, and chose the former. Good thing I did.

I started off the night by finishing the custom packages and tactics for some new bosses. It's definitely nice to just manipulate some 2DA's to get everything I need, instead of spending time scripting a solution (like I did in NWN1). Hell, Bioware built a robusy system, so I might as well use it!

While picking out their abilities, I decided to give them some Last Resorts as well. I'll probably come back and re-arrange some abilities, as well as add in some custom ones as I develop them. Which means that I will have to re-balance any fight they take part in. For the moment, I will leave them as is.

The next thing I did was work on a solution for enemies surrendering to you in combat. Now, there is already an existing system, where if you use the function, UT_SetSurrenderFlag(), they will stop fighting right before you kill them. You can even set a conversation that should fire, as well as plot flag events. The only issue I have with the existing system is, ALL hostile enemies in the area will surrender, not just the one you set the flag on. Fair enough, they only wrote the utility functions for their own needs.

Anyway, I just had to create my own little utility function that does the barebone surrendering between the party and the one particular enemy, while any other hostile enemies continue fighting. I even added in the ability to play an animation after surrender, so I could show them getting down on their knees in a praying position or whatever I need.

I also did a bunch of other small things, but I won't bore you with the details. Tomorrow should be an even more productive day. I plan on finishing up my work with the Talmud Storage Package, putting the finishing touches on the current battle I am designing, and then get back into some cutscene work. Hmm... Cutscenes would be a good topic for tomorrow... Anyone who has played my last games know I love me some cutscenes!

Till tomorrow...

Thread Of The Day: Music In Western RPGs - It should come as no surprise that I wholeheartedly agree with the OP.

2/4/10 -Thursday: USING NEW TALMUD STORAGE PACKAGE

So, after getting situated at work, I noticed that Bioware technical designer Craig Graff had released his Telmud Storage System. For you modders out there, that just equates to unlimited variable storage. It does many great things, but I just saw one thing... No more defining variables in that damn 2DA!

As soon as I got home, I immediately installed it, and put it to work with my Bonds of Battle system, as it makes use of about 5 local variables. So far, so good. Since I already had wrapper functions for all methods that accessed local variables, it wasn't too hard to make the switch. Here's an example:

/**
* This function will return the number of
* BOB Points the calling object has.
*/

int GetBOBPoints(object oPartyMember = OBJECT_SELF) {
return GetLocalInt(oPartyMember, BOB_COUNT);
}

Changed to this:

/**
* This function will return the number of
* BOB Points the calling object has.
*/

int GetBOBPoints(object oPartyMember = OBJECT_SELF) {
return FetchInteger(GetTag(oPartyMember), BOB_COUNT);
}

Like I said, nothing too fancy really. Now, it's not totally perfect. I used to save a local variable on actual enemies that are attacked, so that when they were killed, I would know who had damaged them. Then, I could distribute BOB points accordingly. At the moment, I don't see how I can replicate this with this system. Then of course, I am extremely tired and need to get to bed. Either way, I am sure I will figure something out when I've had a few hours of sleep. And with that...

Till tomorrow...

2/3/10 -Wednesday: MORE BATTLE TESTS

So, I have more or less finished the work on the Bonds of Battle system for the time being. There is more to do, but at the moment, the points are being acccumulated, and that is what matters. I'm not even at the point in development where the player would receive any benefit from them, which is why it's easy to move on.

Now that I've had a few days to redesign a certain aspect of the story, I'm back to implementing the mid-scale battle I have mentioned a few times before. As expected, the balance has been thrown off a bit, but it's easily fixable. I also need to finish giving some of the new combatants some custom tactics so they properly use their respective custom abilities.

In terms of size, it feels just right. Turns out, there is actually a limit in the Dragon Age engine with regards to how many combatants it can support at any given time. Taken from rules_h:

// -----------------------------------------------------------------------------
// Max creatures in combat at the same time we can support.
// -----------------------------------------------------------------------------

const int MAX_CREATURES_IN_COMBAT = 24;

What this means exactly, I'm not totally sure. I mean, it obviously means that the AI will freak out when it has to factor in more variables. I'm just not entirely sure of all of the ramifications. I think I've seen one though... When I had 25 people at one time, it took them about 3-4 seconds to actually start fighting. When I scaled back to around 20, they immediately started to fight, and processed commands much faster.

Another issue I'm having is that some participants just stop fighting entirely. Now that's hella annoying. It pains me, but I may have to put some heartbeat script on them, and explicityly have them attack the nearest enemy in the area. Not sure how much of a strain having that heartbeat event will cause though.

All in all, things are coming along just fine. I really need to make a big statement in the first 60 minutes of this game, so I am definitely taking my time to make things perfect. This whole situation actually reminds me of how development went with The Coming. Back in 2004, I had just got out of college, and hadn't found work yet, so I spent my days working on The Coming. I finally landed a job, and development nearly came to a standstill for the first few weeks, as I got my footing. Eventually, I got a laptop, and really became productive. Best of all, there was no pressure, no timelines, no nothing. With Cry The Beloved, it was always a race against time. I knew NWN2 was coming out soon, and I wanted to have the game released before everyone migrated over. Definitely one of the most stressful times in my life. Heh, just read some of my October 2006 updates :) I can always look back and laugh, but I still remember the pain and headaches!

Now, it seems I am in the same position as 2004. Just starting a new job, just learning a new toolset, and best of all, no pressure or deadlines. Here's hoping to a relatively smooth development process (I can hope, can't I?!).

Till tomorrow...

 
Website contents copyright (c) 2006 by Leonard Bedner