8/31/10 -Tuesday: NO TIME TO COME UP WITH TITLE...
Today was all about dialogue, and some plot scripting. Yesterday, I did some of the preliminary work for where the convo will take place, trying to find a good place for some good angles when I create the stage associated with said convo. I also created yet another creature, again, returning from "Cry The Beloved". I was able to get them looking like their NWN counterpart, sans the weapon, because this particular one doesn't exist in Dragon Age... yet... Hopefully, some skilled 3d modeler will come along and create one. I didn't do anything else, like setup AI, or anything like that, because the player won't see them in combat until later in the game. I just need them to add some diversity to the existing set of creatures the player sees, while just walking around.
It was both easy, and nice to write this particular piece of dialogue tonight. Easy, because I'm not introducing any new characters or anything, and nice, because I was able to add a bunch of small, minor roleplaying options in. The past couple of dialogues, I have not been able to do it, because for story reasons, the PC isn't in position to have an opinion in the matters being discussed.
This is important, because for me, when designing a game, story comes first, always. Everything else feeds off of that. So, as stated above, there will be situations where the PC will be present during a conversation, but not be able to say anything, because, well, they're not that important to dare speak their mind. Of course, as the game goes on, and you become more "important", those options will open up. So to counter balance this, I am giving as many roleplaying options in the other situations where I can, hopefully appeasing those that want to have a little more control over what is happening in game. But as I said, at the end of the day, it's the story that comes first. I'm not designing the story around the combat, or interesting roleplaying decisions. It's 100% the other way.
As I wrote the dialogue, I was thinking, "Man, I wonder how many grammer mistakes I'm making". Hell, I wonder how many I make in this blog alone :) Lucky for me, I "finally" sent out the semi-official "Rose of Eternity - Concept/Story/Etc." doc to Jason Melancon, who worked with me as an editor on "Cry The Beloved". I've mentioned this many times before, but I just hadn't been in the position to really work with others, because of other things going on in my life (i.e. getting married). Having worked with 10+ people on "Cry The Beloved", I know what it's like to have to manage something like that, and it wouldn't be fair to those that joined the team, only to not have me around. I imagine that's why most mod teams break up... The person driving the development just doesn't have enough time to do things, things get stagnant, and then people move on to do other things.
It was one thing working with Archon, because the amount of work on my end was relatively small. He would give me some icons, I would integrate them into the game, see how the look, rinse, repeat. With bringing out writers/editors, all of a sudden, I need to have certain convos done at a certain time, need to have docs about "everything" written, etc. Well, with all of that said, I *am* ready now. I'll still be starting out slow as I add people to the team, but it's definitely time.
Speaking of which, the final piece that holds everything together is the purchase of a new laptop. TimelordDC, my personal laptop specialist (lol) sent me a link to some new laptop which has some special sale going on. It's really weird that I am a software engineer during the day, game designer at night, and have miniscule talents when it comes to computer hardware. Oh well, it is what it is.
8/30/10 -Monday: OSSIAN STUDIOS' NEW RPG!
A New Dawn - The Shadow Sun
After working with Dungeons & Dragons and The Witcher over the past few years, Ossian Studios has turned its RPG talents to creating a new fantasy game and world of its own design. We are pleased to announce The Shadow Sun™: a dark heroic fantasy that brings together the high adventure of classic D&D, combat inspired by Fable, Zelda, and The Witcher, and the fear of otherworldly horrors of H.P. Lovecraft.
This is a world in which magic is wielded by only a few, where a cataclysm a millennium ago still fuels hostilities between the civilizations that remain, and where much of the lands beyond the fringes of human settlement remain a deadly unknown. It is also a world that has felt an alien touch upon its sun, shrouding it in ever-increasing shadow with consequences that are only now becoming horrifically apparent.
The Shadow Sun brings a full 3D, true Western-style RPG to the iPhone and iPod touch. Combining the excitement of dynamic, visceral combat with a gripping story, it will redefine role-playing on the platform. Stunning, finely detailed graphics and a captivating musical score couple to create an immersive experience to rival the best PC and console RPG titles.
* Enter a story full of complex characters, intrigue, danger, and shocking surprises.
* Explore the decadent imperial city of Shar and the exotic desert lands around it.
* Battle enemies using magical powers and dozens of weapons.
* Play as male or female with a character system that allows you to evolve your character's abilities exactly how you want.
* Ally with one of several companions to adventure with and fight alongside.
* Make your role-playing choices wisely through dialogue or action, and become either a hero or a villain.
Coming Late 2010
8/29/10 -Sunday: BRAINSTORMING...
Today was more of a brainstorming day than anything else. Before development even began, during the summers of 2008 and 2009, I would go to the river at this place called "Quiet Cove", listen to music, and brainstorm. For whatever reason, they decided to do renovations on it "during" the summer, and it has just recently re-opened, with only a few days left of summer... Oh well...
So, there is a particularly small, yet important number of events that need to occur, and I've been struggling on how to present it to the player. What better way than to go the river, throw on the music that will play during said scenes, and brainstorm away! Really, the issue comes down to how the player will get to these particular places in the sequence. Do I let them get there on their own? Do I just fade out, and transition them there? As an example, at the end of each origin, you don't actually have a sequence of events where you actually travel to Ostagar. A cutscene just runs, and then, you're there, walking with Duncan. Now, the distance between each sequence isn't that far away, it's more like maybe 4-5 areas. The questions remains, however. Do I force them to walk through 4-5 areas, just to move the plot along, or do I transition them there myself? These 4-5 areas won't have much going on in them, for reasons I cannot go into, so is it worth it?
There were other things I had to brainstorm as well, which are plot related so I cannot get into, but at the very least, it's not SUPER serious stuff. Just minor details that a perfectionist like me has to deal with all the time. It's all in the details, man!
All of that said, I think I've figured it out, so I'll start with that implementation, and depending on who's playing in their opening round of the US Open, I may work on this final core ability for a particular party member.
8/28/10 -Saturday: SOME MINOR THINGS...
Tonight, I started by doing the appropriate gluing of some scenes together. At the moment, I'm not entirely satisfied with the solution, but it can always be changed later. After years of modding, I've learned to not get hung up on things you can always come back to. I tested it a few times, and it worked, so that was that.
I then got some more custom music in the game. In the back of my head, I know I need to invest some time into doing it the right way, not the hacked way, but I just keep pushing it back. I know if I just spend like an hour, I'll get it... Maybe tomorrow...
Finally, I have finally created the custom armor for the last key cast member I've created thus far. I'm not sure why it took so long, as it literally took me 30 minutes. This particular cast member is a descendent, if you will, from someone from The Coming & Cry The Beloved, and I really wanted them to resemble said person, so creating the armor was quite easy, as I had screenshots as a reference.
Tomorrow should be a good day for development, as the wife will be down in the city with friends for the day, and I'll have the entire place to myself. I will be watching the finals of the MLG Halo 3 tournament that is going on as well, so I'll need to get up early to knock out as much stuff as possible. And yes, I just said I'm watching a Halo 3 tournament! I've played my fair share of Halo 3, especially during the period of time when I wasn't modding, so watching professionals play it is great fun... Now, we just need something similiar for Call of Duty...
As for what I'll be doing, if I'm ambitious, I'll figure out the whole music thing. Otherwise, I'll be adding some plot related scripting, and determining where a particular cutscene will be taking place. I have some ideas, and this scene shouldn't be too hard. Yeah yeah, everytime I say that, it bites me in the ass, but I'm really confident this time!
8/27/10 -Friday: A LITTLE MORE DIALOGUE...
Tonight, I went back and re-wrote some dialogue for the scene I initially created earlier in the week. While I had been initially satisfied with it, after playing through that section of the game a few times, I realized I needed to change things up, for the sake of consistency. Since this particular scene involves a few returning characters, I needed to make sure all of their dialogue totally fit them. I'm not saying it didn't fit, but there were a few places I could change things, so people who played my older games would think, "Heh, that son of a bitch would say that!".
All that is left is the standard issue gluing of some of the various scenes I've created over the past few weeks, which just amounts to some basic plot related scripting, transitioning people around, etc. I still have to think about exactly how I want to implement it, but I'm sure once I sit down to do it, it'll come to me.
I was also involved at the tail end of a thread about the existence of a Dragon Age 2 toolset. Amtrad Hero was bringing up some good points about how people perceive that fan made standalone/quest mods should be, and the topic of VO came up, which is very near and dear to my heart. I've talked about it on this blog before, but I'm always thinking about how to implement it. Shall I include all VO, even if all of it isn't great quality? Shall I only include the quality stuff? Shall I just scrap it all together?
I have a lot to say on the subject, but I'll leave that for another day.
8/26/10 -Thursday: GAME LENGTH...
So, as development continues on the game, I continue to think about how long it will be, or more appropriately, how long it must be.
The Coming lasted on average, about 3 1/2 hours I would say (not including Challseus' storyline). While it had many fans, one common complaint was the length. People felt like it just wasn't long enough, like it was more of a prelude than anything. Truth be told, I wasn't so confident that this type of game would fly, so I purposely put out just enough to gauge the reaction of people. Clearly, people liked it, so I put a lot of time into making sure Cry The Beloved was a much meatier game. I think on average, it took people 10-12 hours to complete. Much better than The Coming.
Now comes this game, which I still haven't properly named yet, which is only slightly annoying to me. Anyway, my game design philosophy is quite simple. Every subsequent developed game will be a step up in all directions from the previous one. I think I'm already handling all other aspects just fine, but with regards to game length, that's still up in the air.
I'm definitely a quality over quantity type of guy, but I still believe the players should get a decent amount of quality nonetheless. And clearly, I won't be throwing in stuff just to pad the gameplay length. So, every day, I think for about 20 minutes, about where I want to end things in this first game, because let's face it, I won't be able to tell the entire story in just one game.
I've sort of settled in on one particular ending point, which makes sense from a story perspective, as well as a gameplay length perspective. I still think about it every day, so nothing is set in stone, but it seems to be the most logical place. Of course, as development continues, it may change. Because let's face it... I'm about 1/3 of the way, development, to said stopping point.
All of that said, if I could get 7-8 hours, it would be acceptable to me.
8/25/10 -Wednesday: FINDING TIME FOR OTHER GAMES...
So far, so good. I've been sticking to my plan of attempting to make time for other games during development, so I don't miss out on years of content like I did from 2004-2006 when developing The Coming & Cry The Beloved. Plus, it's a good way to make sure I don't get burned out.
My journies with Final Fantasy XIII continue, albeit extremely slowly. I'm only like 14 hours into the game, though 5 of those hours have come within the past week, so things are picking up. Plus, I would like to loan it to a friend who is coming up in September, so that also gives me motivation to play it.
Right, so 14 hours in, and well... yep, it's still linear. I mean... HELLA linear. I'm glad I have an open mind when it comes to RPG's, because I can imagine many western style RPG fans just never even playing this game again after 14 hours. Hell, they might not even have made it past the first 5 hours.
Luckily, every sequence is handcrafted perfectly, so what you're losing in freedom is being made up for in story, large set pieces, etc. The one component that holds everything together is definitely the combat system. I'm still amazed at how perfectly they have rolled out new abilities and such. Even better, most of the different abilities certainly have a use. Nothing worse than superfluous content.
With regards to the story, it continues to be a character driven story. I'm loving the interactions between the various party members, and how the story continually jumps around from perspective to perspective.
On last thing I want to mention in the music. It's getting better. It's not Nobuo Uematsu & Yasonoru Mitsuda better, but it's getting there. I have about 9 tracks downloaded at the moment, and I expect that number to continue to grow.
8/24/10 -Tuesday: SO MUCH MUSIC, SO LITTLE TIME...
So, as any frequent reader if this blog knows, I am extremely passionate about music. I literally listen to music as I go to sleep, while riding the train, while writing this blog, while walking through the city/riding subway, while working, while at the gym, while in my car, and while developing. The gears in my head are constantly turning, as I listen to said music, coming up with various ideas and such.
From a development standpoint, the only real issue with music is that there is so much of it! I literally have tracks that I've wanted to get into this game series for years, but I sometimes find tracks that are slightly better, which get the nod. It's not a knock to the former track, as it could definitely be used somewhere else.
I find that I've been finding the best music through Pandora, lately. One group in particular makes some of the best music I've ever heard, and I only came upon through chance, while listening to Pandora a few years ago. Their music is so good, that it looks as if it will dominate the entire 2nd act, if you will, of this game. Out of the 45 songs in the current playlist of music for this game, they have 10 tracks. That's 2 more than Nobuo Uematsu, and it goes without saying that I LOVE his music.
Recently, I discovered another artist, that while I wasn't so sure about them, it turns out their music is quite good as well. Not as good as the other artist, but I already have at least 4 tracks from them planned out.
The thing about this new music I like is:
- It doesn't have that "video game" sound to it. It's a little more organic, and just... flows... No looping tracks here!
- It has a slight benefit over "instrumental music" from movie soundtracks in that it's not tied to a particular scene, or event. Not that all music from movies is like this, but sometimes, I can only use music from said movies in cutscenes, where very specific things are occuring
Another thing I've harped on a lot is the consistency in music. If a particular faction had a particular theme in Cry The Beloved, then they'll have the same theme in this game. Lately however, I've been finding variations of some of these songs. For instance, I use a piece from Princess Mononoke, called Mononoke Hime, as the theme song for Challseus in the older games. It was used so much that whenever I hear it, I think of him, and not the movie! Anyway, thanks to Jason Melancon, I've actually found some pretty interesting variations of the theme. So, it gives me the opportunity to keep things a little frresh, while retaining the consistency I so very much desire.
I think the best part of all of this work I've done as the music producer is that it doesn't take up significant development time. All of it is done while not doing any development. Like now, for instance. As soon as I finish the blog, I will put on some new music, sit back, and relax, because my train won't be arriving in NYC for at least another hour. This gives me plenty of time to see where new music can fit, mentally design scene according to some other music, etc.
I'll just leave you all with one last thought... I was recently watching a developer documentary about the music in Bioware's upcoming MMO, The Old Republic. Towards the end, the leader composer said something that has always irked the shit out of me: "In the end, if the music is written perfectly, the player will not even notice it". Wait, what?! This is not the first time I've heard something like this, and it just seems absurd to me. There is a reason that music from Final Fantasy games, written back in 1994, are still played in concerts around the world. Players of said games were playing, sat back and said, "Damn, this is some really great music", and forgot about everything else.
For me, I have extremely great memories of playing Chrono Trigger, and hearding the Guardia Forest theme for the first time. I sat in that forest for 30 minutes, just listening to it. Consequently, it had such an impact, that I used it as the theme for North Shinkara Forest.
So, I say to those composers, compose better music, and maybe people will take notice while playing...
8/23/10 -Monday: LOTS OF WRITING...
I didn't do anything too glamarous today. I just wrote a lot, and I mean, a lot of dialogue. First though, I put the finishing touches on the cutscene I worked on a day earlier. While I said I would wait until the polishing phase of things, while watching it a few times last night, I realized that I didn't have to change much.
Sometimes, I get into the habit of trying to make every camera angle have the same elevation, rotate exactly 90 degrees, and other such things. Whereas I thought I needed to adjust the camera attributes, I realized they were just fine, and not every angle has to be "perfect". Once I realized this, the only work I actually had to do was add some headtracking. Now, with regards to headtracking, I've had bad experiences with this, since like last October when I was a part of the BETA group. Essentially, when you have headtracking in a cutscene, and makes it slow as all hell if you want to skip down the timeline to change other things. This is why I've always left it as the last thing to do when designing cutscenes.
Well, I decided to take a look at the wiki and see if there was any new information on it. I was delighted to find out that someone had figured out how to solve the problem. I won't go into the technical aspects of it, but let's just say that there is a toggle to turn on/off headtracking calculations. Once turned off, the cutscene editor is usable once again. With this knowledge, I had to resist going back to other cutscenes and adding in the headtracking they needed. Thank you wiki, and the mysterious person that edited it (I didn't check to see who made the revision)!
Once I was done with the cutscene, I got to work on the dialogue that comes after it. It involves a key cast member from the first 2 games, who does most of the talking, so since their personality has been defined for some time, everything just flowed from my brain. As always, I've got to walk the fine line of making everything make sense for new players, while not droning on and on about things, that may annoy older players.
I pretty much finished up the bulk of it, but will go back tomorrow to make some revisions. After that, I'll have to glue some more pieces together, so the player can actually get to this point as they should, since at the moment, it's been developed in isolation of everything else. It won't be anything too difficult, just a bunch of plot related scripting and the such. With any luck, I'll be able to create the first of many "pomp and circumstance" type scenes, that I loved so much in Cry The Beloved, in the coming days. You already know the gist of things. I've had it in my head for months, got the music picked out, etc. :)
8/22/10 -Sunday: I STILL GOT IT!
As the title suggests, today was a good day of development, and pretty much everything else. A great day indeed!
Before I got into the zone with development, I watched the Master Series 1000 final with Mardy Fish vs. Roger Federer. It was an extremely tight match, but Federer pulled it out in the end. That makes 17 Master Shields for Mr. Federer, tied with Agassi, one behind Rafael Nadal. Let's hope this victory translates into a win at the US Open in 3 weeks time.
Once I did get back to development, it was frustrating at first. I was dealing with creating rotating cameras around specific moving targets. It's not hard, per se, just very time consuming, to get the right angle and look that I wanted. So, it's one of those things that is annoying, that I try to avoid as long as possible. Once I'm into it though, I can knock it out, albeit, a bit slowly.
While I was doing that, I had a light bulb moment for an idea for the cutscene. The best part was, I didn't have to change much at all to get what I wanted. It was a great feeling to get the idea, implement it, and see that it looked great. I even got the thumbs up from my wife, who is usually pretty indifferent to little subtle changes I make and show her. This is the sort of thing that used to happen all the time in The Coming & Cry The Beloved when implementing cutscenes, so it's nice to know that I still got it!
So, I can pretty much call it a wrap on this cutscene. Sure, I'll need to work on the camera a bit, but it's minor stuff, and I'd rather leave that to the polishing stage of development. The big thing for me though was hitting my goal of what I wanted to accomplish before going to bed. This particular scene wasn't even on my mential roadmap earlier in the week (I knew I had to do it at some point, just hadn't settled on how it would be implemented), so to finish it so fast feels great! There's still some dialogue to write, but the hard, technical stuff is done.
Speaking of the dialogue, that's what I'll work on tomorrow. There won't be any tennis to watch until like Thursday or Friday, and even then, it's just a 250 event in New Haven, Connecticut, so I won't be glued to the TV. Here's hoping for another good week!
In other semi-related news, I finally decided I'm just going to get the damn laptop :) I've chatted with TimelordDC a bit about prices, specs, etc., and will probably shoot him another message on BSN with some final questions before making my decision.
At this point, price (more or less!) isn't an issue. There's just one end result to all of this: Making the best, polished game I can, going even further than I did with Cry The Beloved. Remember, this is what I want to do for a living... So, this laptop is really an investment in my future, and thus, spending upwards of 1.5-2K on my future isn't so bad. I think I'm worth it.
Yes, this is how I had to convince myself, so I could swallow spending that money. My friends don't call me cheap for nothing :)
8/21/10 -Saturday: PACING MYSELF WELL...
So, I was able to stay extremely focused, and pace myself well, as I created the new level that a new cutscene will take place in. It was actually late friday night, like damn near after midnight (so I guess it was technically Saturday morning), and I hadn't really done anything yet. I was watching a ton of tennis from both the men's Cincinnati event, as well as the women's Toronto event. It was quarterfinals day at both events, which translates to 16 matches from me to go through. Busy night!
Then, I just extremely motivated, and started working on the level, when I should have gone to bed. I mostly worked on the main structure, sans props, and messed with the lighting a bit. Then yesterday, I started adding props, adjusting the light even further, and adding other things, such as NPC's and such. I worked at a good pace, and was soon ready to start the cutscene.
I may have mentioned earlier that I expected the cutscene to not last more than a minute. Well, looks like it doesn't have to last longer than 32 seconds, to be precise. This may change, depending on how fast I want a particular NPC to walk, but that's what it is so far. Anyway, I worked on the first 12 seconds or so of the scene, which was pretty easy. Then next is a bunch of camera work, but when I got to that point, it was getting late, and decided to call it a night.
Tomorrow morning, I hope to finish up the camera work, and then start working on the dialogue that occurs after the cutscene. It would be an extrmely good day if I could finish all of this stuff before going to sleep. All I have on my schedule is the Federer/Fish final, and a trip to the gym, so as long as I get up early, I should be good.
8/19/10 -Thursday: ANOTHER NEW CHARACTER, ANOTHER LEVEL, ANOTHER CUTSCENE...
Yet again, I had to create the blueprint, equipment, and tints for another cast member. Since this is a returning cast member, I had to deal with the standard issues: How to make them look as close as possible to what they looked like in The Coming & Cry The Beloved. I'm currently semi-satisfied with the equipment, but at the same time, if someone creates some new models that more accurately depict them, I'll switch it out in a heartbeat. At the same time, I'm hesistant to show screenshots, because some people will definitely figure out who they are. I also worked on doing the same thing for another specific group of NPC's. For them, getting the look was extrmely easy, and I'm very happy with how it turned out.
Now that I had the new npc's setup, to move the current plot along, I needed to create another cutscene, and that included creating another level. So, that's what I started on tonight. It's an interior level, and a small one at that, so I don't see this taking so long. Plus, it will be in the same style as the other areas I've been creating for this particular sequence of events, so I almost feel like I could do it in my sleep at this point.
Once the core of the level is done, I'll start the cutscene. Now, it technically should be an easy cutscene, but everytime I say that, there is one aspect of it that drives me crazy. So, I'll not jinx myself :) Let's just say it will last at the most, 1 minute, and that's being generous. As always, I'll have it synced to music (which is why I can say how long it will last), so I'll have to get it in as well.
Speaking of the music, it's also returning from Cry The Beloved, and should invoke some feelings for those that played it, as soon as they hear it. This is one of the things I'm always talking about when it comes to continuity. It's like the little jingle you hear when solving a puzzle in Zelda, the fanfare that used to play at the end of every battle in Final Fantasy, the crystal theme used in Final Fantasy 1 - Final Fantasy 6. You hear said piece of music, and you totally feel at home. You know what to expect, because you're playing a Final Fantasy, or a The Legend of Zelda game . As years have gone all, the connection/continuity has lessened (mostly with the Final Fantasy series), but there are still remnants if you look closely enough.
Tomorrow, I hope to finish the level, and begin the cutscene. Well, I'm off to listen to the aforementioned theme music, to see if I come up with any new ideas for the cutscene.
8/17/10 -Tuesday: CUSTOM CORE ABILITY WORK....
Tonight, I did more work on the custom core ability that I started yesterday. While the foundation was set for the ability, in terms of displaying the correct message on screen, and actually happening at the right time, I still had to implement some visual effects, as well as some stat changes.
I first took a crack at the visual effects, and I'll repeat what I mentioned yesterday: I really wish there was some interactive tool out there to view all the effects. Moreover, the constants, which I need when actually creating the effects, aren't even all stored in the same place. I guess I could look up the respective 2DA for them (assuming one exists), but it's really annoying when I have to include like 3 header files to get all the constants for all the VFX's. And I'm not even sure if I have them all!
Even with the current ones, I wasn't really satisfied. I know I'll eventually find what I'm looking for, but it's still semi-irritating. And no, I still don't have time to look at the VFX editor :)
After working with the VFX's, I moved on to the actual stat changes that occur when this ability is used. I had my mind setup on a particular stat change, but as I implemented it, I realized I didn't like it so much, so I switched to another. I must have ran about 20 tests in my sandbox combat area, and everything seems to be in working order. The big test will be how it works in game, to see if it's overpowered, underpowered, etc.
Tomorrow, I will be creating the ability that is sort of tied to this existing one. The core functionality is quite simple, it's going to be the visual effects again, that will drive me crazy.
8/16/10 -Monday: IMPLEMENTING THE FRAMEWORK...
Much like the new system I created yesterday, which implemented the new framwork, tonight, I made use of the same framework when creating a new custom ability. This isn't just any custom ability, it's a core ability for a particular party member, which comes with certain responsibilities:
- All combat going forward will be centered around this particular ability
- This ability will have multiple uses
- This ability wll be able to be upgraded
I had been torn on what exactly this ability would be, for damn near 6 months. I kept going back and forth on 2 potential ideas, until a few days ago, this one beat the other one out. But, don't think that other one is going away. Nope, I will be implementing that one as well, and it will effectively be linked to the core ability. I can't say much more than that, but in short, you won't be able to use the 2nd one without the 1st. And no, it's not a Unison Ability.
Before I could make it, however, there were some minor bugs in the framework that had to be worked out first. There were also some enhancements that I wanted to make as well. These enhancements essentially made it even more abstract than before, allowing any system that uses it to define more parameters, instead of all parameters being set to some static value that all other systems had to abide by. One thing I wish this scripting system had was true classes, interfaces, and inheritance, like Java. I'm forced to do all these little funky things, to get the same functionality out of it. And it's still far from perfect, but it'll have to do for the moment.
Once those changes were made, implementing the new ability took literally a few minutes. Now, all I have done is added the standard Rose of Eternity confirmation of the ability, displayed over the head of the user. However, everything else that happens, such as attribute changes, VFX, etc., can be added in one place now, and it will just work. As with most new abilities, I don't spend too much time trying to balance them at this point, as things are always changing, well, balance wise :) I'm still waiting on someone *cough* Sunjammer *cough* to make a mod that allows you to try out all the different VFX's in game. This was really handy in NWN, and it would definitely be handy this time around as well. Even some screenshots, like they had in the NWN lexicon would serve me fine. I just hate trial and error... I suppose I could start creating my own custom VFX's, but that is too time consuming at the moment. Hmm, perhaps something I else I could bring someone on board to do...
Tomorrow, I'll add in the actual effects, test it out a little bit, then move on to the final custom ability I need to do, which as I mentioned earlier, is linked to this new one.
8/15/10 -Sunday: SYSTEM FRAMEWORK DESIGN...
So, just like I stated I wanted to do yesterday, I began to implement 2 new custom abilities, and 1 system. Truth be told, the new system, and one of the new abilities use the same system framework, so to speak. Sorry for being so vague, but at some point during development, I need to keep some cards close to my chest!
Anyway, I began by implementing said system framework, and it started out pretty good. As with most things, the idea behind it, and even the implementation had been in my head for a while, so I sort of hit the ground running. While I can't go into full details, one particular part of the system involves opening and closing a "window". What this means is that while the "window" is open, the player is able to do something, but if the "window" closes before they attempt to do whatever they're doing, it will fail. You can look at it like how Whirlwind Heal works. Once Clopon casts Heal on Aramus, there is a short window of like 2 seconds, where if he use Whirlwind, then the Unison Ability will happen. If you miss the window, you get nothing.
Now, in NWN, you could achieve this easily, by setting a local variable, and then calling the function, which honestly escapes my memory, that delays an action, which re-sets the variable. In DA, the only way to delay something is to use the function, DelayEvent. This takes in an event, a target, and a delay timer as parameters, and signals the events. After the delay timer runs out, the event is sent out to the target.
So first, I created a custom event for this new system. Then, I just set the variable that means the window is open, call DelayEvent with the appropriate delay timer value, and when the target receives the event, re-set the variable, effectively closing the window. Simple... In theory, anyway...
Before implementing anything, I sat back and thought about it for close to 30 minutes. Being a software engineer during the day, I'm used to building scalable, re-usable code. I always try to design things to be as general and abstract as possible. In this case, I knew that this framework would be used for multiple things, so I had to implement it as such. After deciding on a solution, the implementation itself went pretty quick. When I tested it, one component of it that I can't go into at the moment worked flawlessly. Well, at first, it didn't seem that way, because some of the DEBUG I was printing to the screen wasn't always showing up, but I think that's a flaw in the system, or maybe I was printing too much at one time! Once I realized all was well, I was beginning to pay myself on the back, and feeling very good about myself. Then, I tested the opening/closing window code, and it just didn't work. Figures...
You see, along with sending an event to a target, you can also specify parameters for the event, through functions like SetEventInteger, or SetEventString. When you receive the event, you can get these values with functions like GetEventInteger, or GetEventString. The problem was, I was calling them incorrectly, and when trying to reference the passed in parameters, they were always turning up empty. I was doing this:
event ev = Event(EVENT_TYPE_CANT_SPOIL_THIS_EVENTS_NAME);
SetEventInteger(ev, 0, 100);
SetEventString(ev, 0, "test");
DelayEvent(ev, oTarget, 10.0) //don't quote me on the exact form, I don't have the toolset handy
When I should have been doing this:
event ev = Event(EVENT_TYPE_CANT_SPOIL_THIS_EVENTS_NAME);
ev = SetEventInteger(ev, 0, 100);
ev = SetEventString(ev, 0, "test");
DelayEvent(ev, oTarget, 10.0) //don't quote me on the exact form, I don't have the toolset handy
I should have known better. Parameters are passed by value, not reference, in DAScript. What that means is that if I pass the variable, "ev" to a function, it's just a copy of "ev". If "ev" gets changed, the original one stays the same. This is why the function returns a new copy of "ev" to set the old one to. So as you can see in the first example, the variable "ev" was never being changed before being passed to "DelayEvent". Thus, the parameters were always empty when I retreived them when catching the event. It's the same in the programming language, Java, which I predominately use at work, so yeah, there is really no excuse for this. Oh well, shit happens. Once I fixed that little bug, everything worked just fine.
Next, I implemented the new system, which essentially implemented the framework. Luckily, since I the framework was designed well enough, everything else was plug and play, and worked right off the bat. I patted myself on the shoulder for that one as well :) Since I wanted to go to bed early, I decided to hold off on implementing the other custom abilities. The one, will be easy, as it uses this framework. The only, potentially easy as well, even though it does not use the framework. We'll see.
8/14/10 -Saturday: LITTLE THINGS HERE AND THERE...
Today was a soft of "miscellaneous stuff to do" type of day.
I started off by resolving the issue with the creatures visibly going into their death animation, instead of already playing said animation. Essentially, along with setting the animation you want to run, you can set the system to use as well. I was originally using AMBIENT_SYSTEM_ENABLED. Once I switched to AMBIENT_SYSTEM_SPAWNSTART, it solved things, thankfully. I wasn't looking forward to spending any more time on this issue.
Then, I decided to create a custom item, which of course, true to Rose of Eternity standards, has a custom effect. I can't say much at the moment, but this item will augment the existing Bonus XP for the particular character that uses the item. The idea was bouncing around in my head ever since I created the new system, the only issue was that I wasn't sure where the player would receive the item. As I've stated many times, every item, every ability has a purpose in the game, I'm not just dropping things wherever, just because. It has to have an impact, so the player isn't like, "Oh cool, another sword +2. Let me throw this in my pack and sell later, since I already have 62... sigh...".
Besides that, just some other small scripting tasks. Tomorrow will be a big day, as I will start the implementation of 2 new custom abilities, as well as additions to an existing system.
8/13/10 -Friday: AND THAT PUTS AN END TO THAT!
Okay, so yesterday must have just been an aberration. I totally lacked motivation last night, tonight, I didn't have enough time to do what I wanted to do! Since I couldn't do anything too major, I decided to work on a short (i.e. 10 seconds) area intro cutscene. It's something I've known I had to do for months, but wasn't major enough to be pushed to the front of my work queue, until tonight that is.
The scene literally consists of rotating the camera clockwise over 10 seconds, with a 3 second long fade in at the beginning, and fade out at the end. Of course, there was one thing that pissed me off to no end, something I've encountered before, but never knew how to properly fix it, until reading this thread. Essentially, when setting up camera movements, the camera will spin in the opposite direction you want it to spin in. No technically, the easiest solution would be to create some sort of combo box, that had clockwise/counter-clockwise options in it. Since that doesn't exist, the next option is to literally minus 360 degrees from whatever the final orientation should be. Once I did that, I was in business.
Now, when attempting to integrate it into the existing game, I figured it would be no problem. I made the adjustments to the plot scripts, and was ready to go. Now, in this particular area, there are some soldiers that are lying on the ground dead. I'm using the existing ambient animation system, the only issue is, when I enter the area, I literally see them drop to the floor. Kinda breaks the immersion :) I thought having this cutscene run first would get around it, but alas, it does not.
So, there are a few ways to fix this. I can either a) mess around with the ambient animations options, to see if there is something that makes it come out faster or b) fade the screen for like 3 seconds at the beginning of the convo that shows the dead body. Option a) would be preferable, so we'll see what happens.
8/12/10 -Thursday:THERE GOES THAT IDEA...
Talk about an anti-climatic day. After all the development I got done yesterday, and especially with how I was feeling, I figured the good times would have kept on rolling. Well, when I sat down to actually do something, I just... sat there. I initially blamed it on designers block, but in retrospect, I think I just literally didn't want to do anything. While I was struggling to figure out how to end a particular sequence, there were other things I could have done, but I just lacked the motivation. And that's weird, considering how I felt yesterday. Meh, these things happen, you move on, and forget about it.
What I usually do in this situation is put on either the music from the first 2 games, or the music that I plan on having in this game, and just brainstorm. If I'm still not satisfied with the solution, then I could move on to my bread and butter: adding custom things to the game.
In this case, I'm talking about music. Yes, I already have custom music in the game, but it's implemented using sound objects. I'm not actually using real pieces of music (from the toolset perspective). I know I've talked about this a lot, and that since Bioware released their FMOD (what they use to transcode the music) project to the BSN, I should be able to dissect that, and add in my own.
I've been getting by with the sound object implementation, and actually could do that for the entire game, if it wasn't for the existance of one feature: music that continues playing while you transition. I have ALWAYS hated when the music stops playing with transitioning from area to area. Most surprisingly, in Dragon Age, it actually continues playing! That's more than enough reason to get it working. I know there will be other issues, but as usual, I'll deal with it when I get there. First things first... get the damn music in, without using sound objects!
8/11/10 -Wednesday: GOTTA KEEP THIS GOING!!!
Okay, at this point, I'm really pumping out content. I've been doing this long enough to know that I need to take advantage of these times, when I am motivated, and in the zone. I did everything I was supposed to tonight, and more!
I started off by creating the custom gear and tints for the particular NPC I talked about yesterday. It took a little longer than it did for the one I did last night, as I wasn't able to find the perfect pieces of equipment right off the bat (which I had already anticipated). Once I did, even still, getting the colors to work took a fair bit of time as well. No matter how bright I made them, they kept coming out dull. Then, I realized that I needed to increase the diffuse... umm.. diffuse something... Can't remember the term because I shut down the toolset already, but once I increased this diffuse "something" for each color, I got the results I was looking for. I'm somewhat hesitant to show off this character in a screen shot, for fear that it may spoil part of the story for the returning players. That's how close I got it!
Next, I did some more work on a stage/conversation. Yesterday, I mentioned that I was having issues with the camera not being setup properly. Well, turns out, I'm an idiot. The area where the conversation takes place isn't exactly on flat ground, so even though everyone is at the same elevation when creating the stage, in the actual game, they're all off a bit. The solution was pretty easy actually. I just needed to move everyone up about 10 meters to the flat land. The conversation didn't necessarily have to take place in the original spot I chose, so it was easy to adjust it accordingly.
Once that was out of the way, I did more work, mostly on making sure that everyone is looking in the right direction at the right times. There's about 11 actors in the scene, so it's not hard work, rather, the quantity of work that it takes to get things right.
At the moment, I've been really debating on the music I want to play during this scene. There is one track, but it's only like 1:20 long, and is played during an intro cutscene. It just seems weird to have this one track looping over and over again. I may have to mess around to see if I can adjust that. Well, actually, I need to figure out how to get music in the right away. I'm still using that sound object hack I implemented months back. Now that I think about it, when I am done with this sequence of events, I may move on to that. At any rate, I could use that track, or I could use like 3 others (1 of which is the default music for the area). Only one thing to do about this... I'll just have to create a separate playlist for all of those songs, and listen to them all on a loop, while brainstorming, to see which one ultimately ends up fitting the right way.
Earlier in the day, when I had a free time at work, I essentially committed myself to the Community Contest. It turns out, I can submit existing levels, or even new ones I create, from my own game, not ones created solely for the contest. If it was the latter, I just wouldn't have had the time. But now that I know I can use stuff from this game, it gives me even more of a reason to be motivated. I also should point out that I am extremely impressed with the work they've done with regards to the Prizes. They've gone out and talked to all sorts of people, like Bioware, DANexus, etc., in order to get sponsors for many of the prizes, which include codes for Dragon Age DLC, $ for the Bioware Store, and even getting some people to help with VO in a mod you create. That's the one I care about the most, to be honest. All in all, it's a great things these guys are doing, and I hope it goes over really well.
Finally, I am happy to say (not that it really matters to anyone reading this) that I have written up more than 50% of the documentation I need to give Jason. I've been slowly knocking it out on the train ride home every day this week. I'm at the last part, which is essentially a quick summary of the story I've implemented so far. I'd say that I'm on target for having it done by Sunday, for sure.
So tomorrow, assuming I don't get slammed with a bunch of work (I have to release some new software to our QA department tomorrow, and shit always blows up, no matter how careful you are), I should be able to do a lot of stuff. First and foremost, I'll finish up with the current piece of dialogue I've been writing. Hopefully by that time, I will have decided on the music that should play during it. Then, I'll need to do more plot related scripting, minor things, like transitioning people around, setting variables so different conversations play, etc.
I hope I have this same amount of energy tomorrow, that's for sure!
8/10/10 -Tuesday: VERY PRODUCTIVE NIGHT!
Hmm, I actually stuck to my word last night, and had a very productive night. I even surprised myself! Everything seemed to go right.
I had no idea what the tennis schedule was going to be, so I was very happy to see that out of the big 4, Federer was the one to open his campaign last night. He's working with a new coach, name Paul Anacone, the very same person who coached Sampras in his later years, and helped him with his 14th grand slam at the 2002 US Open. Apparently, Anacone was a very aggressive player in his day, and it seems he has instilled this in Federer. And that's saying a lot, because he already employs an extrmely agressive game, taking the ball on the rise, hugging the baseline throughout rallies, etc. It weas nice to see him chipping and charging off of 2nd serve returns, and just hitting outright winners, or at the very least, deep returns, off of the same type of 2nd serves. He seemed a little rusty at times, but that's to be expected, as it was his first match since losing at Wimbledon.
While this was going on, I was creating the creature blueprint, equipment, and tints for a new faction of charactrers. Well, not really new in that they were present in my earlier games, but new as in, this is the first time the player sees them in this current game. I'm very happy at how well this went. I found a screenshot from a blog entry back in 2006 containing an exmaple of this faction, and used it for reference when picking from the 6 or so looks of armor, as well as when creating the custom tints. In particular, I think the tint job came out very good. It's not like I had hex codes or anything, so it was a little bit of trial and error to get the right colors. The only thing that is really different is their weapon, as that particular type doesn't exist with the current set of weapon types. I had already thought about this months ago, and was already ready with a replacement weapon, as well as a story related reason as to why it changed. Gotta keep this consistency!
Next, I began adding a couple of these guys to an existing stage/conversation, and suddently realized one of the most irritating things with the conversation editor. So, when using stages, you create place objects, or actors, if you will, in the exact position you want them to stand during the conversation. Then, when you use this stage for the conversation, you need to define who maps to what place. So for instance, place1 (which I always name to something more descriptive) has to map to some excisting blueprint. So for this new creature, I would name the place "creature", and then map that to "creature.utc" (the blueprint). The problem arises if there are more than one of said creature in the conversation. Then, they would need unique tags (tags are just a way to identity objects of the same resource id). Probelm is, you can't select creatures with specific tags when doing the mapping. They must be a unique creature in the toolset, and that gets annoying. I could just make sure they end up in the right place before the conversation starts, but then I would lose the functionality to control what they do during said conversation. It's not that big of a deal, but just one of the annoying things about the toolset, nonetheless.
One thing that was midly irritating last night was that wherever I place the camera in the stage, in game, the height of it was a couple meters off, which obviously messes things up. I'm not really sure why it's happening, then again, I didn't try to resolve the issue either. I'll leave little cosmetic things like that for later.
Tomorrow, I will create the blueprint, equipment, and new tints for another very important NPC, who is returning from Cry The Beloved. I already know I won't be able to get their gear looking the same because the particular model for the gear doesn't exist, but I'll get it damn close, especially with the colors. It's sounds pretty ridiculous, but I am actually getting excited, getting that nostalgia feeling, as I bring back certain things from the old games. Brings back good memories. Good times...
8/9/10 -Monday: MISCELLANEOUS PLOT RELATED STUFF...
So, "development" started a little earlier than usual today. On the train ride home, I did a lot of work on the documents for Jason. It actually helps me as well, because as I am getting down to the knitty gritty details, it's forcing me to sometimes re-evaluation certain things, or just add more detail to other things. So, it's a sort of win-win scenario.
Work at home consisted of writing a bunch of dialogue, a little plot scripting, and just overall plot management related things. As I was writing the dialogue that should, as I said yesterday, "write itself", I'm realizing it's interesting to write dialogue between the PC and someone they clearly know, yet the actual player knows nothing about. It's a real fine line. You want the player to learn about said character, but not in a way where the player is thinking, "Why is this NPC telling me all this stuff? Shouldn't the character I'm controlling already know it?"
Lucky for me, the solution to the problem already fits in with the design of how information is relayed to the player anyway. Remember, it won't be the situation where you talk to them, and then get 6 different options to harass them about their life story. Yes, you will have options to talk to them at any time about different things, but the more important things will be relayed to the player through carefully crafted sequences. Remember, all cast members play an integral role in the story, and their stories will slowly be presented to the player at the appropriate, story related times.
After writing a bunch of dialogue, I started scripting the plot stuff, to make sure it fires at the right time, everyone that is involved is in the area, etc. I also had to create the appropriate flags in the plot file, to coordinate how everything plays out. I have to admit, it's sort of second nature at this point. I already have a semi template on how I do all my plot related stuff anyway, so it's just about plugging in the right values, so to speak.
I also need to do a backup of the game's DB, and export a B2B file, and check it in to my svn repository. I'm horrible at remembering to do this. I usually end each night saying, "Hmm, I'll just do it tomorrow. The data isn't going anywhere." I definitely need to get away from that, and make sure to back things up more frequently. Speaking of my svn repository, I went with this one site that community code moneky, Sunjammer, PM'd me about. Well, I've gona grossly over my limit, so I'm at the point where I need to pay up a little to keep the account. The $ isn't the issue, it's more that for some damn reason, when I try to create the paypal account needed for the site, it keeps telling me my credit card is associated with another account... even after I had my wife remove it. Again, I've been too lazy to look further into it, so that's another thing I need to do, possibly during lunch break tomorrow.
Tomorrow will be about creature/item/tint creation. I have to re-create a faction from the earlier games, and dammit, I'm going to get as close as possible to the NWN design. This is, as I mentioned yesterday, low brain power work. I am can do this while watching tennis, no problem. Though, if Federer isn't playing tomorrow, I may get some other things done as well.
Finally, I just want to thank the people who have been coming and reading this mess of a thing I call a daily journal (not always daily!). The numbers were down a lot last month, not surprisingly, since I was away for 2 weeks, and updates were less than frequent. However, the numbers have rebounded in a big way, and the current average number of visitors per day is the highest it's ever been. I'm on target to surpass June's total number of visitors. Even better, I'm able to track repeat visitors, and the ratio is also the highest it's ever been. So yeah, thanks for making this blog thing worth while. As I see the numbers go up, it just motivates the hell out of me to keep this thing going daily, and more importantly, get as much done with the game as possible. So yeah, thanks!
8/8/10 -Sunday: AND THE PLOT CONTINUES...
So, I finally knocked out all the bugs that I wanted to get done this weekend. Man, you have no idea how much trouble I was having with one of them. It involved my custom script for transitioning npc's across areas part of the same area list. For whatever reason, no matter what the orientation was on the waypoint I jumped them to, they would be facing the wrong way. I won't go into the ugly detals, but simply calling SetOrientation() after the transition seemed to do the trick. After fixing up some other minor ones, I was ready to move on to other things.
So, if you wanted to break up the current chapter, if you will, into plots, then there would be 4 of them. 3 out of 4 of them are complete, and I started on the final one yesterday. It involves the introduction of yet another new character, as well as an old favorite. Even though this general story has been written for some time, this new one didn't even exist 2 years ago. They just sort of weasled their way into the story, and in a big way. They will definitely play a huge role in things, and I've been looking forward to creating these next few scenes for a while now.
I've already got 2 pieces of music picked out for them, one their main theme, another, used for their intro cutscene. I decided to forgo creating the intro cutscene for the moment, and went straight to their first piece of dialogue with the PC and others. At this point in the story, a huge sense of familiarity will start to settle in on people who played the first 2 games. As I said, an old favorite will be re-introduced at this time, and some other known factions will be present/mentioned.
Writing this type of dialogue is the easiest out of all other pieces I write, simply because the foundations for these factions/characters have already been long set. It practically writes itself. The hardest part will be the visuals. I used quite a lot of custom content in my older games, and since we have no where near the same amount in DA, I need to make due with what I have. The one returning character in particular had a very unique look to them, so I will have to find some clothing that is similiar. Likewise, I'll have to do the same thing for the faction that will be present during these scenes. I'm pretty sure it's just going to involve a lot of custom tints for them :)
Now, I will also have a HUGE distraction next week. The Roger's Cup tennis tournament is starting in Canada, and it's a event that is one tier lower than the grand slams (1000 Masters Series Event), so all the big guns will be there, including Federer. He hasn't played since the loss at Wimbledone in the quarterfinals, so I'm eager to see how he does, as well as others (i.e. Djokovic). All of that said, I've figured out how to handle things. While watching matches, I will handle the mundane, non-brain needing (is that even a term?) tasks. This includes creating custom tints, equipment, items, etc. Even minor plot related scripting can be handled during said matches. Any pieces of dialogue or cutscenes will have to be done before and/or after the matches.
Finally, I need to FINALLY finish writing up some documents for Jason Melancon. It will make the integration go a little more smoothly, so we're both on the same page. It's not so hard, really, because as I mentioned earlier, as he edited every piece of dialogue in Cry The Beloved, he knows the core story better than anyone else. So, getting him up to speed on what is happening in this game should be easy. When I mentioned the Ministry of Justice, he won't go, "Ministry of WHO????", it'll be more like "Oh yes, the Ministry of Justice. What are those bastards up to this time?".
Well, that's about it. Time to put on some music, and brainstorm a little.
8/7/10 -Saturday: INTERESTING DRAGON AGE 2 UPDATES...
So, as can be expected, due to some new Dragon Age 2 news, the forums were filled with nerd rage, just like when the game was initially announced. In this thread, it was reported that in an interview with the lead designer, done by some other gaming site, it was explained there would be no tactical camera in the PC version of the game, as well as no toolset. You already know where this is going... Many people were extremely mad that the tactical view is gone, and that it was another way that Bioware was trying to further commercialize the Dragon Age franchise. People were also mad about the prospects of not having a toolset, perhaps less so.
Then, the lead designer himself, Mike Laidlaw, entered the thread, to expand on those comments. First and foremost, he said that while the same tactical camera used in DAO was gone, they were messing around with a new camera angle, that allowed the player to still have some tactical control over what is going on. From my perspective, I don't really care. While I did make use of that tactical camera a lot, it's not enough to make me not buy the game.
The bit I was interested in was of course about the toolset. He explained that there would be no Dragon Age 2 toolset, per se, but that they were looking at ways to update the existing one. So, there will be no changes (as I expected) with regards to what I am doing. I will press ahead, as if nothing changed, since to be honest, I don't expect things to change for quite some time. The game doesn't even come out until March 2011, so they will most likely be putting all their resources towards that. Only after they have a solid release with a few patches in, do I expect them to attempt to update the existing toolset... Speaking of which, I hope they get around to patching the existing toolset with DAO specific updates at some point in the future.
Many people are frustrated and angry about the lack of... well.. anything, with regards to updates to the current toolset. Meh, maybe I'm just different. While of course I want it updated as soon as they can, I can get by just fine with what I have. I will make concessions where needed, and stick to my overall goal: release the best module I can. Everything else is of no consequence to me. I'm used to working around things all the time anyway, being a software engineer and all, so I have the mindset of, "Just do what you gotta do to get it done". And that's what I'm doing.
8/6/10 -Friday: I SAY THE SAME THING ALL THE TIME...
Whenever I start the development of a new game, I was say to myself, "Okay, there are not going to be many bugs. I'm going to be careful with what I do, and I will keep things under control." Then, reality sets in, and I end up where I am today :)
I'm not in a bad position to be honest... Bugs will come ,and bugs will go. I think in the way that I create games, more often than not, weird bugs will occur. All of the head scratchers from this week have been the result of some custom system I've implemented. So in fact, I should be used this. Here are the most infamous ones from my last 2 games:
- Rose of Eternity - The Coming: At some point in the story, when you return to the town of Aribine, the Ministry of Justice is there with Kain, looking for Aramus & Clopon. Now bear in mind, this was my first game! Anyway, I wanted to simulate it always being night time during this sequence, so whenever it got to be 5:00am, which I believe with the NWN engine, it was still dark, I would re-set the time to 6:00pm, which was obviously dark.
The problem was that the code I wrote, didn't take into account a very important variable: this code should only run while in the town. The side effects of not putting this condition in where very subtle, far reaching, and very dangerous.
For one, it would randomly FUBAR cutscenes, depending on when they started. Remember, I was using a SetTime function to get the time back to 6:00pm. Well, a scripted cutscene using Gestalt's Cutscene Package worked off of current time, delaying actions by seconds, etc., to simulate a cutscene. For instance, you would have a character be at point A at a delay of 0.0 seconds, then be at point B at a delay of 5.0 seconds. Anyway, if that code that resets the time to 6:00 pm ran, the entire cutscene would just die.
Another issue had to do with a horrible idea I had for re-spawning enemies. After you killed an enemy, they would respawn 10 minutes later. Well, if that code that sets the time ran, they would respawn immediately. You cannot imagine how difficult certain areas were because of this!
This bug actualy lingered for many months. Finally, right before the release (when I was actually going to just put it out and hope for the best), I found the error. I was saved!
- Rose of Eternity - Cry The Beloved: This one isn't as bad as the first, just more funny. One night, I stayed after work down in the city to drink with some co-workers. I was still pretty drunk when I got on the train, and having my handy laptop with me (i miss those days!), I thought, "I still have to design a custom summoner system, might as well do it now!". I said it then, and I'll say it again.... Never drink and script. Lives can be put at risk!
This was scripted in October of 2005, and I didn't fix it until like, right before the release in October of 2006 :) Another one of those lingering bugs that I just dealt with. I honestly don't remember the solutuion (I am 100% positive I talked about it in a few daill journal updates around that time), but I am know it was something small.
What will be the bug for this game. If I have anything to say about it, there will be none. I am staying on top of those bugs before they get out of hand, hence the reason I've been devoting so much time to it lately.
8/5/10 -Thursday: MORE BUG SQUASHING...
Tonight, I was very focused. I just opened up the text file, and had at it. Most astisfying was finally closing out this bug that was a remnant of the system I designed a while back to handle transitioning removed party members around areas part of the same area list. In short, when you transition a removed party member, their active status is set to FALSE. My solution was to simply loop through all removed party members, then set the active status to TRUE. I later refactored the code so that it would only be called when you enter the same area as said party member. Or, so I thought...
It turns out, even if you transitioned a party member to another area, if they have a party member status of AVAILABLE (essentially meaning they are part of the party pool, just not in your active party), when you get the area they are in, it always returns the same one as the PC. So, a by product of that was that removed party members were appearing in areas they shouldn't have, since their active status was being set prematurely. I quickly got around this by storing the area object on the party member, when they are transitioned. Then, I do the comparison against that stored value, and everything works perfectly. When they are added back to the party, I just clear that stored object. Very simple, clean, and efficient. Also, while I didn't do it, I may just go ahead and store the area when simply removing party members, in case I need to reference it at some point as well (besides when deciding to activate them).
Besides that, it was a bunch of smaller, but nevertheless important bugs that I closed out last night. Tomorrow, I will continue to knock out as much as I can while I'm in this mood, then move to something else.
8/4/10 -Wednesday: DRAGON AGE COMMUNITY CONTENT!!!
So, it looks like the community is coming together to have a Community Contest. In short, it's a competition for budding level and/or custom content designers. They have an alotted time to create said content, which will be voted on. Depending on what place they get, they will get points they can spend on prizes, such as scripting/mentoring work by BSN community member, CID-78. The current contests are:
I am really a fan of this initiative, because it's sort of a win-win situation. Modders get to show off their work, and get some really decent prizes, such as getting help from other experts in parts of the toolset they may not be so familiar with. The community itself gets some new custom content, which we have been sorely missing.
Personally, I am glad to see positive things like this, hopefully overshadowing other recent happenings in the community, most notably, issues with content sharing, rights, and all of that other stuff I like to stay out of. I deal with enough politics at work, and I want to spend as much time building when I get home, not worrying if I'll be able to use some super cool content recently posted to the BSN.
So, I say to all of you potential modders out there, seriously think about joining this competition. Let's kick start the CC community, and see what we can get out of it. Hopefully, as it gets bigger, perhaps we can even get the support of Bioware themselves, which would be cool.
For more information on this, you can go to the project page at the BSN.
Oh, and for the record, I have absolutely no skills with regards to CC, so I'll leave it to you other experts :)
8/3/10 -Tuesday: JUST LIKE OLD TIMES...
Right as I'm getting back into development, a close friend from North Carolina stops by for a few days :) So while I didn't get a chance to do a lot of actual development, I was able to refine some systems of the game, and other brainstorming related things. How did I do this with a friend over? Turns out, this friend that stopped by was Brian Rhodes, the same friend who I worked with 11 years ago, creating the universe this game takes place in.
I'll never forget that day back in 1999, when we were just hanging out with a bunch of friends, looking at the mid-Hudson bridge out on the Hudson River. We were talking about how cool it would be if in an RPG, a bridge was being built at the beginning of the game, and as time went on, as you progressed through the game, you would see more progress on it, until in the end, you would be able to use a finished bridge to go explore another part of the world.
What came next was a bunch of brainstorming sessions every night or so for about a year. The foundation was being set. While he would eventually go on to do other things in life, I obviously kept the idea alive. So, it's with great pride when I tell him how far the story has come, how the characters we created have evolved over the years, etc.
I was also able to demo to him the current state of the game, from start to finish, and his reactions were very welcoming. In particular, a certain scene that I didn't think was a big deal, elicited a huge response from him. He literally ended up hating certain characters, because of some things they did. Stuff like this, early on, is extremely valuable to me. If other players think like him, I can play upon this hatred in other interesting ways, and even possibly allow this hated character to redeem themselves.
He had some constructive critisism for me as well, mostly related to expanding some of the dialogues to give the PC more options for things to say. He also had a lot of ideas on how to make each custom enemy even more unique than I currently have them, mostly dealing with their AI.
He really loved the idea of bonus XP, and we brainstormed for a while on new and interesting ways to receive them. In fact, I've actually asked another guy at my job, who is a big CRPG fan, to come up with his own ideas, and I invite anyone reading this to send me any ideas, should they come up with one. During the development of Cry The Beloved, there was a thread on our official forums, dedicated to one thing: ideas for new Unison Abilities. I loved a lot of the ideas that came out of that thread, and I'm hoping I can get some more help with this new system as well.
So, it was a nice change of pace to just design stuff, instead of just implementing stuff. But, it's back to the trenches tomorrow. I have a nasty bug that I really need to track down :(
8/1/10 -Sunday: ANOTHER MONTH PASSES BY...
So, understandably so, last month wasn't the most productive. I moved into my first apartment, which obviously took a lot of time (and we're not done yet!), and I went away to the Bahamas for 2 weeks to get married. I tried my best to get as much done as possible, but there's only so much I can do without having a new laptop.I still cringe when I think about the 3 1/2 - 4 hours of possible development time I am losing while on the train. Even though I've talked about getting one for a while, now that the dust has settled with regards to changes in my life, I've been trying to do some research on the best laptop to get. All signs have been pointing to some form of a Dell laptop, in the range of $1300-$1500. If anyone has any suggestions, please send them my way at email@example.com.
Yesterday, to end things for my birthday weekend, my wife surprised me by taking me to West Point, which is only about 45 minutes away from our apartment. For those that don't know, it's our country's first military academy, setup in the early 1800's. We went on a 2 hour tour, which included going up to one of the 8 (I think) small forts along the Hudson River, going to the magnificent protestant cathedral, and a bunch of other small things, all while learning about the history of the school, and it's most famous graduates. As usual, I was coming up with all sorts of game ideas, especially when we were at the fort, which was restored to resemble how things would be during our Revoltionary War. All in all, it was a good afternoon. Then, when I got home, I got back to business...
I continued to knock out little bugs I had discovered months ago, all while watching a women's tennis final in Washington DC, and a men's final in LA. I was able to kill off about another 4-5, but there is one lingering one, that unfortunately is a by product of a little system I scripted last month, that handles transitioning party members around, that aren't currently in your party. The bug is weird. Whenever I walk down this one hallway towards a destination where the party member should, I see them just standing there, and I'm like, "What the hell are you doing here?!". If I keep going towards the destination, sure enough, they're there as well. I didn't have much time to DEBUG it, but it may have to do with the fact that I'm just dropping in a version of the party member for the current set of areas to speed up testing. Usually, you would get the party member in another set of areas not linked to the current one, and they would be transitioned over naturally. So, there are technically 2 copies of said party member in the game, and while I thought I wasn't able to reference the other one, I may be wrong. As with everything else, it'll be something so small I'll just have to laugh at myself when I discover it.
Another thing I have been doing for the past few days that I forgot to mention was creating new custom equipment. I'm very meticulous in how I award custom equipment, as well as custom abilities. You've got to earn these damn things, and even still, it's not like you'll be flooded with them, especially so early in the game. It's hard to explain, actually... I wouldn't consider this game to have a low magic world. I mean, there is an entire city (i.e. Stramadon) devoted to it. At the same time, you're not going to be finding all sorts of magical equipment all over the place. So, I guess from a loot perspective, it's low magic, but not from a story perspective... if that makes any sense... Remember, it's all about those shiny moments, and those shiny moments stop meaning as much if it happens too much.
Of course, it wouldn't a Rose of Eternity game if the magical items didn't have some sort of custom scripted powers. Things have to be as unique as possible, to stand out from other mods. As I have mentioned many times, I've already scripted the core ability for the main PC back last year during the BETA. Some of these new pieces still need to be scripted, but the ideas are already in place. It's crazy, but it's literally taken about 2 months to lock down what they would be, how they would be rolled out to the player, etc. And I'm sure it will change many more times in the coming months, but hey, that's how it goes.
With regards to what I will be accomplishing for this month, well, I'm not falling for that same old trick :) That said, I'm stepping on the gas pedal just a little harder than normal. Here are the keys to getting as much stuff done as possible, until I get a laptop:
- Stop logging into desktop at work, to check the logs on various jobs running. Even if I wasn't working on the game, I should stop doing this. Unless it's hyper critical, I should stop working when I... leave work... what a concept!
- Stop surfing the net so much. This is the real killer. I waste so much time doing this every night. That's another reason why I get so much done on the train. No internet :)
- Stop bullshitting at the gym. Depending on who I go to the gym with, I could either spend 45 minutes, or 2 hours. Some people just love to talk more, and lift less. It's already annoying as it is, and cutting into development time makes it even worse.
- Try to have some sort of plan for the night. Even if it's one task, that will spawn off countless other taks, I'm sure
Or, I could just get a laptop :)