9/30/10 -Friday: MORE OF THE SAME...
Today was more of the same, really. Adding new NPC's, giving them their appropriate dialogue, etc. As usual, a simple NPC turned into much more than that, someone who the player may end up seeing more as the series goes on. These are the type of things I can't plan for, but know will happen. Anyway, I still need to add like 4-5 more ambient npc's, and then I can safely say I'm done with this particular area/scene.
From here, I need to work on some other scenes, that show the aftermath after certain events. All that amounts to is just making sure certain npc's are activated in areas where they were normall in-active, write a bunch of dialogue, use a lot of ambient ai, and some sound effects. Not difficult really, just a lot of busy work. It would be nice to finish all of it over the weekend.
The next possible thing on my plate is handling day/night transitions. For a bunch of particular interiors, I really want to show them differently at night, which of course means torches/lamnps being blown out, as well as a slightly different ambient light color. Currently, I'm just getting by with re-using the same area, just changing up the music, moving people out of the way, etc. But to be believeable, I'm definitely going to need to use a different level.
Now, the level part is easy. I can literally just make a copy of my current level, prefix with the term, "night_", and then remove the lamp/torches vfx, along with a bunch of lighting changes. The actual structure of the level itself will remain the same. Now, if I premateurely do this copy, then make changes to the core daytime level, I'll need to do this all over again, which I'm not keen on doing. Still, I think I will give it a test run, to see how it works out. Luckily, I can just add these night interior levels to the same area list I'm using, so trransitions will be seamless, and more importantly, I can move important NPC's around at will.
The area part is a little more annoying, because for every new level, I'll need a new area. It's a shame you cant dynamically assign a level layout to an area in game. But yeah, this means I'll need to duplicate core area scripts, and handle tracking people back and forth between the areas. But who am I kidding, again, this is just busy work. All worth it in the end.
I guess if I was going to rant about something, it would be about how annoying it is to define props in a level, props that will never change. What if I have a piece of fruit that needs to be gone after a certain scene? I better hope there is a placeable version of it I can put in the area, so I can destroy it at will. Otherwise, I'm screwed. I'm guessing there is an easy, streamlined approach to converting them to placeable format, so I may do some research on that as well.
9/29/10 -Wednesday: ROSE OF ETERNITY TIMELINE!
So, I decided to do a lot of ambient related things today. In particular, one huge area has needed NPC's and activities and such for a long time. So, I started by doing a little prop dressing in said area. I was kicking around a lot of ideas on what exactly should be happening here, and finally decided on something a week or so ago. I'll need at the most, 3-4 detailed NPC's, and a bunch of one liner NPC's. Nothing too crazy. So yeah, I started adding in props, which meant my monthly cycle through all available props, via DATool. While I was sifting through the various props, I actually found something that could work in another area, got sidetracked, and started dressing up that area as well. A few things are annoying the shit out of me though:
For some reason, some of these "flat" texture props, like cobwebs, or ivy leave these weird shadow things around them when I render lightmaps. I guess it's a known issue, but I would like to really get a solution to it at some point.
All in all though, I was pretty happy with what I adde in both areas. Now, I just need to create those NPC's, which means adding some dialogue, but nothing too extensive.
Without a doubt though, the highlight of the night was my introduction to some new software, found by Jason Melancon, which allows us to construct a visual timeline of the events of the Rose of Eternity world. We can track large events, such as the Keeper of the Rose starting her tenure in the Garden of Roses, which was in the year 1, because it's really the start of a new age. We can also go almost 4000 years into the future to track when Aramus contracted amnesia (in the year 3980), which essentially is the start of The Coming. And these are just high level events in history.
We can also get extremely granular, and literally track events by the hour. You can assign a weight of importance to each event, and thus, must zoom in further to see them. Such events are like the birth of Aramus in the year 3954, or the year the Ministry of Justice was formed, which was in the year, 3975.
The actual use of the timeline wasn't intuitive at first, but after some guidance from Jason, it worked just fine. On a high level, you essentially just have this timeline going horizontally across the screen. Like a ruler, it has a bunch of marks, which indicate some time. If you zoom out all the way, the marks will be in increments of 100 years. Zoom in more, and you can get as low as tracking things by the hour, as I mentioned earlier.
Now, with each event you add, it will show up accordingly on the timeline, and you can hover over it to get more detail. You can even add images. So, all events related to the Keeper of the Rose have the same custom icon Olaia Ferrando created, which can be see on her cast page. Just makes it easier to differentiate, especially once we start adding more and more events.
And dammit, that is exactly what I plan to do. My plan is to start with the big ones, such as the capture of Challseus at the end of Cry The Beloved. Then, I'll move on to smaller ones, like the period in time when Aramus & Clopon arrive at the town of Aribne for the first time. It's going to be a long, iterative proces, as I only plan on adding a few a day, if that. But once it's done, it will be a beautiful thing to behold.
Oh, before I forget, there is an interesting feature, where you can have 2 distinct timelines in one. The way we set it up was, we have one timeline, wich is filled with know facts. Then, we have another one, which is more of a development one, where we are still debating on what happened, and when. Once it's finalized, it will move to the real one. In terms of how it looks, all the real facts can be put on one side of the timeline, the other can go on the other, so they don't get in the way of the others.
In the end, I think this tool is really going to be benefitial to the development process of these games. When trying to write some dialogue, it's great to be able to pull up a visual timeline, scroll around, see what was happening in the 3800's, see if something was even possible (i.e. was this person even alive), etc. Currently, the majority of events will be centered in the 3980-4000 time period, since this is when The Coming, Cry The Beloved, & The Last Petal (if was is ever going to be made) take place. The events of this current game take place, starting in the year 4000. But there's so much more lore to be made. We already have some high level events in development that span from the year 100-1000, as well from the year 0-100. Even if the playe doesn't get to see them, they will be mentioned in the story of the game, whether through dialogue, or through codexes. It just adds to the realism of the game world, in m opinion.
Well, that's about it. I'm sure I'll mention this thing from time to time, just updating how many new events have been added. At some point too, it would make sense to get a version up for players to see (when it's complete), so they can also get a high level view of the events of the world, hopefully drawing them into the game much more.
9/28/10 -Tuesday: MINOR THINGS...
I didn't do anything of great importance today, just a bunch of minor things. I started off with some enhancements to my music/sound system. I essentially need to preload a music cache with the default music for each level for the system to work. I thougt I could run it in my module level events, effectively having it precached at the start of the game. For whatever reason, it doesn't work. I need to look into the core of the Talmud infinite storage system I'm using, because perhaps the main object variables are cached in aren't created until some particular event has been called. Once I find that, I just need to make sure my stuff runs after it.
I also did a bunch of cutscene touch ups. In one particular one, I had to remove a character that just didn't fit, and add another one, with some minor animations. I was actually supposed to do this a while back, but got distracted with something, so it was nice to finally finish it. Another cutscene I modified was one I created back in like, February, or March. I essentially just had to modify some existing camera angles. I'm not entirely happy with the results, so I may need to give it a 3rd pass.
I forgot to mention, I added another Bonus XP option. I'm pretty sure I talked about it before, but if you manage to kill someone with the Last Resort, Flurry Attack activated, you'll get some bonus XP. The thinking behind it wa simple. If Flurry Attack is being called, then it obviously means you're low on health, and close to death anyway, so finishing someone off with that ability is a pretty rewarding experience, and you should be rewarded appropriately. Hmm, as I'm literally writing this, I'm wondering if you should get a minor bonus, say 5%, just for killing someone when your health is below some value, say, 20%? That would be extremely easy to implement. I'll do some more thinking on it, but that may work itself in.
Actually, now that I think of it, once all your bonus XP additions have been added up, I should take into account the type of enemy you have just fought. So, if it's a normal creature, you don't get anything new. If it's a lieutenant, you get a little more, a boss, even more, so on andn so forth. Yeah, that could work.
Just to be clear, it's not like you're getting a crazy amount of bonus XP. This isn't no damn power leveling system. Let's say an enemy is going to give you 100 base XP. Then you do the following:
- Deliver the final blow:; +10% XP
- Kill with Flurry Attack: +10% XP
- Kill a lieutenant: +5% XP (you already get more base XP for killing one of these, so no need for a big bonus)
- Have less than 20% health: +5% XP
That right there is a total of +30% XP. When you do the math, you go from getting 100XP, to getting 130XP. So, it's not this huge amount. It's subtle enough to not break my design standard of making this a low XP world, but huge enough to hopefully empower players to try out different ways to kill enemies.
Wow, talk about getting side tracked! My apologies, I do that sometimes. I literally get ideas flowing into my head while writing blog entires every once in a while. Heh, this blog isn't just for others, it's for me as well, because the act of simply writing down my thoughts spurs my creativity.
At any rate, there you have it. As this is the newest system in the ever growing list of systems, there will definitely be refinements along the way, most likely the actual bonus XP delivered. I'll never know how well it works until I get a ways into the campaign. But, the foundation is there to add new ways to achieve them.
9/27/10 -Monday: WAIT, HOLD ON A SECOND! IS BIOWARE READING THIS BLOG?!
As more and more information continues to comes out regarding Dragon Age 2, it's becoming more and more apparent that Bioware is reading this blog*. More specifically:
- Forced Character - Well hell, I've been doing that since 2004, and would have earlier, had I know about the powers of the Aurora Toolset back in 2002
- Comnbination Attacks - *Cough* Unison Abilities *Cough* They sort of started this off in DAO, but now since you can finally combine talents & spells, they are seeing the power in it
- Upgrading of Individual Spells - Look at blog post dated 6/8/07. In there, I discuss my ideas for my Rejuvinate spell, and how certain attributes of it can be upgraded.
- Story within a story - Hello! The Coming & Cry The Beloved starts out with a prisoner telling a man named Ranon about events that occurred 20 years earlier. The scene even shifts back to them ever so often, to discuss what the prisoner just told him.
- Emphasis on flashy looking, slightly ridiculous combat - Right... Last Resorts, Unison Abilities, Passive Abilities, a bunch of generic custom abilities....
- Very Cinematic Game - I used to get acccused of using too many cutscenes :)
Yep, someone is trying to steal my ideas!**
* I don't really believe this.
** No really, I don't believe this at all
In all seriousness, the path they are taking Dragon Age 2 in is the same path I've been walking for 6 years. It's the exact features that are turning people off, that are turning me on to the game. And why not? It's features I've been a proponent of in my own games, so of course I would love to see it in others. Here's a fanmade video of the gameplay, which I thought was very interesting.
It's a shame that the demo starts off with Hawke mowing down enemies so fast, because, even though it's been said that it's an exaggerated sequence told by the story teller, well, this is the internet, right? Ever play the children's game, telephone? Yeah, that's how much misinformation is spreading around.
Lucky for Bioware, contrary to what people think, the people complaining on the forums is just a small fraction of their fanbase who scrutinize every little detail possible, and run off with wild assumptions and such. Let them stir up a hornets nest in their own little world. Once real gameplay videos are shown off, no one will be complaining about the aforementioned scene. This time, it will be something else...
I still remember the ridiculous outcry from people who hated the fact that they used Marilyn Manson in the trailer for DAO, as if it was going to reflect actual gameplay. That went away pretty quickly, as will this. Hmm, reminds me of politics... Hmmm, maybe it's just an issue with humanity itself, and not just video games :)
In the off chance that someone from Bioware does read this blog, let me just say, keep it up. Keep innovating as much as you can. If I wanted to play Baldur's Gate 2, I would dust off the old girl, pop it in, and hope it runs on Windows 7. No, seriously, I had issues trying to play Baldur's Gate 1 on my windows xp box last year. Had to install it while in windows safe mode, or some crap like that, lol.
Ahem, yes, I did do something today. So, there were a whole host of bugs in the upgrade I made to my music/sound system. I think I was so giddy about actually using real music (which obviously didn't work out so well), I just hastily slapped together the former. So, it took about an hour to fix the bug, and then, I ran a bunch of tests to make sure music played/stopped acccordingly. I didn't do a full run through of the game, but I'm confident everything works.
Tomorrow, I'm going to quickly add a feature to some of my custom abilities. There is a function, called something like EnableWeaponTrails, which is essentially called for most weapon talents. I'd like to add this to my custom stuff, so as to stay consistent. Plus, it looks cool!
I also wanted to change the look of all Stramadonian Mages, but that will unfortunately involve some face morph work, which is something I'm not really prepared to do at the moment. I'm actually thinking about looking for someone who specializes in this particular aspect of the game. If anyone reading this would like to help out in that regard, shoot me an email at firstname.lastname@example.org.
Finally, the PM to Fernando Melo with all the audio issues the community is having has been sent out, and he responded saying he will pass it off to the right people. Here's hoping...
9/26/10 -Sunday: PRETTY SATISFYING DAY...
Overall, today was a pretty satisfying day. I didn't finish the other dialogue that I said would complete the weekend, but I did some other things, so it all worked out in the end.
I actually had a lot of fun adding little roleplaying options in the dialogue today, which is weird, because I remember a time when I absolutely hated to write dialogue. The characters in this particular piece of dialogue were actually in The Coming & Cry The Beloved, though they were young children, so they didn't really have much to say, except some one liners. Now, I am able to build upon their existing story, and give them all more of a personality. It's nice to have this connection to the NWN mods for the existing fan base, while new players aren't really missing anything, as these characters are really defined in this current game. Speaking of which, I hate saying "current game". I need to figure out a damn official title!
Instead of working on the other piece of dialogue, I decided to roll back all my music related changes I made, in vain, last week. Even though switching to use real music instead of sound objects didn't work, I never went back to my older implementation. Today, I decided to just go back to what worked, until a better solution was found. Turns out, I was in the middle of updating the sound object way of doing things, to be more robust, when I made the switch to real music, so when I went back to it, it was not in a good state. The main thing I have to do is go through every area and make sure the sound objects all following the pattern I need them to be in (music name + area tag) so my system can pick them up. I also made some changes to the actual function, SwitchMusic, to make sure the passed in song name was set correctly. Finally, I had to add a module level function to my initializer script, which essentially fills the cache with the current default music for every area. This is because the way the system works, when switching music, the first thing that happens is the current music stops playing. The current music is fetched from a cache, and for the first time for an area, this cache needs to be preloaded. Once it's done once, it's fine, as every new piece of music that is started will be saved in the cache.
I actually don't know what I'll nbe working on tomorrow, as I sort of want to take it easy, and maybe get to bed early for once. We'll see...
9/25/10 -Saturday: SKYPE INTERVIEW, DIALOG, STAGES, AND AN ANNOYING ISSUE...
So, I woke up about 6:30am to go to my Dad's house to pickup my logitech mic/headset I left when I moved out months ago. Then, after a quick 30 minutes of cardio at the gym, I was home in time for the interview.
In short, the interview was about all things having to do with modding. More specifically, we talked about the sites I frequent, sites I upload my work to, how I feel about ratings systems, how I feel about visibility, the increased need for marketing, and a lot more.
I was brutally honest, and didn't hold anything back. I told him about how I felt about getting bad reviews on The Coming & Cry The Beloved all those years back, how it negatively affected my day, and more. I explained that the emotions were two-fold:
- Lower ratings meant my mod fell down top rated lists, which meant it got less exposure, which meant less people played it, so on and so forth... pretty straightforward
- I was quite immature when I released those games, so I couldn't comprehend how someone could rate them lower than a 10. How dare they?! :) I've mentioned it before, but looking at most of the non-10 ratings objectively, they were all reasonable in their respective explanations/reviews
Being older, more mature, married, all that jazz, I'd like to feel that I have changed. We shall see :)
Now the talk of marketing was quite interesting. He brought up the point that people feel the need to have to market their games more. Meh, been there, done that. Back in 2005 when I released The Coming, I went on a marketing blitzkrieg. I did the following:
- Created a website
- Created a trailer
- Went to a ton of rpg and modding sites to talk about it
- Had multiple threads at the old Bioware Modules Forum
- Posted screenshots to NWVault every few weeks leading up to the release of it
- Talked to Maxiums about getting a NWVault community spotlight
- Created an ad banner which looped in the top page of the vault
- Possibly other things I cannot think of at the moment
Why do all of this? Well, with the NWVault, you had a short window to get your game noticed. If not, it fell into the "vault abyss", where no one would even know it existed. You had to get on that top rated list, and fast, or else, all was lost. Well, it's not that dramatic, but that's how I looked at it. No way I was going to take that risk, after spending 15 months of my life in development.
It was risky, because for whatever reason, many people cannot seem to enjoy a game objectively. What I mean is, there are always other things that cloud people's minds, such as one of my most hated things: expectations. Take 2 equal, "decent" games. If one is marketed like crazy, people may say, "Well, I just didn't like it. It didn't live up to my expectations." Now take the one, that the person just happened to find. "Wow, what a nice little gem. I was really surprised at how well this game was". Wait, what? They're the same quality... Why does it make a difference if one was marketed, and the other wasn't. Well, not going to get into a rant about that, maybe later :)
The point is, I ran the risk of all of it backfiring on me. Luckily, it didn't. I got all the votes I needed within a week to get on the Top Rated list, and everything else just fell into place from there. Now, I knew back then, there were many people in the community that were against heavy marketing (won't call out any names). They felt their game should rise and fall on its merits, and its merits alone... Right... Excuse the language, but fuck that. It's a cold, hard modding world out there. You have to do what you have to do.
The following quote is something that applies to many things in my life, and definitely my perspective on modding (for those trying to get a career out of it): Go hard, or go home!
There were many other things talked about, but I'll leave that for when the paper (or whatever it is) is published. In the end though, I had a great time talking to him. You see, I don't have many friends who play video games, and those that do, not many play RPG's, and of those, none play computer RPG's, or even know about mods. So, I rarely have a chance to talk to people about modding in general, except for people I've met through the community, and then again, that's usually just through posts and PM's. This was a 2 1/2 hour long conversation that I really had a lot of fun participating in.
I actually learned a lot myself, because I've never really taken a step back, and analyzed the modding scene for all games. I've been in this NWN/NWN2/DAO bubble, that I really don't know what goes in in the other communities. It was interesting to hear about issues in the Total War communiuty, as well as in the Stalker community. Seems people just can't get along, no matter where they are. Who would have thought it? :)
DIALOG, STAGES, AND AN ANNOYING ISSUE
So, I began writing some new dialogue, as expected. Things started off slowly, as there were some minor consistency things I had to settled in my head before proceeding. Once I got going through, I was able to knock out a huge chunk. I also did a bunch of stage work as well, for obvious reasons. Then, when I went to actually test it, a weird issue ocurred. After the convo was done, the NPC's involved in it were moved from their original positions. Now, I had a similiar issue in the same level, but decided to push it off until I really needed to fix it.
Well, this convo was pretty important, so I decided to actually put some effort into discovering the issue. 10 minutes later, I found it! Turns out, the part of the area they were standing on didn't have a walkmesh. For whatever reason, when the area is loaded, they stand there just fine. If they were shifted in any way, however, the game followed the rules accordingly, and moved them to the nearest walkable area.
The reason I didn't have them in a walkable area is because they were behind some prison bars, and since the player cannot actually get on the other side, the area is not walkable when generating pathfinding. So, I put up a quick thread on it, and moved on to something else. Not even 10 minutes later, Amstrad Hero answered, and 5 minutes later, I implemented the fix, and that was that. Now that's service!
Tomorrow, I will hopefully finish the dialogue, and move on to another pretty important one. If I can finish both, with all the plot events surrounding them, I can consider this weekend a success.
9/24/10 -Friday: MORE ROSE OF ETERNITY LORE RELATED THINGS...
So, I was really tired Thursday night, and for whatever reason, I was hella busy at the office today. This led to me neglecting some interesting lore related threads at the dev forums. I was finally able to answer them tonight, which lifted a slight burden off of me. The culmination of all of these threads is that Jason is going to start working on an official Rose of Eternity timeline (pre The Coming and post the game I'm working on now) . All of this stuff has been in my head for the better part of a decade, now it's time to get it down. Plus, the act of putting it together helps to make it more cohesive, consistent, etc. It will also make for some good codex entries.
In terms of development, I worked on some more ambient related things, chipping away at as much as I could. My textpad document is shrinking steadily, which is a good feeling. Of course it will fill up again with more stuff on my next playthrough, but that's fine. I also started the foundation for some of the conversations I will be writing tomorrow.
And with that, it's time for bed. I have a Skype interview tomorrow morning at 8am, with a college student, who is doing a study on mod developers, and everything involved with mod making in general. Should be interesting.
9/23/10 -Thursday: STEADY DAY...
Today, I continued to implement a lot of things based off of my improvements section of the document I wrote during my last playthrough. Some of the first tasks included ambient related things, such as givng more dialogue to minor NPC's and such. I still have a ways to go, but chipping away at it a little bit every day will get it done eventually.
I did try to implement the overriding of ability_core so I could control when the ability name appears over the head of the user, but it proved to be a little more difficult than expected. As far as I can tell, it's an engine level event which makes calls directly to that script, so I'm having a little bit of trouble pointing it to my own roe_ability_core. Now, there is an engineevents.2DA file that allows you to override some of these events and point them to your own script, but the particular event I'm looking for, I'm not sure if it's possible. I actually tried to do this months ago, and may have even made a thread about it, so I'll search for that existing one, before making another thread. I know I could just make my edit to ability_core directly, but I'd rather not touch it until I absolutely have to.
Finally, I ended the night implementing something I also looked at months ago: Giving out abilities upon level up. So, those who played my earlier games know that you get your first Last Resort at level 3. Tnis traiditon will be continuing in this game. Now, I noticed a EVENT_TYPE_LEVEL_UP event, so I decided to start catching the event in the appropriate party member's core script, and adding the ability there. I did as much months ago, but when I tested giving out XP to said party member, the event never fired. I was busy with other things, so I put it on the back burner. Tonight, I decided to put the issue to rest.
So, I started poking around the existing file, sys_rewards_h.nss to see what happens when XP is given out, and more specifically, how it handles leveling up. I immediately found the issue. Once it's determined that your new XP total after gaining more XP exceeds the amount you need to level, it sets a bunch of attributes meanning the party member can levelup. Now, towards the end, I found a commented out line to a function, called SendPlayerLevelupEvent (or someting like that, can't remember, on the train right now). Why it was commented out, I am not sure. I ended up gutting the contents of this function, since most of it had a bunch of conditions my game doesn't care about, and adding it to my own roe_sys_rewards_h.nss. Besides gutting, I also un-commented the line, and now everything works fine. The instant that party member reaches level 3, you'll get notification of the new ability, and it will be added to the quickslot, assuming there is room.
In other related news, Fernando Melo has gotten back to me regarding getting official support at the audio forums. He has requested that I PM him the most urgent/most asked questions about all things audio. So, I opened up a thread at the forums, and PM'd a bunch of people I knew were having audio issues, mostly because that forum is quite dead, and I didn't really know how often people even went there. Hell, I didn't even really go there that much until recently.
So, if anyone who is reading this this has any questions, please post them in that thread. I will compile the list for Fernando once I think we have enough data.
Tomorrow, I'll be writing some pieces of dialogue. I purposely waited for the weekend, so I could focus as much as possible, and not have to worry about going to sleep early. These are pretty significant ones, so they need my un-divided attention.
9/21/10 -Tuesday: MISCELLANEOUS THINGS...
Tonight was pretty low key for me. I didn't get as much time as I wanted because I needed to do a deploy of some new code for work, and it turned out, I needed to do it really late. What little time I did have, I put to good use. I've been more disciplined in that regard, lately.
I pretty much just continued to go through my list of items, implementing the easiest ones. I did a bunch of re-tinting of various pieces of armor for some normal, and special cast members. In lieu of having new models for equipment (yet), the least I can do is make sure every person in the game has a unique, custom look to them. You won't find any standard DA items/equipment in this game, at least in terms of color, in this game.
For me, this is something I take very seriously. Among other things, my goal in creating games is to make them as unique as possible. This occurs at every level of design, from the story, to the combat situations, to the abilities, to the sound, and finally, to the look and feel of it. In the end, whether they liked it or not, people should at least come away thinking, "Wow, I never played a module like that before". I was definitely able to achieve that with The Coming & Cry The Beloved, so as long as I stick to that same formula, I'll be fine.
I also did a bunch of work with ambient lines for some particular npc's. Depending on what's going on in the plot, I wanted them to say different things, I was just too lazy to implement it. While not finished, I did take care of it for the major cast members. I just have some lowly, no name npc's, which will actually be easier to implement anyway.
As for that whole custom music debacle, as I anticipated, no one responded to my thread on the issues I was having, as I expect most people just don't know the answer. I did receive a response from Dragon Age producer, Fernando Melo today, much sooner than I expected. I pretty much knew the answer to my question about getting some developers in the audio section, and he essentially confirmed it: The developers come to the forums on their own time. I knew I had been spoiled by technical designer, Craig Graff answering questions in the scripting forums on the weekend :) He did say he would go around the office and poke some of the audio people, and at the vert least, see if someone could go into the forums, collect a bunch of questions, give them to the audio guys to ansnwer, and then respond with the feedback. I'll take anything at the moment!
Tomorrow will be more of the game, ending with something I should have done a long time ago. Essentially, anyone who has played my earlier games knows that whenever you perform a special ability, you get a unique text display over your head. So for instance, if you used the last resort, Flurry Attack, you would get something like `the following over your head (forgive the formatting):
In the end, it's just a stylistic choice I made in the earlier games that I am keeping around this time. Anyway, the way the current ability system works, when you execute an ability
one of the first things it does is take the ability name and display it over the user's head. Then, you're about to override stuff that happens with it, but for my purpose, it's past the point where I would want to prefix the ability with the Last Resort tag.
Though I haven't given it much, I don't expect this to be too difficult to fix. I just need to override the existing` script, which I think is ability_core.nss, with my own, then just check the incoming ability id against a preset, static list of ideas stored in an array. If it exists, then append the appropriate tag (this will be used for Unison Abilities, as well as custom core abilities.
Yeah, doesn't seem too hard, but we shall see. Weirder things have happened *cough* custom music *cough* :)
9/20/10 -Monday: MOVING ON...
Sigh... What a annoying night... The exact questions I had with regards to music integration were not easily answered. In fact, they we're not answered at all! I literally spent the entire night trying to:
- Get the custom music to continue to play, even when a battle starts
- Dynamically start/stop music, through the functions, PlayMusic & StopMusic.
I literally got no where. I was so excited about the prospects of custom music just 24 hours ago, and now, I don't even want to think about it. So, I wrote up a lengthy thread about it, hoping for some answers. While doing research for the thread, I did a lot of searching on the site to see if anyone else had these same issues, and every once in a while, someone replied with how to handle issue #2. So, I PM'd all of those people, and pointed them to the thread. Finally, I wrote a message to Dragon Age producer, Fernando Melo and Dragon Age community representative, Victor Wachter. I essentially pleaded with them to see if there is anyone in their entire company that can come answer some questions in the toolset audio forums. We get great support in the other forums, especially the scripting forums. I know there is someone who works at Bioware who has scripted the changing of music via scripting. I demand satisfaction! :)
And with that, I washed my hands of the situation. I'll not waste any more time on it, because Lord knows I have so many other things on my plate. I know a solution will be presented at some point, I just don't have time to figure out the solution at the moment. My sound object implementation will have to suffice for the moment. In fact, the only thing it can't do that I can do with the music (besides being easier to maintain) is play continuously when transitioningn between areas. I can live with that for now.
Jason wrote a bunch of responses to some of the ongoing threads we have in the development forums. This was the one thing I could smile about. Everytime he asks, "Well, why is X like Y", it gets me going, and all sorts of ideas start flowing out of me. I know I've gone on and on about it over the past week, but it feels so good to lock down these loose ends, bringning a consistency to the world. It's definitely an iterative process, but at each pass, things keep looking better and better. In fact, some of the things discussed have sort of influenced how some particular sequences will play out. So, its win-win.
I pretty much finished up a decent sized project at work today, so tomorrow, I should have some down time, allowing me to write a few topics of my own, which I am looking for feedback on. As far as development for tomorrow, I still have about 1/2 a page of improvement items to implement, and possibly 4-5 bugs to fix, so I'll spend my time knocking those out. Oh right, I also have to finish the change to my sound object implementation that I started 2 days ago... Great, more music :)
9/19/10 -Sunday: ALL THINGS MUSIC!
So, for the past few days, while I've been doing a bunch of development, I've also been adding to my existing music collection. Back in the early 90's during the fighting game craze (seems like it is "sort" of repeating right now actually), a game named Killer Instinct was released in the arcades. On thing I always remember about it, besides the jaw dropping CG, and the insane combo system, was the music. How happy was I when the game was released for the SNES that they included a CD with all the arcade music on it! Over the years, I lost track of the CD, and every so often, longed for the days when I could just pop it in my CD player. Well, I did some searching on the net, and came across a nice fellow who had the same CD, and decided to upload the tracks.
Then, a few years later, in 1995, the original Playstation was released. The co-author of Rose of Eternity, Brian Rhodes, was the first kid on the "block" to get it, and the first game we played was a demo of some new 3D fighting game, called Battle Arena Toshinden. We both almost died on heart failure upon seeing it in action for the first timne. Like most PS1 games, it hasn't aged well, but for the times, it was beautiful. Oh yeah, and obviously, the music was fantastic. Well, with early playstation games, you could pop them into a CD player, and actually listen to the music. So, I did that, and made a cassette tape copy of it. Good times. Of course, I lost that as well. Then, I found someone posted them on their personal site, and I happily DL'd them. Listening to that soundtrack really brought me back. Good times.
Finally, I must have spent about 3 hours at vgmusic.com downloading remixes to all my favorite NES games, such as Ninja Gaiden, Mega Man, and Super Dodge Ball. Now that totally brought me back a few decades. They're all in MIDI format, so I'll have to convert to MP3 (or maybe WAV first, then MP3, I'm not entirely sure) before I can get them on my iPhone. Can't wait!
So with everything that happened over the weekend, it only made sense that I FINALLY integrated custom music into the game, more or less, the RIGHT way. Following Cuvieronius Tutorial was a bit of a long process, as I was distracted by many things going on in the house (like my Giants getting their ass handed to them by the Colts!), but in the end, I was successful.
So what does this mean? Why is this better, over say, my sound object implementation?
- The most obvious is now I can set the area music preset to some default custom track, selected from a drop down. Much easier than dropping down a custom sound object, and activating it
- Managing multiple sound objects started to become a nightmare. Even with my fix I outlined yesterday, I still had to add a new sound object to every level that would be playing the music. In some instances, like 5-6 levels would need like 5 sound objects for the different music that plays, depending on the scene.
- This next one is HUGE for me. For areas that use the same custom music, when transitioning between then, whether you're going through a load screen, or simply quick transitioning because they're part of the same area list, the music is continuous. That's right, no more music stopping just because you left an area. For me, this coupled with area lists makes the world a little more seamless. Obviously, for those who played the OC (who reading this hasn't?!), this is standard fare. But, with my sound object way of doing things, I lost this feature.
- The existing framework for music in Dragon age allows you to define some standard pieces of music, and the game calls them accordingly. The main three are "main", "Combat", & "Death". So, when constructing the event objects (that's what FMOD calls each "music" even, if you will), I just add my tracks to the right event, and the game takes care of everythingn else. I've already got the death theme picked out, as it was something I wanted to use in my last game, but just ran out of time.
Now, some open questions, that I hope to get answered tomorrow night, are:
- How do I make it so no combat music plays in an area? For instance, the area I used as a test doesn't have combat music, so I only defined the "main" event. When combat started, that music stopped, and no music played. Do I delete the "Combat" event? Do I put the "main" music into the "Combat" event as well?
- If there is combat music, how do I change it to some boss music? As far as I know, there is just a single PlayMusic function, that perhaps only works for the "main" event.
- Speaking of PlayMusic, how does it work? I've seen numerous threads with people saying they can't get it to work. I seem to remember I just need to pass a full path to it, so something like "ROE_Music_Event_/Cutscene/Sad_Theme".
Once these questions are answered (hopefully, successfully!), then I just have to integrate it into my module. This should be fairly straightforward. The bulk of the work will be adding the soundn events to my FMOD project. In terms of scripting it in, as I mentioned yesterday, I already have a wrapper called SwitchMusic that I will use. So, I just need to gut out the existing contents of it, add in the new stuff, and make a new constant for each music track. That should be it.
I'm really excited about finally getting this in, so this is definitely my number 1 priority when I get home from work tomorrow.
9/18/10 -Saturday: MORE BUG FIXING, AND UM... CUSTOM MUSIC!
Today was more of the same. I first knocked out the game breaking bug that stopped me from continuing my testing last night, and went through it again... Only to run into another game breaker, but luckily, it was near the end of what I have developed so far, so I wasn't as mad. Then, I continued to go through my list of fixes/improvements, knocking out the real easy ones as fast as I could. They weren't that interesting, so I'm not going to waste time talking about them. Actually, let me take that back... One improvement is worthwhile: Custom Music.
So, as many people know, since I was never able to get custom music into the game properly, I created my own library of scripts to manipulate the music through sound effects. I use FMOD and all that to get them into the game, and then placed the appropriate sound objects in their respective levels. Then, I just ran some utility functions to handle turning off sound effects, and starting new ones. It was a quick and dirty solution at the time, as I literally passed in the old sound to stop, and the new one to start. Well, it started getting out of hand, so I made it a little smarter by storing the currently played music, and whenever switching the music, just fetching it from a cache, stopping it, and storing the new one. Something like this:
* This function will store the current music.
void StoreCurrentMusic(string sNew)
string sCurrentMusic = GetTag(GetArea(OBJECT_SELF)) + "_" + sNew;
StoreString(CACHE_CURRENT_MUSIC, CURRENT_MUSIC, sCurrentMusic);
* This function will switch from one track to another.
* It will use the music track stored in a level specific cache.
void SwitchMusic(string sNew)
//get current track
string sCurrentTrack = FetchString(CACHE_CURRENT_MUSIC, CURRENT_MUSIC);
//stop playing current music, and startup new one
//store new song in cache
As with anything you script, it should be easily extensible to other implementations. For instance, at some point, I will do music the real way. Well, since I already wrap all music functionality in this single function, once I do make the switch, I just need to replace the contents of SwitchMusic() with the function, PlayMusic(), which handles all standard music . Nice, easy, and clean. Oh yeah, about doing it the real way...
...Turns out someone did the hard work for me! Community member
Cuvieronius wrote up a tutorial on how to do the integration. I only skimmed it, but I was really close with my solution. I was importing straight MP3 files, instead of WAV's. Ah ,the little things :) I am really excited about this, and tomorrow will be totally devoted to getting this in.
You see, this is what I love about he community. There are experts in many different fields, so when you're havng issues with one thing, don't just quit your module, saying, "It's too hard to do anything in here. This damn thing is broken!". Just move on to something else, and someone will figure it out in the end. Tomorrow is going to be a good day!
9/17/10 -Friday: REALLY? AGAIN?!
That's what I was thinking, at around 2:00 am, when I realized that after fixing a bunch of bugs, and restarting the game so that I could get past a certain game breaking bug, I forgot to fix the actual game breaking bug! Sigh...
It's not even a big bug, per se. Essentially, I only keep one copy of each creature, if possible. None of that having different copies in different areas crap for me. Because of this, when testing a certain area that is not part of the same area list as the beginning of the game (where a particular party member starts out at), I just drop them in the area. Problem is, if I leave them in when doing a full run through, I end up with 2 copies, which obviously breaks things all over the place. And so, with that, I called it a night... I mean, I guess things could be worse... I could look like the soldiers in the above picture :)
Earlier though, I had great fun sifting through the bugs/improvements/etc. and fixing the real easy ones. There's some weird feeling of accomplishment as I fix things all over the game, making it even more and more polished. I can still remember 9 months ago when all I had was 2 levels, a few npc's, and a few combat sequences. Now, I've got so much more, and even still, there is even more to do.
Depending on how the bug fixing goes, I may start looking at ambient related things. For instance, I have this huge area, but it's just filled with key npc's at the moment. I need to get some ambient activity in there, to bring it alive. I might slip a quest or 2 in, but it has to make sense. I won't be adding it for the sake of adding it.
All in all though, things are looking mighty fine.
9/16/10 -Thursday: PLAYTESTING NIGHT...
So, no post on Wednesday, because all I did was play Halo: Reach with my friend. Now, I'm not really the type of guy to play the single player campaign of a first person shooter, but my friend really wanted to play the co-op, so I went ahead and obliged him. All in all, I think we played about 5 hours, and while a lot of the missions are pretty cool, it's not really my thing. Once we're done, we'll get to the real meat of the game: multiplayer.
You know, I love how people like to call certain games like Call of Duty or Halo mindless shooters. "There's no depth, all you do is run around and shoot people!". As is with most stereotypes, it's just a bunch of bullshit. The games aren't mindless shooters, though there may be people who play it that way. Hell, there are people who play Dragon Age and skip cutscenes/dialogue, just wanting to kill stuff. Does that make it a mindless hack & slash RPG? Me and another friend (not the one I'm playing Halo with right now) prided ourselves on our strategic gameplay in whatever shooter we were playing. We played together so much (well, before he had 2 kids!) that depending on the map that loaded up in Modern Warfare 2, we automatically knew what the strategy going forward was. Communication was, and always will be the key. That why I will never play those types of games with randoms. It's a shame, I miss those days... Some of my best gaming experiences of the past 3 years have been with multiplayer shooters. If there wasn't Rose of Eternity, maybe I would be trying to develop a shooter...
Anyway, tonight was pretty straightforward. I did some minor minor plot related scripting, then scoured all of my scripts to make sure I was setup to make a run through the entire game thus far. I checked scripts for like 20 minutes, and still wasn't able to make it through the game, as a plot script that should have fired, didn't because I had commented it out for testing purposes. Sigh... Before that happened though, I was able to write down a lot of things. I would say 30% were bugs, while the rest were improvement related things.
This is maybe the 5th or 6th iteration of me playing through the game, jotting down notes (by jotting, I mean windowing out of the game and typing it in Textpad), and fixing whatever issues I find. I will continue to do this, as I think in the end, the game will be a lot more polished. This strategy served me well with Cry The Beloved. Hell, I had like 6-8 alpha testers going through it after only 4 months of development, when the game wouldn't be released for nearly a year. It's so important to get other people to play your game, so you can know early on if the stuff you're doing makes sense. With that said, I want to give out an ALPHA build of the game soon, and so I'm just tying up as many loose ends as possible, to make it easier on the them.
Tomorrow, I will cleanup as many things as possible, un-comment the thing that stopped me from finishing my run through, then finish said run through.
9/14/10 -Tuesday: LOTS OF THINGS...
First things first:
So, I was going to enter the only "settlement" like level I had created for their first contest: "Contest 1 - Settlement Level", but I got the dates messed up with the custom content ccontest which comes later in the month, and just didn't have the resources to get anything done on it. It's probably just as well, because after looking at the submissions, I am really impressed. My current level, which I haven't put too much focus into, as it was just there for prototyping reasonsn, just wasn't up to snuff. Oh well.
There is also a mod that
mikemike37 put together, which allows you to run around the different levels in game, to really see them up close and personal. I plan on doing that in the next couple of days.
Personally for me, one particular good thing has come out of this. If I am really impressed with a level, I may try to reach out to said author, and ask them if they want to join the Rose of Eternity Development Team. Yep, it's getting to that point where I will want some level designers to help out.
Speaking of which...
These continue to output a lot of great ideas. It reminds of me of the days when I used to brainstorm with then co-writer, Brian Rhodes. I would come up with some cool concept, and then he would expand on it. Always in that order too, actually. It was like, all we needed was a spark, and then all sorts of ideas would start flowing.
Well, that sort of happened last night/tonight. In between a bunch of emails, before setting up the developer group over at BSN, I decided to just straight up tell Jason all the major events of the game, things that won't even take place in this current game. It made sense, because as we write stuff here, it's going to have to be consistent with things going forward. Well, once I got that off my chest, he sort of took it and ran with it.
One idea in particular, I came up with back in 2008. I had just started listening to the music of some new artist I found on Pandora, and since I wasn't actively developing, all I did was brainstorm, while hanging out by the river, soaking in the sun. So, I came up with the idea, and more or less put it on the shelf to think about later. Now, it's expanded in all sorts of directions, and in a good way. In this way, I love collaboration.
I haven't had this fun with this particular aspect in a LONG time.
So, that pesky issue with npc's staying in the "Sitting Chair" pose after a conversation remains. I figured someone on the forums would have already ran into this issue, and already knew the solution, but alas, there was nothing. There was a thread on it, but the guy didn't get any help, and ended up doing what I don't wann to do: having a temp npc do the sititing, and when the convo ends, swap them out with the real one. Now, don't get me wrong, I'll do what I have to to achieve what I want, but I'll sit on this for a few days and see if any real solution presents itself. Managing multiple copies of the same npc is just hella annoying. At any rate, I just continued on with the post conversation scripts, ignoring the fact that 2 of them decided to sit on air in the corner :)
Tomorrow, I have to go back to a particular cutscene and swap out one cast member with another. While playing through the game, it just didn't make sense for this one person to be there, and this one to not, so I decided to do the old switcharoo! One just has to be removed outright, which is easy enough. The other will have to be added behind another one, andn actually be annimated a bit, with some walking and such. Nothing too major, just something I want to get over with.
After that, I'm not sure how much else I'll get done. Halo - Reach came out today, and I have some friends who want to play through the single player campaign co-op, so I'm going to pick it up tomorrow while at work, since there is a Bestbuy next to my office building. I usually play shooters for the multiplayer aspect, as I've never played the SP campaign for Modern Warefare, Call of Duty: World At War, or Modern Warfare 2. Halo is a little different in this regard, since it offers full co-op, so we'll see. It'll just be getting me ready for the totally revamped multiplayer anyway. I just hope my friends and I can still put in some time. 3 years ago, we played the shit out of Halo 3 and Modern Warefare. 2 years ago, we played the shit out of World at War. 1 year ago, we played the shit out of Modern Warfare 2, and this past summer, we put in a lot of time with Battlefiel: Bad Company 2.
Now, both of them have kids, one of them, 2. And I just got married. Ah, responsibilities and such :)
9/13/10 -Monday: ROSE OF ETERNITY LORE...
In terms of actual development, I worked on some post conversation related things. This just includes some NPC's exiting the room, another set walking to a corner to continue a private conversation, etc. Sounded simple enough as I started it... Then, I started running into some really annnoying bugs. The main one waa as such: In the conversation, many of the npc's are in a "Sitting On Chair" pose. After the scene, they're stuck in that same pose. So, when I have them walk over to a corner, and set their ambient animation to show some "talking" type animations, they perform said animations, then proceed to sit in the air. Sigh... Not wanting to really deal with it anymore, I posted a thread at the forums. I put my faith in my fellow modders :)
Another thing that took up a lot of my time was getting a Rose of Eternity Developers group setup at the Bioware Social Network. Setting it up was easy of course, it was the privacy settings that were causing me some issues. No matter what settings I selected, if a new thread or post was created, it would show up in the regular news feed. Jason figured out if you just "X'd" out the comment on your profile page, it would disappear from the news feed. I knew that Sunjammer had a private group, so I sent him a quick PM, and his solution was the same as Jason's. Meh, whatever, it works.
Next, I began to fill it up with some starter threads, like a thread dedicated to discussion about the Bonus XP System, or Core Abilities for party members. Also, ever since Jason replayed the original 2 games, we've been having a back and forth via email about certain things, so I just created some new threads there to continue said conversations.
In terms of our discussions, it's mostly been about the Rose of Eternity lore, why "something" is that, why "that" person has done this, what has "this" person been doing for the past 20 years, etc. Essentially, filling in the holes on everything in the world. In the first 2 games, I sort of took the George Lucas approach. I would put stuff in the game, not really explain it, and the player was just supposed to accept it as is. Now, this works in certain conditions, but other things, I desperately neded more backstory. So, that's what we've been doing. He'll send me a message asking about the history of something, I won't have a detailed answer, and then we'll go back and forth brainstorminng on how to flesh it out.
The entire process is extremely fun (for me anyway!), and in particular, one major...um, event... in the game is currently being refined, and I'm happy with the results thus far. All of this work we're doing may not even make it into the game, but it's good to have the backstory nonetheless, as it makes the writing much easier. Also, since this just involves writing posts, this can be done at work during downtime, so I'm not losing actual dev time at all. In fact, I have about 3 topics I purposely left to deal with tomorrow at work.
Finally, all of this discussion will be good for any new people that join the team. They'll have tons of information to sift through, and maybe many of their same questions will already be answered.
9/12/10 -Sunday: SIDE QUESTS & FLESHING OUT THE STORY...
Today was a pretty good day. Let's see... The NY Giants won. Check. The Dallas Cowboys lost. Check. The US Open Men's Finals was delayed until tomorrow, giving me time to do some other things. Check. I was able to flesh out the existing story. Check. Yeah, a good day indeed :)
With regards to development, I was supposed to knock out some dialogue, then run through the game. Then, as I was writing, I started getting some ideas on how to expand said convos. Then, as I was expanding them, I realized I could potentially turn it into a small, personal side quest.
Now, I have definitely grown as a game designer in the past 6 years, and one aspect of that is in quest design. In The Coming, I made the rookie mistake of adding pointless quests, like "Kill 20 burrowing beetles", "Get 10 wolf skins that randomly drop off of killed wolves", and others. I was rightfully zinged by many reviewers for that (Alazander & Berliad come to mind). In Cry The Beloved, things got slightly better. I still added a bunch of quests to fill the game out, but at least this time, they were for the most part, related to the core story, allowing the player to learn more about the world.
It's this path I am taking this time, except I won't just be adding quests for the sake of adding quests. This particular one that I came up with today is perfect, because it directly ties into the current plot. In fact, after getting this potential quest, the very next sequence will be affected. Now, as I mentioned before, it's not a big quest, but I really think it's going to expand on a previous sequence that occured, and give the player more insight into why certain things are happening, and how others feels about. It also brings the people around you to life a little more. Now don't get me wrong, I definitely appreciate side quests that don't tie into the main story. It's just, there's a time and place for it. No superfluous quests here!
It wasn't all fun though. I had to suffer through a weird issue, where the npc that you talk to, who is sitting on a bed gets moved forward a few meters after talking to him. So, he would still be in the sitting animation, just now sitting on air. After sifting through the forums, I found out there was a variable I could set on him, called PHYSICS_DISABLED, that would keep him in place. Once that was in place, everything else worked perfectly.
All in all, it's nice to finish things like this. This set of areas has been sort of "dead" for months, as I've focused on all the hard things (combat, cutscenes, etc.). It's now starting to resemble what it's supposed to be. Go figure :)
9/11/10 -Saturday: MORE LEVEL DESIGN...
Well, the 2 rooms I was supposed to work on today turned into 1 room, but in this particular room, I added a lot of things, inclduing the lighting, props, and npcs with some ambient dialogue. 1 or 2 of the npc's in here willl have longer pieces of dialogue, but I'll write them tomorrow, after I think about it for a bit.
The level design itself is pretty standard issue at this point. It's a room in an existing level that is using a particular structure set, and since I already have lots of prop groups set up, creating these areas goes pretty quickly. I did run into one interesting issue today, I wanted to simulate someone sleeping in bed, and used the "laying asleep in bed" ambient AI, which at first glance seemed to work perfectly. However, after looking more closely, you can see the creature has their eyes open. Seriously, what the hell? Really? Oh well, what can you do :) I may mess around with some death animations, and see if they work. If not, it's not a big deal, I can just scrap that little bit of ambient stuff going on in the area.
Finally, I've gone on a music purchasing binge these past few days. This one particular group I talked about the other day has some really good music, and I just needed as much of it as I could get my hands on. Interestingly enough, all of this music isn't original, instead, it's re-imaginings of certain songs from certain artists. I am of course a fan of these artists, so to hear a different spin on their classics is really cool. And yes, I've been brainstorming like crazy when listening to this new music, and have come up with a bunch of smaller things, mostly to make the entire story/world seem more cohesive.
Tomorrow, I'll write some more dialogue for some of the NPC's in this area, do some more gluing, then I really want to finally run through the game a couple of times, taking as many notes as I can.
9/10/10 -Friday: NOT MUCH TODAY...
I didn't do a whole lot tonight. I just resigned myself to some gluing tasks, as I was pretty tired, for some reason. Probably because I'm only getting 5 hours of sleep a night :) Also I may have not got much done because I spent hours watching some Final Fantasy Retrospectives at Gametrailers.com. Yeah, that might have been the reason :)
At any rate, I decided to get away from some cutscene related things, and handle some of the aforementioned gluing of certain sequences together, as well as a little level design. There's been this area I created months ago that needs 2 more rooms. Then of course, I'll need to populate it with a few NPC's, to give it a little life.
Speaking of which, that's one of the glaring holes in the game at the moment. I haven't spent too much time on those smaller details, like NPC's going around doing their thing. The way I saw it, that's the easy stuff, let me get the difficult stuff out of the way. Well, now that the difficult stuff is more or less done, I need to come back and polish the HELL out of things. This is probably my least favorite thing to do, but, what're you going to do.
After I finished up those 2 rooms, I think I am going to do a few run throughs of the game, and expect to get a few pages worth of notes. Then, I'll work my way through them over the weekend. Why? Well, it's semifinal/finals weekend for the US Open, so I will be glued to the TV.
9/9/10 -Thursday: MINOR TWEAKS TO EXISTING SYSTEM...
Today, I tweaked the system I created yesterday. More specifically, I changed how it will be used. All I can say is that it is something that will be used by all party members. Now, how it's used changes, depending on who the party member. After I implemented the framework, I ended up putting a bunch of party member related logic inside the same script. This meant checking party members tags in a big if/else conditional, then applying the corresponding logic. Being a programmer and all, this just wasn't a real elegant solution (and I sort of knew it while doing it, I just wanted to see if it worked).
The changes I made were pretty simple, actually. Currently, all party members already have their own core scripts, that override my generic party member script, roe_player_core, which of course overrides the default Bioware one, player_core. So, I decided to move out the party member logic to their core scripts. Then, in the main framework script, I just send out a new custom event I created to the correct party member, and let their core script handle it.
In the end, it's more easily manageable. With the old way, whenever I created new party members, I would have to add them to the big if/else condition statement, then add their party member appropriate functionality. This way, I don't ever have to reference a party member by name and/or tag. I'm just getting a list of party members using the standard GetPartyList(), and sending out the event to the right one. The function, SignalEvent will already know to use the default script on the target, so I don't have to do any logic there. All that has to happen is I need to catch this event in the core script, get the party member related info I need, then pass that back to the main framework script, to finish the execution. And, in the case that by change I do add a party member (perhaps a temporary one) that shouldn't use this functionality, I don't need to do a thing. They will simply not catch the event, and execution stops.
Let's see, what else... Oh yeah, so I found some nenw music I am really enjoying, and it's not neccesarily something I want in the game. When I was a kid, my Mother used to always listen to this guy named George Winston, who has a bunch of solo piano recording albums. I probably fell in love with it, because I too played the piano in my early years of life. Anyway, I only really owned a few albums, like December & Forest, which I simply loved. Well, while listening to Pandora a few years ago, a group called The Taliesan Orchestra came up, and they were playing something that sounded familiar. Turns out, they took his music, and re-did a bunch of them. I immediately bought 3 out of the 10 tracks, mostly determining things by listening to iTunes' standard 30 second preview. Well, for whatever reason, I decided to give a listen again, and I was floored. This time, I used a competitors music streaming app (since we didn't have this album in our catalogue, I'll need to talk to the content team about this!), so I was able to listen to every track from beginning to end. I was about to download all of them, but then I remembered some weird issue where my AMEX card tied to my iTunes account is showing up as invalid, which is not correct. Sigh, I hate dealing with customer service, but that's what I'll have to do tomorrow if I have time...
Finally, being the lazy SOB that I am, I finally got around to putting up an ad hoc form of a quick links section at the top of this blog. Nothing fancy, really, it just shows the sites I go to everyday. I think this sort of cross pollenation of blogs is really important. For instance, you all know I track my site's statistics like a damn accountant. A big % of referrals from other sites comes from none other than Timelord's Blog . In fact, he's right below referrals from my project page at the BSN, and my NWVault page, which still brings in a huge amount (being ranked in the top 5 certainly helps :) ).
Anyway, I'm sure this design wiill change at some point, but I wanted to get something up. Oh, and there's more to come. These are just the onens I have set as favorites on my laptop. I have more on my desktop at home.
9/8/10 -Wednesday: NEW SYSTEM IMPLEMENTATION...
So, as part of the feedback for my earlier games, Jason mentioned that he hoped a particular feature was going to make a return in this upcoming game. Sadly, I had actually forgotten about this feature. Embarrasing, actually. Since I was watching up a bunch of tennis tonight, without the need to actually focus too much, I decided to implement it.
The basic implementation was obviously already done in the earlier games, but as I cannot find my NWN1 disks since moving to my apartment, I couldn't install the Aurora Toolset and get into my scripts. Even still, the core of what had to be done wasn't too hard. It was really just about finding the most elegant solution, which could be extended as easily as possible.
On the framwork was done, I did a quick and dirty implemenation of it. The good part was that it worked perfectly. The bad thing was that it was a really ugle implementation, so tomorrow, I will go back and change how I use this new system.
And, and obviously, as I stated earlier, I can't really get into the details of some of these newer things, because I don't want to spoil the entire game!
9/7/10 -Tuesday: DOING WHAT I SHOULD HAVE A LONG TIME AGO...
Well first, I decided to install Drop Box on my desktop and laptop. I was going to go with Windows Live Sync Beta, but apparently, they don't support Windows 7 64bit Professional Edition. Everything else, but that. Sigh... Anyway, it's decent enough. It creates a drop box folder on your machines, where you can store files. As long as both machines are connected to the internet, as soon as you add/delete/modify one file on one machine, it's changed on the other. Like I said before, this will be good for when I'm writing my blog, or just writing various notes in textpad on the train. It would be better if it integrated into existing folder structures, but it's okay. I'll definitely try out some others, until I find what works best for me. I don't have that much to keep in sync, so it's not that big of a deal.
As a small example, I'm currently writing this part of the blog on my desktop. Since my laptop is on, and connected to the net, every change I make it being saved to it. Tomorrow morning, I'll be able to finish off where I left off, without having to email myself, or copy things over with a USB stick, or anything like that.
The other part of the night was devoted solely towards Rose of Eternity lore related things. As I mentionend, Jason played through the first 2 games of the series, and gave me a lengthy email with tons of feedback in it. He of course went over what worked, versus what he thought could be improved. Then, the last section of the email was a ton of lore/story related questions and the such, things that weren't entirely clear from playing the game. It was a pretty big email, but I wanted to answer every question/comment inline, so that took a few hours.
Next, I sent him an email basically giving him a huge overview of the main plot points of the entire story arc, as concerived back in 1999. It was good to write this, as well as read his comments, because it got my brain working overtime, coming up with all sorts of ideas and such. For instance, he may have had a question like, "Why does this faction do this?", and my initial answer would be, "Hmm, I never really thought about the underlying reasons", but after thinking about it a bit, I would end up coming up with something.
Long story short, he pointed out that we need to have a full history of everything, written down, not just vague ideas in my head that I flesh out on demand. It has worked in the past, but as the game world continues to grow, it's just not as easy anymore. I've already written many times about how I knew this was needed, but the events of tonight just made it ring true even more.
An added benefit, as he suggested, is that some of this stuff can end up going in the codex. Is it a lot more work? Hells yeah. Is it worth it? Hells yeah. It will also help others who end up joining the team, as development progresses. I know this isn't anything revolutionary, but for me, it is.
9/5/10 -Sunday: CUTSCENES, ANIMATIONS, & VFX'S OH MY!
So, today was all about this one particular cutscene. There isn't really much to it, in terms of camera angles and actor movement, but it did require some VFX's I've never used before, as well as new animations. I started with sifting through many annimations, using the event editor. It's actually perferable fo rme to view them this way, because you can simply select an animation, hit the play button, and watch a creature perform said animation. This is especially handy when viewing OC cutscene specific animations. These are denoted by cs_ (i.e. cs_alistair_crowing), and are unique to certain events in the OC. That said, some may actually be useful in Rose of Eternity, hence the reason why I search through them. While I didn't find what I was looking for, I did find some that may be used eleswhere at some point. So, I just started my own little list of animations I would like to use, because honestly, there are so many that it would be really easy to forget.
Next, I moved on to VFX's, using Beerfish's excellent Excel Utilities. These are a little more annoying to view, because you need to add them to a cutscene, link them to an actor, and play a part of the cutscene to see what it looks like. It's a really clunky way of doing things, and I have to say, I truly miss the VFX viewer from NWN2. Hell, the Animation View from NWN2 as well :) Now that I think about it, you may be able to view all VFX's in the VFX editor that comes with the DA toolset, so that's something I'll have to check out when I get home. Anyway, while I did find some nice VFX's, nothing really caught my eye. I can make due with what I have, but I may need to revisit it, possibly with some custom ones.
Well tomorrow, I'll be at the US Open all day/night, so I won't get any development done. Hell, I'll be away from the internet for a day. Not sure I can make it! *taps wrist like crackhead about to shoot up*
9/4/10 -Saturday: CONVO DONE... ON TO ANOTHER CUTSCENE...
So, I finally finished that long convo today. Well, for the most part. I'm going to have to go in and clean things up a bit, and of course, I'm sure parts of it will be changed by the time the game is released. But more or less, it's done. Which means I can move on to this next cutscene.
In typical fashion, this cutscene should be easy, and very short, but we'll see what happens during the implementation of it. There is a respective track that goes along with the scene, but I only need a snippet of it, so I'll use Audcity to chop it up first. I'm not entirely sure how that will go either. There is essentially a part I will definitely keep, and another part that is up in the air. As a matter of fact, the part that is up in the air will actually increase the length of the cutscene, which I'm not really to keen on.
After that, there are a bunch of things I could do. Yesterday, while I was out driving, I was listening to some music that I recently put in, and got an idea for how some particular events should play out. Sigh... This of course means more work for me, but in the end, I think it's going to make an existing scene even more powerful. The work itself isn't hard, it's just a bunch of small things I need to coordinate. Lucky for me, it's not something that has to be done in order for me to keep implementing the plot, rather, it's more of one of those things I'll come back to at some point. Or, maybe I'll get inspired and just do it tomorrow :)
I could also work on some more gluing tasks, which would involve running through the game a bunch of times. I actually haven't done so in a while, so that might be fun.
Finally, there is some scripting works that needs to be done. Another custom ability has to be implemented, and an existing system needs some refinement.
Either way, I need to do as much as I can tomorrow, because Monday is all about the US Open. Yes folks, I'll be there from when the first ball is hit, until the last one is. It's tricky, purchasing tickets. Clearly, I'm a Federer fan boy, so I wanted to make sure to get tickets for a day when he is playing. For those that don't know, the way it's set up, the top half of the draw plays on one day, and the second half plays on the next day. So, I literally couldn't buy tickets until the draw came out. If Federer played on Monday, I knew I would be getting tickets for the round of 16 matches on the following Monday. If he played on Tuesday, I would be getting tickets for the 3rd round matches on Sunday. Then of course, you won't know when he is playing until the night before. So, I had to get tickets for both the day and night sessions. Oh, and the tickets have been sold out for weeks, so I had to get them through some ticket exchange thing. Oh well, I'll see other players I like as well, so it should be a fun filled day/night.
EDIT - Oh, and because I'm an idiot, I just learned how to take screenshots without the GUI :)
9/3/10 -Friday: LOOOOONNNNNGGGG CONVO...
As the title suggests, I worked on an extremely long piece of dialogue today. Not only was it long, but it's really important as well, possibly the most important one I've written to date. And no,this isn't hyperbole, I really mean it.
The ability to write dialogue for a pre-determined PC, that happens to have relationships with others, is something I may have underestimated. In The Coming & Cry The Beloved, the main protagonist, Aramus, was suffering from amnesia. Therefore, everyone he met was in essence someone he didn't know. So, I didn't have to worry about creating roleplaying options, talking about stuff he may say to someone he's known for 20 years.
This time around, there are 20 years of history that the main PC has with certain individuals. While the game will not just focus on those relationships, they will come into play a lot, epsecally in the beginning, or exposition, if you will. I've already had to write dialogue like this, but with this particular cast member, it's a little different. It's certainly fun to write, but it's a very delicate thing. Add in the quanity of dialogue that is needed, and you can imagine how much time it's taken. In fact, I'm only about half way there, but expect to finish it tomorrow.
In other related news, I need to get on my game, and do a backup of everything. I've already gone over my limit with the one hosting service I use, and have no issue with paying for to have more space, so I need to stop being lazy and get that done. Then, I'll need to do the normal backup of files and such, make a B2B export, and export the entire DB as well.
Finally, I am thinking about signing up to use Windows Live Sync. One of the CEO's of my last company wrote a blog entry about it on his Facebook page, and I realized, it may be something I need. Essentially, it just keeps files between many computers in sync. Clearly, everything is moving towards cloud computing. I mean, that's what I do on a day to day basis. At my company, Thumbplay, Inc, we have a music streaming service that syncs between our iPhone app, Android app, Blackberry app, and Desktop app. So, I already know all about it, and the advantages and such.
So for me, I do most of my work on my desktop. However, I still use my laptop for various things, like updating this blog, as well as editing certain project related files. Once I get a new laptop, I will want to keep my B2B files in sync, so any work I do on the train can be exported and synced with my main setup at home. There are, of course, other services like this, but I do trust the word of my old CEO, because, well, he's made millions in all sorts of technology driven companies, so he must be doing something right :)
9/2/10 -Thursday: SEQUENCE SETUP...
So, I did some more work with the current sequence, mostly setup type things. It's really a bunch of monkey work. One part was laying out waypoints for cast members so they could be transitioned to the appropriate place. Remember, I'm not following the way Bioware did things, by having copies of npc's in each area. I already spent all sorts of hours on my transitioning system, so I'm just using that. One nice thing about systems is that for the most part, you make them, then it's an afterthought. I'm just using one simple method, and there is a bunch of crap going on under the hood to make sure the transitions work properly, but I don't have to think about that anymore. Anyone who was following the blog back then knows how annoying it was to get it working.
Then, I worked on the plot related scripting aspects of it. Since I'm reusing an existing area that already has a ton of crap go on in it at various points, I need to make sure each person is where they need to be, depending on where the player is in the story. This also means deactivating certain npc's, who should not be in said sequence. It's not hard work, just like I said, a bunch of monkey work. Everything can't be as glorious and as fun as designing custom abilities :)
I still haven't figured out the music I want, but I've narrowed it down further. It's essentially between 3 tracks at the moment, and I expect I will make a choice in the next day or so. The integration will be extremely easy, I just need to make sure to switch to this new music in all the areas where some other default music is playing.
Tomorrow should be a good day/night. As is the standard in my office, whenever we have a long weekend, we are allowed to leave at 1pm, which makes it essentially a 4 hour day. My commute takes 4 hours. Put 2 and 2 together, and you can understand why my boss is allowing me to work from home tomorrow :) That makes for 2 days in a row, and then the long weekned, so 5 days not being on the train! Life is good.
9/1/10 -Wednesday: WHERE AM I IN THIS CRAZY THING WE CALL GAME DEVELOPMENT?
Tonight, I took the dialogue I wrote last night, and added some more roleplaying options for the PC, and in general, just spruced it up a little bit. Then, I attached some plot related scripting to the end of it, and tested to make sure that was working correctly. Then, I worked on different camera angles for the stage that compliments the convo, and that was pretty straightforward. What pissed me off to no end was some lighting issues. The lighting on some of the faces wasn't really bright enough, so I tried all sorts of things to brighten it up, including adding some more static lights, increasing the radius of existing ones, etc. I know what I am doing with regards to this, so I'm really at a loss as to what was going wrong. No matter what I did, things were still dark. I quickly realized it's something I'll come back to anyway, as there is more work to do on the level anyway, so I just left it alone.
Tomorrow, I'll add in some more cast members to this area, and work on their respective pieces of dialogue. The one thing I am wrestling with is the music that will play in this particular area. Because of what will be happening in the game, plot-wise, I know I need to go with a specific mood theme, rather than use the existing music that normally plays here. There's damn near 6 candidates, so I just have to wittle those down one by one until I find what I need.
STATE OF THE UNION
Right, so here we are, September 1st, 2010, roughly 9 months into development. I'd be lying if I said things have gone exactly as I predicted them to go, this time, last year. Then again, that's what happens when you're working part time on a game, using a new game engine.
All of that said, the outlook on the future is looking very, very bright. First and foremost, as has been well documented on here, I am extremely close to getting a new laptop. That right there speeds up development by a factor of 2. I don't need to stress how big that is. All that needs to happen is for me to do a little more research on a particular laptop Timelord picked out for me, balance the old bank account, and then, verify I am actually as financially stable as I believe I am, and then get it. Simple, right? :)
Another positive is that Jason Melancon has been sent the documents I've prepared for him, and surprisingly enough, he's replaying The Coming & Cry The Beloved, to get his mind right, story wise. I mean, what better refresher than that? Truth be told, I actually replay the series once a year, for a couple of reasons:
- Look at things objectively, and see what really works, and what really doesn't. I think as a game designer, you need to always look to evolve past your last game, to try to outdo it as much as possible. I literally look at some things I did in those last games, and just cringe. That's not to say they're not good games! It's just I'm a perfectionist, and what may have been deemed okay back in 2005 isn't neccessarily so in 2010.
- It's hard to really talk about, but I like to replay the series to get that feeling back. The feeling of the world, the game play, etc. It's one of those intangible types of things, something that can't really be explained. But, whatever that thing is, I want to make sure it's felt in my subsequent games.
- Truth be told, I actually enjoy to play my games. Go figure! Seriously though, last time I played through, I probably played the last 6 hours of it in a row, because I was excited to see all the events I knew were going to happen. I know, it's weird, yet very true.
Anyway, I'm really looking forward to his input in just about every apsect of the game. It's also motivation to keep development going at a brisk pace.
The last big thing has to do with development, itself. I am finally getting to the end of this huge sequence that I've been working on for God knows how long. There's lots of expositon, a lot of characters, both old and new are introduced, and a fair amount of combat. The next sequence will be, relatively speaking, a lot easier to develop. Because of the way the story progresses for a while, things get a little more linear here *dodges rotten fruit*. The most difficult part will most likely be the level design, mostly because of a lot of it takes places outside.
Besides being easier to develop, I'm really looking forward to creating some unique combat situations. At this point in time, the player will have had ample time to learn how their party works, and they will have access to some very nice, unique core abilities. Now, it will be time to put them to work, and really test them. Remember how I design things now. It's not just enough to give someone some nice, shiny custom abilities. These abilities need to be put to good use. The advantage is that I'll know who will be in your party, your approximate level, and what core abilities you'll have. So, I just need to create some combat, based around those factors. This is the stuff I live for.
Also, as expected, things change quite a bit from your original concept, once you get down into the trenches. Lost of new cast members were added, and a lot of work on custom systems was done. The most signiciant, by far, is the work on my Bonus XP system. What started as a small thought in the back of my mind has turned to a legitimate marketing bullet point for me, right up there with Bonds of Battle & Unison Abilities. And, I've only scratched surface with it. As I create new abilities, create new combat situations, I am 100% positive I will come up with new ways to give out that extra little bit of XP, that little bit that is the cherry on the top at the end of some thrilling fight.
At any rate, here's to a new beginning!
P.S. Thanks to everyone who continues to support this effort, and just comes to this blog in general. In terms of total visitors, last month was by far the best month so far. As the months go on, I'm picking up more and more readers, so this is just a public shout out to everyone!