2/29/12 -Wednesday: BUNCH OF MISCELLANEOUS THINGS...
So yesterday, I talked about how I may need custom conditions for my custom tactics presets. Today was not the day to start that work. Instead, I opted to do a bunch of smaller things. Always nice to get a change of pace every once in a while.
So as anyone who has played the game knows, one of the other components of the tactics system is the behavior bit. You know, Passive, Defenders, Ranged, etc. I really never thought much about them while playtesting the game, as I mostly take control of all party members directly. But after doing all this tactics work, I figured I may as well default these for each party member as well. This involved making some changes to packages.2DA, and then referencing those behaviors in my initialization scripts for each party member.
There was one little issue where one of the party member's behavior wasn't being setup correctly. After some digging around, it turned out that I had never set them up with a proper AI package to begin with (many many months ago). I had did all the 2DA work, I just did it wrong, and as I said, since I tend to take control of all party members, I never noticed it. Once I fixed it up, all was good again.
The next logical thing for me to do was to actually do a bunch of combat testing, to make sure things were working perfectly. Luckily, I was blessed by the gods, and everything worked the way it should. It was nice to see the party members using various custom abilities and Last Resorts in combat with directly telling them to do it. In fact, for my next play through, I believe I will try to only control one person at a time, and see how the AI fares on its own. Obviously, it would be nice if people who like direct control (like me), and those that don't (I'm sure they're out there) to be able to get a good game experience. I still have those custom conditions to think about, but I think I'm well on my way.
The last thing I did was make sure all party members had 10+ tactics slots. I had already implemented it via scripting, but I was noticing that everytime they leveled up, it kept going back down. After some searching, I realized that the number of slots per level attribute was kept in the experience 2DA. Since I already have my own custom version of it, it was easy for me to go in and make the neccessary changes. Then I pulled out that hard coded scripting I had done for it, and called it a night.
Tomorrow, I'll most likely begin my research into custom conditions.
We may as well refer to the whole month of February as the month of custom shit. I swear, whenever I wanted to implement some new idea or whatever, it turns out I need to resort to going through various core game scripts, and hacking together 2DA's.
So what was it today? Well, I was going along just fine creating cusrtom tactics presets with little to no difficulty. Then, I came across a particular situation: I want one of my party members to perform a Last Resortonce their health is below 25%. The particular ability is Stramadonian Fire, one that Challseushad in my previous mods. Now, I'm not exactly coming up with anything crazy. I mean, this is how Last Resorts are supposed to work, furthermore, it's already implemented in the game for my custom AI packages for custom mages.
If I had to break down the main attributes of the 2DA used for AI packages, it would be something like so:
Target Type (i.e. Most Hated Enemy)
Condition (i.e. Self HP < 25%)
Command (i.e. Use Ability)
SubCommand (i.e. Stramadonian Fire)
UseChance (i.e. 65%)
Now, infuriating enough, this cannot (as far as I can tell) via the tactics presets, and hell, just in the tactics interface as a whole. Checkout the screenshot, and look at the first tactic. I can only set the condition, which is health < 25%. For the action, I can pick Stramadonian Fire. Okay, that's great, but what about the target?! Yeah, no dice. If it was, say, an AOE ability, that would be fine. But unfortunately, it needs a target.
What I really need is the ability to include 2 or more conditions into a single condition. Luckily, I'm pretty sure someone has done this already. In fact, I think it was one of the first big projects released. Maybe by someone named Anakin? (no internet now, won't look it up before I publish this ;)). Now, I'm not really looking to include his entire package, I just really want to create the ones I need that are specific to Rose of Eternity.
So yeah, that's where I'm at at the moment. As with most things, I'm sure eveyrthing will just work in a few days (yay for optimism!).
The next set of music I'd like to put up for you guys is from the Street Fighter series. One of the reasons I was obsessed with this game from '91-'96 was due to the music. I know more than a person should know. I knew the differences between the arcade versions, the SNES versions, and hell, even the Sega Genesis versions! I know how they changed the music up once they got to the Super Street Fighter series, and how the music kept playing in between rounds. Like I said, probably too much information :) Here are some variations of Ryu's music. Enjoy!
2/26/12 -Sunday: CUSTOM TACTICS...
Today, I spent a little time working on the custom tactics of a party member. I know that many people take full control over all the tactics of all party members in the game, but I also know that many do not. So for those that do not, I figured as might as well give my interpretation of how the party members should react in combat.
What I've done is actually create a new combat tactics preset, with the name being the name of the party member it corresponds to. So when that party member joins the group, you will see the standard 3 custom presets, followed by the one I've created.
Besides the fact that I want this game experience to be as complete as possible, the other reason I've created custom presets is the fact that there are custom abilities in the game that won't show up in the standard tactics presets. That in itself means I need custom ones. Now, handling these new abilities as tactics is a whole other beast entirely. Some fit right in with other abiliies, and some, just because of the nature of them, should never show up as a tactic. Lucikly, when creating custom abilities, there is a column in the 2DA that will specify if it should show up in tactics or not.
As with any custom work that I do with this engine, there a little gotchas I'm trying to figure out. For one, I've gotten rid of that skill that determines how many tactics slots you can have. You just start out with the max amount. One issue I've seen is that when party members level up, it drops back down. Another thing I need to consider is how abilities you haven't earned are handled in the presets. Will they show up, or will it be empty? Once you gain the ability, will it then show up?
All things considered, these are minor issues that I will be able to solve easy enough. Still, nothing is ever straight forward.
Today's music is the final piece from Ninja Gaiden, the ending theme. Enjoy!
2/23/12 -Thursday: ANOTHER MAJOR CHARACTER HAS BEEN CASTED!
So, I had sent out some lines for the 2nd major character in the game to a particular actor a few weeks ago, and today, I received the result. Actually, there were 2 things... The 1st was a re-recording of some lines for one character he had voiced, and the 2nd were the aforementioned lines for this major character.
This particular actor had actuallly just received some new recording equipment, so I was very excited to hear the results. Suffice to say, I was blown away. There's something special about getting lines for a new major character. For established ones, it's still great, but you know what you're going to get. John, for instance, who handles the lines for the character with the most parts in the game, consistently delivers top notch stuff. He's been doing it for so long, I already know what to expect.
But with a new character, there's this anticipation, almost like x-mas as a child. As I'm unpacking the files into the right directory, I'm going crazy imagining what it's going to sound like. What actually made things better was the fact that he even gave me multiple takes of certain lines, so I had more to work with. Anyway, as usual, I began to listen to each track individually, getting a feeling for what I had. The fact that it already sounded hella good was a good sign. Some lines don't really sound all that great until they're fully integrated into the game, with all the sound effects and music playing. Well, after going through all the takes, I picked what I thought was best, and integrated it into the game, and was a very very happy modder :)
John already voiced his lines for this scene, as well as Andy. This final set of lines made it complete, and as you all know, for me, there's nothing better than a totally completed dialogue scene. Well, I should back up a bit... The scene isn't totally done until I have polished all the camera angles, animations, and facial expressions, but you get the point. I'm actually tempted to do so, but I need to stay focused and knock out some other things first.
Next up for me is a whole lot of VO related things. Now that I have an actor for this character, I'll need to put together lines for all the other conversations. One in particular, which plays out when you first meet this character actually needs a bit of a re-write. During my last playthrough, it just didn't feel right, so it's back to the drawing board for that.
Today's music is stage 1-1's music in Ninja Gaiden 2. Enjoy!
2/21/12 -Tuesday: ALL SORTS OF THINGS GOING ON...
Well, to start things off, I got some very wonderful news from one of my actresses, when she delivered all of her VO lines for the particular character she is playing. I think I've mentioned this before, but she had previously delivered some test lines back in August of last year, and I was in love with them then. So, it felt extremely good to not only reconnect with her, but also received some magnificently acted pieces of dialogue.
Giddy as a school girl, I integrated the lines into the game, and was immediately impressed with the full package. This particular scene she is in has 2 other cast members in it, and it was a scene I created about 18 months ago. Over that time, I received bits of VO every few months, but I can finally say that the scene is finally done *Wipes sweat from forehead*. This scene means a lot to me, because it is 1/2 of the (in my opinion) first real dramatic parts in the game. In other words, the acting had to be spot on. So, to this anonymous actress (who if I get permission to release her name, will be immediately recognized), thanks!
And just when I thought I was done with VO for the day, I received another 11-12 lines from yet another actor, someone who I've known in the community since 2006. He reached out to me a few weeks ago saying he liked to do VO, I told him I liked VO, and well, here we are :) I still need to finish integrating it into the game, normalizing the volume and such, however.
On the development side of things, I continued with my custom skills work. I got so caught up in my success of making certain skills show up on particular party members that I forgot the easy task: make sure none of the superfluous Dragon Age skills show on the PC. Luckily, all that was involved was removing that ability, ABILITY_TALENT_TRAIT_HUMANOID. Now, this may not be the best solution, as this talent maybe used somewhere else in the game. But for now, I'll just remove it and see how the game plays out. If I see any weirdness, it's getting put back in! I also have a backup plan if it comes to it. I can just override those skills I don't want in my own ability 2DA, then add some fake pre-requisite abilities to them that no party member will ever have. So yeah, I have absolutely no worries with this...
...One thing I am thinking about however is this concept of how many skill points you get per level. According to the Dragon Age WIKI Skill Page:
You start with 2 pre-determined skills depending on your background and class, as well as an additional one
Rogues gain a skill point every 2 levels
Warriors/Mages gain a skill point every 3 levels
Now, I know what some of you are thinking: "Challseus, you're modding Dragon Age for god's sake, you should already know this!" To that I say, yes, I did play through Dragon Age, but that was a long time ago, and only once. Plus, I forget things ;)
Anyway, all of this is getting thrown out. I'm sure it makes sense for Dragon Age, but not for my skills in the way I envision them. From a design perspective, I'm not sure how I will handle this, except that you will definitely get a skill point every level. The main question is how many to start out with. From an implementation perspective, I need to see where this is defined in the core scripts. I've been all over the chaarcter generation, autolevel, and autoscaling core scripts, and I haven't noticed anything. I can of course handle it with brute force on my own since I capture the on levelup events. When the event is fired, I can just set the number of skill points the party member has. But, I'd like to see how the core game handles it first, just because it's nice to know how things work in general.
Finally, I got around to sending that email to Archon about the new icons. The way it usually goes is this:
I gave a description of the ability/skill
I gave a general of what I'm looking for
Archon just does his own thing, which ends up looking better than anything I could conceive
That's one of the best parts of working with people who specialize in stuff I don't. They can just go off and do their own thing without too much guidance, and the end results usually work perfectly.
I just got a notice that the site that host this site is going away, and that I'll have to get it hosted somewhere else. There are much worse things in the world to deal with, but being the lazy SOB that I am, I am predicting that I'll wait until the 11th hour to make the switch!
So, I came across this articleat Gamespot today. I imagine many people who read this blog already know about this, but it's news to me. In short, a worker at Bioware made some comments years ago about how games could potentially be built around narratives, with less to no actual action. Or something like that. Anyway, I guess she decided to join twitter recently, and well... Screw it, here's a quote from the article:
"Hepler, unaware of the escalating undercurrent of rage mounting over a point she made six years ago, joined Twitter on February 2. In the 10 days since, Hepler has been called "cunt," "Jew," "slut," and "whore." She's been criticized for her gender, her appearance, and her religion. Attacks on her have referenced Hitler, bestiality, rape, murder, cannibalism, and prostitution."
This shit makes me sick. Sometimes, I can't stand the internet and the anonymity it grants. But besides that, the fact that people would respond like this.
Let me put this into perspective for everyone: I've been playing games since 1985. I was known as that game guy throughout school (you know, when video games weren't "acceptable"), and when people find out that I now design games, they're like, "Yep, makes sense". I love video games, and I want to do this for the rest of my life. But god damn, at the end, they're just video games!
Today, I decided to switch over to Ninja Gaiden 2, the one game in the series I was able to beat (somehow!). Everyone knows this series was known for its cutscenes, so it only makes sense that it was something that drew me to the game as a child. I remember my friends and I used to play out this scene, imagining we were Ashtar and his henchman. Good times... Enjoy!
2/17/12 -Friday: NOTHING A LITTLE DEBUGGING COULDN'T FIX...
Well, it only took about 4 hours, but after some serious debugging of various core Dragon Age scripts, I was able to figure out how to not only make custom skills appear for some party members, but also group them into categories, just like abilities. I knew this day was coming, so I just put my head down, got rid of most distractions, and got to work. Where to begin...
Okay, so remember earlier in the week when I talked about how normal skills weren't showing up on my party members, but that it wasn't a big deal because I didn't need them anyway. Well, it turns out, I needed to know how that was happening, so I could figure out how to enable/disable skills properly.
I knew this was a known issue in the community, and even found this threadpretty quickly. Anyone who has tried to make custom party members knows that for the most part, you can't make use of the core function, UT_HireFollower, because then, they won't gain experience points or level up (can't remember which one). I learned this about 2 years ago, and ended up making my very own version of the script, called AddPartyMember. I basically gutted the stuff I needed from the original function, and added in my own functionality for all the custom things I do in the game. This is pretty standard, because I eventually came across the following tutorial, which was essentially doing what I was doing.
Now there is one critical thing that I'm not doing that this tutorial is doing. I'm not sending an event that states the party member has been hired. Why? Because then by default, the game will do all sorts of things that my game doesn't need, including:
Attempt to scale the party member level to match the PC (which I don't want)
Set the AI behavior (I've already done this)
Add approval talents (I'm not using these)
Add specialization talents (I'm not using these)
Run the auto level up logic (I have my own custom one)
Load tactics (I already do this)
In short, it's doing a lot of things that make sense for Dragon Age, and mods that are based in the same world that aren't trying to change as much, but for me, it's not needed.
So how does this relate to the skills not showing up on the party member? Well, as soon as I modify my code to send this event, voila, the skills are there! So somewhere in that logic I claimed I didn't need, there was something happening to enable the skills. This is where the crux of the debugging happened, and after a few hours, wouldn't you know it, I traced it to one simple function:
Once I pulled this function out, stopped sending the follower hired event, and put this in my code, the skills showed up as expected. And of course I'm going, "Son of a bitch, I knew this was how they were doing it!". As I stated yesterday, I tried to do something similiar. I tried to create a fake ability and make it the pre-requisite for a skill. When it didn't work, I just figured it wouldn't work. Once I found this ability in the ability 2da, I looked to see if it was a pre-req for some skills, and as expected, it was. So what was wrong with mine? I left the ability type = 1 (talent), instead of 3 (skill). *Smacks forehead* I immediately got to work adding my own custom one, and adding it as a pre-req to the first tier of all my custom skills, and I was in business.
As soon as that was done, I then wanted to put them into different gui categories. That was pretty easy, because like abilities/skills, there is a pre-req ability for displaying certain GUI's, so once I added in the fake ability, I was good to go.
All I need now is some shiny new icons (Archon!), and I will be good to go. Oh man, so excited to pretty much put this to bed.
2/16/12 -Thursday: THE GOOD, THE BAD, AND THE UGLY...
It's been an interesting couple of days, with regards to good news. First off, I was pleasently surprised to receive an email from Oli, showing me her latest work. Yes, I'm going to be annoyingly vague and not talk about what it is. Yes, I'm that guy. But yeah, she continues to amaze project after project, year after year. I really, really can't wait to show off what she has done.
In other related news, Sunjammer has started yet another initiative at the BSN to put a spotlight on Dragon Age content that is currently in production. He's likened it to the old Bioware Wednesday, and I wholeheartedly agree. Here's a link to the first edition.
I applaud him for his work here, and well, all the work he has done in the community. Not only will this let potential players know about content being worked on (a good thing!), but it gives more exposure to said authors (also a good thing!).
I still could not come up with a solution to make custom skills only appear for certain characters. My original plan going into it was to create a pre-requisite (fake) ability needed for it, and add it to the appropriate party members. Of course, I forgot that pre-requisite abilities (at least the way I was using them) determine the order in which custom abilities/skills appear on the screen. For example, the pre-requisite ability for the 2nd tier of Persuade is the 1st tier of Persuade.
Now, there is a way to make sure a specific GUI type doesn't show up unless you have unlocked a certain ability. A GUI type is just a category of abilities, like Primal, Entropy, Two-Handed, etc. So, the plan is to create a custom GUI for my custom skills, then add in that fake pre-req ability.
So, I was unable to run my test for explicitly setting the cooldown of Last Resorts. Why is that, you ask? Well, unlike most core scripts, you can't elegantly route events to your custom core script wrapper. In the case of ability_core.nss, I have my own roe_ability_core.nss. However, the particular event I want to catch and do my own custom stuff in can't be passed through it. I looked at this code a year or so ago, so I don't remember all of it, but I know there is one particular file I should be able to edit to make sure all ability code goes through my script first. It's just that I tend to shy away from editing core scripts. In this case though, it may be the only way.
So all of this means is that I'm going to have to go through all these core scripts again. It's not complex or anything, I'm just lazy, and have so many other things I need to implement!
Here's some more music from Ninja Gaiden. I know most of this is nostalgia for myself, but damn, I feel like they were really able to do so much with so little back then. Good times... Enjoy!
2/14/12 -Tuesday: SKILLS WORK CONTINUES...
In a series of unprecedented events, everything I outlined in yesterday's blog entry was actually... wait for it... implemented yesterday! *Gasp* Maybe the end of the world really is upon us!
Implementing level requirements was easy enough, as the ability 2DA has a column called prereqlevel, or something like that. So I just dropped in some suitabe values (for the moment), and I was on my way. In terms of making sure the player and party members did not start with the 1st tier of abilities already unlocked, I just had to modify by initialization manager script to not explicitly set the skills as active. Finally, I finished 5/6 of the custom skills I have come up with so far, and at the moment, I think that addresses the issue of if there were enough skills to go around.
Next up on my list of things to do (not documented yesterday) was the question of if the player should have the ability to set these custom skills when they gain a new party member. For instance, you may get a new party member at level 4, and perhaps you don't like the way the skills were allocated. So, it was simple enough to remove a line from my auto-level script that would automatically spend all skill points. So now, when you start the game (for the PC), and have new party members join the team, you can immediately "level them up". and spend those skill points how you see fit.
Speaking of the actual skill points, I truly don't even know/remember how many you were supposed to get in Dragon Age, but in the end, this isn't Dragon Age, it's Rose of Eternity. So, I just settled on starting with 1 skill point, and then being able to allocate 1 per level. Heh, I wouldn't be surprised if this is how it's already done. Oh, and for those that want to know, I just put this little line in the initialization function of each party member:
void InitSkillPoints(object oPartyMember, int nLevel)
SetCreatureProperty(oPartyMember, PROPERTY_SIMPLE_SKILL_POINTS, IntToFloat(nLevel));
Now, something like this may already be happening somewhere else in the game, but since I've made heavy modifcations to the auto-leveling scripts, well, here we are.
Anyway, with all of this done, I'm down to 2 things:
Dynamically setting ability cooldown
Making skills show up on the right party member
The first bullet point is pretty important for the custom skill that has to do with how long you have to wait for Last Resortsto recharge. So at the moment, when defining abilities in the 2DA, there is a cooldown field. This shows up when you mouse over an ability. Pretty straightforward. Thankfully, you can manipulate this outside of engine code (nothing is more annoying than finding out some logic you need is buried in the engine, and there is no way to get to it via the standard scripting API). You can call functions like:
Now, if you call this with just the caster and ability parameters, it will act as if the ability has been used, and will then begin the standard cooldown process using the value in the ability 2DA. I actually use this when players use Last Resorts. If a particular party member has 2 LR's and they use one of them, I set the cooldown on all the other abilities so that the player can't use it. Remember, kiddies, only one LR at a time!
Anyway, even though I haven't tried it, you can presumably set the cooldown value to something, and that will override what is in the 2DA for that particular instance. Once the ability has been cooled down, if you use it, it should go back to using the default one. Makes sense anyway.
After sifting through the default ability code, I have found that this function is in fact called after every non-modal ability is used. What I need to do is to override this for LR's, where I check to see if they have any of the Last Resort Recharge Time skill tiers. If so, then pass in the appropriate recharge time as the cooldown, and voila, I should be good to go. The only issue with this is slightly cosmetic... Whenever you hover over the ability, it will always show the default cooldown time as defined in the 2DA. So unless there is a way to dynamically change them, it will just have to be like that. All things considered, it's not that bad.
The 2nd bullet point I need to address should take less time, once I figure out how to do the 2DA work. The through process is to create some fake, hidden abilities for specific party members. Once I have this set up, I can make sure to only show the skill tree to party members who have specific abilities. Yes, this is a hack, but at this point in development, I have no problem looking the other way :)
Here's the music to the first stage of Ninja Gaiden. What a way to start off a series. Enjoy!
2/13/12 -Monday: MORE CUSTOM SKILLS WORK...
So, as I sat on the train yesterday after writing my latest blog entry, I was brainstorming about the new custom skills. More specifically:
What type of level requirements should there be for each tier of each skill?
Should you automatically start with some of those skills selected?
Are there enough custom skills at the moment?
The first bullet point is pretty straightforward. At the moment, there are not restrictions on each tier of every skill, save for the fact that you must unlock them in the standard, linear fashion. But what if after 4 levels, a player decided they wanted to unlock all 4 tiers of a skill? Would they be overpowered? Would it screw up the balance I've tried so damn hard to achieve? These are the types of reasons why I don't like to test that much, with regards to combat, since I know I'll be constantly adding new things up until I decide to release the game. Anyway, I haven't decided on the exact requirements, but after thinking about it, there will be some in place.
With regards to the 2nd bullet point, I may need to do some explaining :) Let's take the Bonds of Battle Accumulation Rate skill. By default, you earn 1 BOB point. This was before I even added the skill. Now, in all of my glorious wisdom, I put that default one as the first tiered one. What that means is, you will essentially have that one particular one unlocked from the start of the game. But thinking about it, it sort of cheapens the experience. If you already start with the first skill unlocked, you only have 3 more to work with. So, the natural solution is to have the first tier be the one where you can earn 2 BOB points. This way, you'll obviously keep your default value, while still having 4 tiers to play with. Luckily, this isn't major work at all.
Finally, for the last bullet point... Are there enough custom skills? Besides the obvious benefit of having more, there are other things to consider. If there are only 3 custom skills, and there are level requirements, well, at some point, most characters will end up having the same skills, as there are only so many to go around. So, the player loses some of that uniqueness. As an aside, yes, I know you're going to be using a pre-gen chaarcter in this game. It's that very reason why I try to do as much as I can to still allow you to make this character your own, within the constraints of the story, of course.
Well, I decided to open up the NWN toolset, because I guess I'm getting old, since I really couldn't remember all the attributes you could modify with the DD system in that game. And as I'm writing this, I'm realizing all that information is contained at the Distinctive Developmentwebpage. Yep, I'm getting old...
Once I saw what I had, I realized it might not be enough. Some of them won't exactly translate to this game so well. Then a light bulb went off in my head! I already have some new systems in this game that I can make use of, such as the Bonus XP System. I haven't talked about it for some time, so for those that don't know, I created a system to reward party members with bonus XP for achieving various things, such as:
Land the final blow on an enemy
Killing x amount of enemies with y seconds
There are other ways to get bonus XP, but I won't get into it at the moment. But you can see where I'm going with this. At the moment, if a party member lands the final blow on an enemy, while of course everyone in the party gets XP, they get an extra 10%. Well, I can have a line of skills where that % goes up, something like:
Tier 1 - 15%
Tier 2 - 20%
Tier 3 - 25%
Tier 4 - 30%
You get the picture. As with the other custom skills I've created, this will be very, very easy to implement. Something I could do while watching Federer lose yet another match to someone he should never lose to... *Tear Drop*. At least the NY Giants got it done for me this year...
...Moving on! So yeah, that's about it. I had a brainstorming session on the train, came up with some ideas, and now I just have to execute those ideas. I'm really looking forward to getting all of these in the game, playing through again, and seeing how they affect things.
The retro music theme lives on! Today, I have music from one of the hardest games in the entire world:Ninja Gaiden. And not the new ones, I'm talking about the old school, make you throw your Nintendo Advantage Stick at your R.O.B. peripheral that you never used, pull your hair out because you can't make that one fucking jump with an eagle flying by and hitting you, forcing you to stumble back while in mid-air, falling to your death. My old school heads know what I'm talking about! Enjoy!
2/12/12 -Sunday: CUSTOM SKILL WORK...
So as I predicted, getting custom skills into the game was not difficult at all. It was more monkey work than anything, with most of my time spent modifying a 2DA as well as creating custom strings to display the names and descriptions of each skill.
The skills I created were for the Bonds of Battle (BOB) system. In Cry The Beloved, I created a system called Distinctive Development (DD) in order to allow the player granular control over how BOB worked for them. At each level, you were given a certain amount of points to allocate to different categories, such as the rate at which you acquired BOB points, or the range you had to be in order to get them. Well, after playing through Dragon Age, it was clear that I could just leverage the existing skill system, especially since many of the existing skills were superfluous in the Rose of Eternity world.
So now when you level up, just as you did with the existing skills, you will be able to allocate those skill points into these new skills. Now as you can see by the screenshot, I still need some icons, which I'll reach out to Archon for, since he has done such great work on all the other icons thus far. But besides that, it's all set up. I have each progression for each skill, each name, as well as each description.
Of course, just putting it into the UI wasn't enough. I still had to switch over to using these skills in the existing BOB codebase. Whenever awarding BOB points, checking the range, etc., I just used to check local variables, since that was how I did it in Cry The Beloved. Luckily, it was easy enough to modify each function to check to see if the party member had the skill, versus checking a variable. Yay for re-usable code!
Now that I implemented these 2, I'll be moving on to some other categories. I still need some skills dealing with Last Resorts, and I may put in one I had for the death system in Cry The Beloved. But,it was nice to be able to implement all of this in one day, considering I was watching various episodes of The Sopranos, Deadwood, and the Grammys.
Oh, and one more thing... I really went into the day with 2 issues... One was the aforementioned work on custom skills. The other was figuring out why default Dragon Age skills didn't show up on party members. Well, as I began my work, I realized that even though the default skills didn't appear, my custom ones did. And as it turns out, all I care about are mine anyway, so I sort of killed 2 birds with 1 stone. Well, not exactly, but you get the picture. Figuring out why the skills don't show up is a non-issue since I really don't need them there anyway.
Of course those skills show up on the main hero of the game, but making it so they don't should be easy enough. I should be able to overwrite the existing skills in my custom ability 2DA, and then point them to a GUI that doesn't exist. And voila, no more skills I don't give a shit about!
Double Dragon 2 was one hell of a tough game, but once you got to the final fight, all of that went away. Who could think about the difficulty when you had this glorious music playing?! Enjoy!
2/10/12 -Friday: MAKING VERY GOOD, STEADY PROGRESS...
I know I haven't posted that much this week, but really, there isn't anything that exciting going on, development wise. I've been making steady progress on working my way through the various bugs/tasks I compiled from my last playthrough. Over the course of fixing issues, I of course come up with new ones, which has lengthened the process a bit. Even still, I'm down to 44 items now, and if I hadn't added new ones, it would be closer to 20.
One of the biggies was finishing up more codex entries. In another update, I talked about how I wanted to implement certain codex entries. This week, I had to actually write the damn things. This is something that is perfectly suited for the train, and that is where I did the majority of that work. And as I mentioned before, besides being something the game needs, I can leverage what I write and put it on the website and our WIKI.
Another thing I focused on was journal entries. I've sort of half-assed it, where I would just jot down the general idea of what I wanted, knowing I would come back and re-write it with more detail. Well, this was the week for that to happen. Besides expanding journal entries, I did some work on how to show them. For instance, for every journal category, should I:
Have every sub entry be it's own, self contained set of lines?
Have all previous entries appear above the latest entry, so the player can see the entire chain of events as they have transpired
I ended up going with bullet point one, mostly because branching quests would end up being more trouble than they're worth. For instance, say you have part 1 of a quest. Then there is a part 2a or a partb, depending on the choice you make. Now, if I want to show the entire chain of the quest, I would have to have a 3a and a 3b, even if there was only one way for things to end. So yeah, I just didn't want to have to deal with it. It wasn't something I exactly stewed over for a long time, but I thought 30 minutes of my time to hash it out was worth it.
Probably one of the biggest things I did this week was finally fix this bug I had with a custom Last Resort for a custom boss. I had implemented it months and months ago, but for whatever reason, since this boss uses the monster package of talents/spells, I was having several issues. Or, maybe I was burned out. Because, in like 15 minutes, I fixed the issue that was driving me crazy last summer. I'm really flabbergasted about how I never saw the solution way back when, but hey, what can you do.
Up next is some work with the Dragon Age skill system. For one, the skills page isn't showing up for some party members. So, I need to fix that bug. Then, I need to remove existing skills that don't make sense in Rose of Eternity, and add my own. I haven't done any work with skills, but I don't see it being too tough. I imagine I'll just have to make lots of edits to my own ability 2DA, possibly some changes to the auto level 2DA's, and of course, some scripting changes to check for the skills at the appropriate times. I'm actually looking forward to this, as it's something new for me to work on.
Oh, and one last thing. I received word from fellow NWN modder Berra that he would like to help with voice acting. I've downloaded all of his samples from his NWVault project page, so at some point this weekend, I'll sit down with a cup of tea and give them a listen.
In Double Dragon 2, stage 5's music was always one of the standout themes for me. Well, I found this lovely remix on You Tube. Enjoy!
2/5/12 -Sunday: VINDICATION!!!
6 months ago, someone had the audacity to ask Eli Manning if he belonged in the same class of quartebacks as Tom Brady. He said he did. 6 months later, he has been vindicated. An entire season of "Is Eli Elite" has finally been answered with a resounding, HELL YEAH!
Look, I've been watching football for a long time, certainly throughout Eli's entire career. I know he can make mistakes. BIG mistakes. You know, those 4 INT games where 3 get returned for TD's. Yes, I know. It happened. Through it all, I still noticed that he had this clutch mentality. People are talking about his 4th quarter comeback drives this season, and I'm thinking, "He's been doing this for years!".
Anyway, he has taken so much hate from so many people, and I think his bad play in years past is blinding people to what he was doing this year. Well, the haters anyway. I've got a 49er's fan for a friend. Not just any friend, this is the guy who I created the world of Rose of Eternity with. He still insists Eli is just lucky... I've been getting this from everyone. It's been so annoying for so long, that I'm so happy the topic can be put to bed.
2 4th quarter game winning drives in 2 super bowls against arguably the best coach/qb combo for the past 12 years, resulting in 2 super bowl wins, and 2 super bowl mvp awards?
Everybody chill the f*** out. Eli's got this!
P.S. I know George R. R. Martinis loving this, and will have a similiar themed blog post about it soon enough. Still love that my favorite author is a Giants fan :)
When not watching football, I do occasionally like to think of myself as a game designer :) Throughout all the hoopla of Super Bowl weekend, I did get a hell of a lot of stuff done, mostly because it was a good way to get sidetracked from said hoopla.
Again, it was minor things I tackled, but as I always say, it's gotta get done at some point anyway, so why not now? One thing I had to fix was making sure the newest party member was accumulating Bonds of Battlepoints properly. Another thing was making sure yet another party member was not able to use his Last Resortsuntil their health was under 25%. With regards to that, I'm a little mad that I can't have the ability grayed out when health > 25%. Clearly, that would be the more organic implementation, fitting in with how all the other abilities work, unfortunately, as far as I understand it, that logic is at the engine level, and not scriptable. So, if you do try to use the ability when it shouldn't be used, I overrided things so that a message in red text pops up saying it can't be used. It's not the most elegant solution, but it will have to do.
The last thing I started to work on before the big game was item sets. I've known for a long time that I wanted to implement some custom item sets, so I figured I might as well read up on them. Lucky for me, there was a very informative wiki page on it. Gotta love the WIKI!
So, I can go ahead with the standard implementation through 2DA's, so I can add/remove attributes when all the items are equipped. I also may add my own custom functionality as well. By custom, I mean some sort of custom scripted effect, not just the standard aforementioned attribute boost.
That's as far I got before the game started, so that's where I will start off tomorrow.
I think I'm going to ride this NES 8 bit music thing until the wheels fall off. Here's the intro music from Double Dragon 2. Enjoy!
2/2/12 -Thursday: ANOTHER MONTH...
STATE OF THE UNION
Another day, another month, another year... Jesus, how long have I've been doing this?! <Insert generic "I'm getting too old for this shit" quote>.
So, the state of the union is this: It's not perfect (i.e. the game is not done), but it's damn good. Last month, I made significant strides on the VO side of things. At first, I didn't think I was going to be able to get anyone at all. That obviously changed, but then, I was afraid that I wouldn't have enough people. Hell, I've been toying around with the idea of making a post at the BSN asking for actors, as well as a bunch of other sites that are totally devoted to voice actors. The reason I haven't is because I felt like I needed more of the game to be done, so I could put together a shiny trailer, so people would know I'm serious about this project, and that they wouldn't be wasting their time.
I'm not sure when (though I'm sure I could track down the exact date on this blog!), but at some point, the small amount of actors I had started telling me about their friends that could do acting, and months later, we've almost filled up everything, despite me ever even having to make a plea on a forum.
Now, I should point out that Jason did contact many people, who I've since made contact with (god, I sound like I'm dealing with aliens or something!), but as I have said, I've been able to slide through, without having to put together said shiny trailer. But I shouldn't get too happy. That forum post will most assuredly be happening at some point.
Besides the monster that VO is, I've also fixed one hell of a lot of bugs from my earlier play test. I've also implemented some features taken from those notes, and other little things. Every day, I sit down, and systematically knock out as much stuff as possible. Of course, I find myself adding issues as I'm fixing others, but I'm completing them as well. The plan is to finish everything that needs to be done (mostly bugs), then enter everything else into our bug tracking system. Normally I would enter everything, but I just didn't think it was worth it, especially the super small things.
Now, lurking in the back of my head has been this ALPHA. There are 2 things I'm mainly hoping to get as feedback:
Bugs, bugs, and more bugs!
General feeling about the game as a whole.
Now, if I had to compare this game to another one I've done, it fits more closely with my first game, The Coming. They are/were my first games with a new engine, and as any developer knows, the first game you make, you're spending just as much time learning how to do things as you are doing them. Once you master it though, your subsequent games get that much better. As an example, I literally OD'd on Cry The Beloved, and it ended up being 3 times as long, twice as many party members, custom abilities... I didn't have to worry about how to do stuff as much. It was just more doing.
Why am I rambling on like this? Well, the point I'm trying to make is that this game is not as long as Cry The Beloved, and because of the nature of the story (and the fact that it's the beginning of a new tale), and other factors, I just don't think it's going to be as complex to test. With The Coming, I did have around 10 people test it, but most of the feedback was just stuff like "You really shouldn't supply the player with a custom PC, people won't like that" (ha, I proved him wrong!), "This game is too hard" (that was great feedback, actually), etc. There weren't many bugs. There weren't really that many ways that the game could break. Cry The Beloved on the other hand? Holy shit, we tested that game for months and months and months. There was a LOT that could go wrong with it, and it did.... A LOT...
So yeah, of course there are going to be bugs in this game. I've fixed a bunch, and I will continue to fix more. But they're really minor. I haven't really run into some huge logical bugs yet. Nothing that has me scratching my head for days. Usually, when I find a bug, I know exactly what I need to do, and just do it.
Bah, long story short, of all the things I have to worry about with this game, testing is not one of them. I may be able to get away with my testing strategy I used with The Coming, rather than the one I used with Cry The Beloved. And that would be just great.
I came across this video the other day. It's a video about someone who played World of Warcraft for a long time. I won't spoil much, just to say, it was pretty fascinating. As a retired MMORPG player, I can feel his pain.