10/30/10 -Saturday: ALPHA RELEASE, AND OTHER RELATED THINGS...
Sticking with my plan from last night, I went into the day expecting to just do that final run through with the performance changes I put in, and be done with it. And, I did just that. Though, things never go that easy with me :)
As I tried to package the file up in DAZip format, it kept complaining about some level files. After a little head scratching, I realized they were exteriors I had exported from within the Single Player module, which is the work around to get water planes to show up in the game. All I had to do was re-export them from within my own module, and it worked fine. I still have the issue with the music taking up so much space, so it's currently clocking in at 620MB or so, but I'm confident I'll figure out the issue sooner or later, and get it much lower than that.
Next came the process of making a subversion tag of the art resources used to make this build, which I just named alpha_1.0. I also checked in all the designer resources into the toolset database, and backed that up as well. It's nice to see that I'm actually sticking to my plan to backup every significant release. Once I did that, I knew I was free to start development again, and if I ever had to rebuild alpha_1.0, I could do it with no issues.
With that out of the way, I posted a link to the file at the developer forums, and wiped my hands clean of the situation. For the moment, I'll just be receiving feedback in the forums, as well as bug reports. However, I will finally get Mantis up and running soon, so the bug tracking can be a little more sophisticated. If not for anything else, the filtering options will be a blessing, so I can go into a development sessions knowing the types of bugs I'll be fixing, instead of sifting through all of them every time.
The rest of my time, I listened to music, and brainstormed about how I wanted this new area to look. I already had an idea in my head, then when I was going through all the different available models, I saw some that inspired me. So, while I didn't get any development done, I was happy to see a vague idea of how something should look transform into what I hope it looks like when I'm through. Tomorrow, I'll start the process of bringing that vision to life...
P.S. With this new area, folks won't have to keep seeing the same screenshots over and over again :)
Another game I've never played before, but music I heard via RPGFan radio. Enjoy!
10/29/10 -Friday: MINOR FIXES...
So, even though the ALPHA is ready, I did want to take some time to make some minor performance fixes, just to be on the safe side. I had mentioned making sure to cleanup dead bodies, and TimelordDCtold me about using the areadata 2DA, so I can set a really quick decay time on all dead creatures. Me being lazy, and not wanting to mess around with a new 2DA at the moment, I decided to just put in code to explicitly destroy them. But, it never worked. Turns out, I was calling a function that takes in a team id, and destroys everyone part of said team. However, when creatures are killed, they are de-registered from the team. Silly mistake really. I just switched around my functionality to make it tag based, and it worked just fine.
Tomorrow is it though. No more messing around. I need to stop fixing things, remind myself it's just an ALPHA, and move on.
I've never been a fan of ambient style music, which to me, is just music that can be played at any point in a game, not really belonging to a specific scene or section. But, if it's as good as the music in Oblivion, it gets a pass. This was the first sandbox RPG I had ever played, and I have to tell you, it was quite magical walking around that world for the first time, listening to this music.
10/28/10 -Thursday: ALPHA IS PRETTY MUCH A GO...
So, over the past 2 days, I've tested, tested, and then did a little more testing :) I am happy to report I made it from beginning to end, with no crashes. I of course discover little things here and there each time, but luckily, nothing is a show stopper. Now, I could continue this iterative process forever, but I really should get this in the hands of Jason so he can do his thing. Once I do package it up and send it off to him, I'm thinking that I will hold off on anymore improvement items until I get feedback from him. I hope the feedback is brutal, as I would rather find out something isn't clear now, then months from now.
In the interim, I will most likely start on another level, which has been a long time coming. Currently, the player is jumped from one spot to another early on in the game, but I knew I was going to have to come back and create this intermediary area at some point, as I was never happy with how the transition was handled in this first place. Once this area is created, I will need to go back and basically re-do an existing level that is sort of a part of this new one. They aren't connencted, per se, but you can see one from the other. Another reason I have to re-do this area is because I initially made it smaller than it was supposed to be. It's been fine for testing and whatnot, as a placeholder, though it's weird how part of this building is just floating on air, where there should be land :)
Once those areas are done, I need to create a short cutscene in the new one, as well as one in the re-done one. With the placeholder area, I've done everything except create cutscenes in it. That's the one thing I wouldn't even attempt until I had a final version.
Finally, I'm sort of 90% sure I'll be using Mantis for bug tracking. We used it at Ossian Studios, and it worked well, so I think I'll give it a go again. If I have time at work tomorrow, I'll setup some accounts for me and Jason, and maybe by the end of the weekend, it'll be filled up stuff that needs to be done. Speaking of things to do at work, I also hope the day is slow enough (as Friday's usually are) so I can answer somne post at the developer forums. I sort of stopped posting in it during the "crash crisis" a few weeks ago, and since then, there are some things that need to be answered.
Till tomorrow... (yes, I realize it's not always "tomorrow" :))
So, while everyone knows Nobuo Uematsu for his Final Fantasy work, he does do other things. Case in point, Lost Odyssey. This is a very tranquil piece, that could put you to sleep if you get too comfortable. Enjoy!
10/26/10 -Tuesday: MORE OF THE SAME...
I continued where I left off yesterday, messing around with combat balance. I admit I may have spent more time than I should have at this point, but I'm really happy with what I currently have. It probably won't get into this build, but at some point, I'll need to start defining my own custom experience table values. I talked about it months ago, but I just want more control over have much XP is given out per kill, especially depending on the enemy's level. I've already cut the standard XP given out by 50% (subject to change), but I still want more granular control over it. I'm a control freak!
Ahem, so besides that, I fixed A LOT of bugs. I've gone from about 20+ to just around 4. One such bug is actually very, very bad. For some reason, when I'm making use of the Talmud Infinite Storage api, mostly when dealing with arrays, this invisible object crap is spawning in the current area. I know Craig uses this item to store the actual variables on (at least, that's what I assume it's used for), but it definitely shouldn't be causing this issue. In fact, I'm getting a lot of bugs that are related to it. I'll need to try to reach out to him at some point to get it cleared up, but for now, it's not a blocker, as I see it.
Another thing I started to mess with is the perception range of non-important NPC's. I previously mentioned setting it to PercepRngShrt, but there is another one in the list, called PercepRngCrowd. Presumably, this is the better one. I imagine it's used when there are many NPC's in a particular area (hence the name, crowd!), so as to limit the amount of perception events that fire off. I was too lazy to run some tests to see if my assumptions were right, but I did make a post on the forums, hoping someone else had any sort of experience with it.
Tomorrow, I plan on running through the game at least 2 more times. Once more to make sure it can be completed, and a second time, assuming I find more bugs, and fix them in between the runs. Once that's done, I'll cut another ALPHA release, ship it off to Jason, then start adding more features. So much still left to do!
Oh, and finally, some really good news. The designer of this site, and the lead artist on Rose of Eternity - Cry The Beloved, has been found via Facebook. I can't tell you how surprised I was when I was on it last week, and Oli Ferrando popped up on the right side in the suggested friends section. The weird thing is, usually, it's usually someone who you have at least one mutual friend with. We have none, so I admit, I'm not sure how they're handling that logic on their backend. I know I've mentioned her in this blog many times, and I link to this blog from facebook, so perhaps they crawl all linked sites for names, and add that to the search bucket? Anyway, god bless facebook, because I've been trying to get in contnact with her for years... literally.
She confirms she's still doing art, so I will of course woo her, and see if she would like to join the team again as lead artist. Wish me luck!
This right here is the epitome of town music in the entire Final Fantasy series. If I'm not mistaken, overall, Nobuo Uematsu enjoyed writing the soundtrack to Final Fantasy 9 the most, and it definitely shows. I used to literally just sit there forever, listening to this music. It also almost became the main theme for Aribine. There's just something so damn peaceful about it. It also transports me back to 2000, and reminds me of a differentn time in my life. Good times... Enjoy!
10/25/10 -Monday: BUG FIXING AND POLISHING...
With regards to my post about scaling yesterday, I received a PM from TimelordDCgiving me some other tips to use. I haven't been making use of the areadata 2DA, but I know it controls certain things about areas, such as min/max enemy levels, if area notifcation should pop up, as well as something I didn't know about: Enemy decay time. If I moved to use this approach, I wouldn't have to add additonal functionality to an ever expanding set of plot scripts to make sure to clean up all dead bodies. Another tip was creatures have a flag on them that can make them spawn dead. I'm already doing this myself, but if the feature is already there, I might as well use it. Plus, Bioware may be doing it a better way than me.
Now, in between watching the NY Giants beat the piss out of the Dallas Cowboys, I knocked out many items on my bug list. Btw, when I say they beat the piss out of them, I really mean it. They knocked Tony Romo out of the game, and that makes the 5th quarterback overall for the season. And, it's been clean hits. None of that other controversial stuff that has been making NFL headlines these past 2 weeks.
Anyway, even while enjoying the game, I was a beast, just going through as much as possible. I had originally sent Jason a build last week, but that was more to test if it crashed his system. I was not proud about the build in anyway (actually, quite embarrased), so I'm working like hell to get him the most recent, new and improved version. Even if it's just an ALPHA, to me, the parts you can play need to be as polished as possible.
Most of the work revolved around issues stemming from my decision to stop putting like 1000 areas in the same area list. I mean, I was activating doors in areas I wasn't in (why not, everything was part of the same area list), moving creatures between areas like crazy, etc. All of that functionality needed to be changed. I also did some scaling work on that one problem area, trying to make it as bullet proof as possible.
Another thing I messed with was combat balance. I purposely left it for a later time (these are battles created many months ago), and that time looks to be now. I really just need to find the sweet spot with the materials used in the custom gear of some enemies. More specifically, I need to lower it. I'm getting my ass handed to me on easy every once in a while, which is wrong 2 different reasons:
I created this game. There is no excuse for me not knowing the right tactics to use per combat scenario.
The difficulty is called easy for a reason :)
Besides modifying the materials, I need to edit one custom AI template to take away a certain ability a certain set of enemies are using. They're already hard as it is, and have a similiar ability, so it doesn't make sense to have this other one.
Finally (yes, there's more people!), I need to come up with a solution this music thing. As you may or may not know, the jury is still out on custom music, and more specifically, stopping/playing it. Because of this, I switched to use custom sound effect objects. However, when I packaged up the DAZip for Jason last week, I almost crapped myself when I saw it was 500MB's. 500MB's?! Are you kidding me? Turns out, FMOD was always exporting the mp3's I was using as some other format (something similiar to wav), which makes it balloon in size. However, when I changed the output format to mp3, while the size came down from 500MB to 80MB, the main menu music was still playing when I started the game...sigh... I may need to override it or something with an empty track, or well, perhaps just learn how to stop it from playing! I seriously can't believe that 1 year into development, we still don't have a concrete solution on how to stop music from playing...
All of that said, I'm just happy to be working on a game that doesn't crash :) Last week really put things into perspective for me, so I'm making the most out of any extra time I have, to get as much done as possible. Hopefully, I can have an ALPHA ready in the next few days. Here's hoping!
When I was going through my MMORPG phase, I did a brief stint with Final Fantasy 11. I had great fun up until about level 30, and in particular, when hunting in the newbie areas of Ronafure, lisening to this music. Enjoy!
10/24/10 -Sunday: SCALING MY GAME...
In light of all the shit I've been through the past week or so, I've been putting in tons of work to scale this game. It's things I have known about, but just didn't worry about because of things working so well (up until last week!) on my machine. Some of these techniques include:
Not just deactivating an object when it's no longer needed, but doing a full, hard destroy. The main issue with crashing that I've had is that there are just too many damn npc's in this one small little area. Now, depending on the situation, they may or may not be activated. I guess my understanding of active/non-active was a bit off, as I thought the latter meant that the object wasn't taking up any memory in the area it's in. Not true. Anyway, by hard deleting them when they're not needed anymore, it frees up memory, which stops these crashes.
Putting perception to the lowest value on non-important, non-combat npc's. No reason for yet another PERCEIVE event to be fired for no reason, creating more overheard.
I haven't tried this yet, but I'm thinking that for non-important npc's that are just standing around, I may just remove their core script entirely. Now, if they have an ambient animation, I may need to leave it, but if they're just standing there doing nothing, why even process events on them?
I may need to re-work the lighting in my existing areas. Instead of having a bunch of smaller static lights, I may go the route of having 3-4 big ones that cover the entire area. I'm not sure if there is a difference, but from a level management standpoint, it's definitely easier. I'm also sure I have superfluous static lights that are remnants of when I didn't know what I was doing (i.e. a static light near the ceiling... why?!), so getting rid of them should speed things up.
When I'm showing dead npc's, I have this script that takes a living npc, makes it non-interactive, generates a pool of blood, stops all enemies from trying to attack it, and goes into a looping death animation. This has served me well, but these creatures may take up more memory than say, if I had a prop that was baked into the level. Unfortunately, since all the armor in the game as a custom look, I can't use the existing ones the game shipped with. So, I'll need to reach out to someone (perhaps Archon?) to see how easy/hard it would be to make some props.
Do a cleanup on dead bodies if possible. Sometimes, when I come back to an area where combat took place, the scene itself has changed, but there are still bodies laying around. I should do a cleanup on these.
This is just a small list of things that come to mind. In the end, I have to say, the Dragon Age OC ran perfect on my machine when I played it, and I'm not doing anything terribly larger in scale than they did, so that gives me hope that there are little things here and there I can fix to make sure this game plays as smooth as possible, on the widest array of machines as possibe.
Considering what happened last week, I'm doing quite well so far.
Often lost amongst popular SquareEnix composers of the time, such as Nobuo Uematsu and Yasonoru Mitsuda,
Hitoshi Sakimoto brought a very different style to music composition. Everything seemed to have a much more epic feel to it, and when the various scenes in the game took place, only being able to utilize sprites, the music brougt things to life.
10/22/10 -Friday: MUCH, MUCH BETTER...
Okay, tonight was much, much better. I felt like my old self again, hammering away at develpment. It had been so long, I forgot how much fun it could be.
The work I did mainly consisted of making sure I could play through the entire game, and then testing things, to make sure there was no crashing. I had played through a significant part yesterday, but a minor bug halted my process. Tonight, I literally played until the end, where I got a crash. I didn't panic too much, because at this point, I knew it was because of the stress I was putting on the engine.
At least with NWN, whenever I was doing too much stuff with the Aurora Engine, it would never crash. It would just slow down to a crawl. Here, it's just a crash to desktop. Anyway, now that I have more than learned my lesson, I will be spending some time doing some scaling work on this one problem area (in retrospect, there's a lot of shit happening at once), in order to make it work.
It's actually a good exercise in general, to make sure this game runs as smooth as it can, on the biggest array of systems out there. Damn PC's...
P.S. I needed a break from the stress of the past week, so I downloaded Leliana's Song. Meh... Maybe I wasn't in the right frame of mind, but it was just "okay" to me, nothing special. I may have to give it another go, now that I am just a tad happier these days :)
Again, I never played this game past the first 30 minutes, but I did get to hear a lot of the music when working on a "The Witcher" adventure pack with Ossian Studios. This immediately stuck out to me, and made me wish the combat system was better, so I could have maybe stuck with playing the game.
10/21/10 -Thursday: THERE AND BACK AGAIN... AN FOOL'S TALE
So, when all of this crashing business started a week ago, that same night, I identified what I thought was causing the issue. I found that when I pulled the offending area out of an area list containing 9 or so areas, it stopped crashing. I figured it out *that* night. I even coded up some utility functions to handle transitioning party members (not in the party at the time) between non-linked areas.
Then, I went on some witch hunt, convinced that the issue was something else. I came up with everything:
game build issue
system update issue
windows 7 issue
Well, Jason put that issue to bed, once he tested my "stable" build from 9/10/2010, which crashed on his Windows XP system, in the same fashion as what happened with me.
So, I went back to the drawing board, and decided to once agan load up my build from last week, then pull every area out of the area list, and make the apppropriate changes to make things playable. A week earlier, I had started pulling areas from the list, before thinking, "Hey, this used to work before, why not now?", which led me down the (presumably) wrongn path. Anyway, so far, no crashes... I'm not getting my hopes up, because I've done enough of that this past week, but in the end, it seems to be the most logical thing. For the first time in a week, I was able to actually do some work on the game, which felt great. I'm still taking things slow, but I'm more hopeful than I had been these past few days.
Being the somewhat positive guy that I can be sometimes, there are some positives to take away from this:
it forced me to do a lot of work on my revisioning system for both art and designer resources
I went through the process of creating a Builder-to-Player package for the first time, in order to get a build to Jason
it forced me to start thinking about performance issues in general, in order to make the game as scalable as possible. I would have usually left that for later in the pipeline
while doing all sorts of long as exports and re-rendering of lightmaps, I actually cleared out my entire DVR queue
I found an orchestrated version of some music
Here's to relatively pain free development for the weekend!
Today's music comes from Mr. Final Fantasy himself again. This was played during the opera scene in Final Fantasy 6, one of my most memorable experiences in any RPG.
10/18/10 -Monday: OKAY, THINGS ARE LOOKING SLIGHTLY WORSE...
The nightmare continues...
While I didn't get a crash at the same point I was before, I did get semi consistent crashes in another part of the game. At this point, I don't think it can be content related. It's gotta be something system related, either having to do with my current DA install, or worse, my OS install. I always maintained it had to be content related since I haven't update anything, but now that I think about it, the only thing that has been updated is most likely some windows auto update thing. It's bad really, because I have been experiencing instability with my machine for the past month, where the whole thing locks up, forcing me to have to manual reboot it, but since I've just been in this development bubble, I never really gave it a second thought.
Also, I guess the smartest thing to do is to take what I currently have, and ship it off to Jason to see if he gets the crashes. I've never packaged up a DA mod into a builder to player format, but how hard could it be? :)If he doesn't, then somethingn is definitely up with my system. At that point, I guess a reformat would be the best thing, but dammit, I'm already contemplating going back to Windows XP. I just don't have enough time in my day for this shit.
I hate PC's...
In the interim, I need to keep my spirits up, andn work on stuff I can work on. I've actually already come up with some quest ideas in these past few days of hell, so I might as well try to flesh them out some more on our developer forums. Oh, and one more thing:
Let's get this out of the way. I was the biggest Street Fighter 2 nut out there during the early 90's. I would study combos for the game that came in the latest issues of Gamepro, before I even got it for my SNES in 1992. Then came Soul Calibur. Sorry folks, I still like Soul Calibur better than Strret Fighter 2, 3, 4, or whatever version they're on. It just seems to have infinitely more strategic elements to it. Some of the best times of my life were playing it on my Dreamcast (R.I.P.) back in 1999. Good times.
One particular reason I liked it was because of the epic music. So, in honor of the nightmare that has been ruining my life for the past few days, I present, Knightmare's Theme.
10/17/10 -Sunday: OKAY, THINGS ARE LOOKING SLIGHTLY BETTER...
Today, I began the arduous task of rebuilding from the ground up, so to speak. As I stated yesterday, I was lucky enough to have both a db backup of the game from 9/10/2010, as well as a backup of the art resources. Following TimelordDC's advice in this thread, I backed up what I currently had, made a B2B export, then restored the earlier DB.
But actually, before all of that, I took this opportunity to do things the right way. So, the designers resources (scripts, creatures, items, etc.) that are a part of the toolset already have a revision system. We're left to our own devices for the art resources, so I decided to go with SVN as my revision system of choice. Now, when I initially set it up, it was really just one hack job, meaning I just had one branch of code, the trunk. Whenever I got to certain milestones, I never made a real tag of that code (essentially a snapshot I could use to make a build off of).
Now, in one way, I was lucky, because everytime I did a DB backup of the game, I also copied all the art resources to my hard drive that I keep all my backups on. So, I used those "snapshots", if you will, as tags. I had one from January, one from April, one from July, and one from September (most likely crisis related backups), and decided to just go with the last 2. The end result was that with the art resource snapshots, and the DB backups, I could essentially roll back to very specific versions of the game. This was important, because I didn't know where things began to fall apart (I suspected some time since my 9/10 build), so I knew I was going to have to get the exact state of things down before moving forward.
So, once I did all of that setup work, I restored the DB to the 9/10 version, then used the 9/10 tag of the art resources for everything. Then came the long, and I mean LONG process of re-exporting everything, in order to get a playable build. This includes things like exporting all designer resources, custom tints, materials, talk tables, etc. Then of course, on the designer side, I need to re-compile and export my custom 2DA's. The biggie was rendering lightmaps and exporting the data for all 11 areas in the game. That took hours.
Once everything was exported, I fired up the game, played through the section of the game that was crashing (remember, it wasn't random crashes, it happened at the same place every single time), and was relieved to see it didn't crash. So far, so good. Tomorrow, I'll actually do a full playthrough, and if all is good, will tag this release as being stable.
Next, I'll have to add things in one by one, in order to see what it was that started the crashing. Once I get everything back to the state of things as of Thursday, without the crashes, I'll make another tag. Going forward, because I'm a paranoid son of a bitch, I'll be doing this every week. Every Sunday, my job will be to just run through the game to make sure nothing is critically broken, and then make a tag of that build. I'll have to come up with some else once the game gets bigger, but it's small enough that I can do this. Skipping through dialogue and cutscenes will definitely help out the process.
I'm not ready to call it a success yet, but so far, things are looking better than they did Saturday night.
The song of the day is a classic. It's the recurring theme through at least 8 Final Fantasy's. Perhaps I like this one the best because this is my favorite one out of all 14 of them, damn near favorite RPG of all time. I remember booting the game up downstairs when my Dad wasn't home, because he had the crazy surround sound system of the day (1994!), and just zoning out. Good times.
10/16/10 -Saturday: I'M SMARTER THAN THIS...
What started as a minor inconvenience has turned into a full blown catastrophe. I don't even know where to begin, except to put it blunty: I've fucked up... Bad...
I guess I should catch people up who didn't read Thursday's post. Essentially, I started to experience crashes when testing the game. I hadn't done full blown testing since 9/17/2010, but when I did, I didn't have any crashes or anything like that. Now, I'm too pissed to go into everything, but everything I did the past 2 days was just a bandaid over the real issue, which has yet to be discovered.
Now, I have to resort to all sorts of time consuming things to see what the issue is. Lucky for me, I actually have a backup dated 9/10/2010, which was a week before my last playthrough. If the game doesn't crash when I roll back to that version, then I can incrementally add things one by one, to see what is causing the crash. It's annoying. I hate it. What's worse, I should know better.
I need to stop making backups during a crisis, and only a crisis. Every backup I have is because of something going down, like computer issues or something like that. I need to stick to my guns, and do a backup at least once a week, if not more. Space is not an issue, so why the hell not. I'm a software engineer by trade, so I'll say it again... I'm smarter than that.
Now, a little music for the day, to let everyone how I feel:
10/15/10 -Friday: NICE LITTLE SCRIPTING BREAK...
Keeping in line with what I talked about yesterday, I came into tonight knowing I needed to do something to make sure the game was still playable, since I made the decision to take this particular resource heavy area out of a common area list. This meant I couldn't use my existing systems to transition people from one area to the next, because it depended on the areas being in the same area list. The main issues I had were:
I was transitioning both an NPC, and a party member from this area to another
I was transitioning 1 NPC from another area to this area
Okay, I knew I could swallow having area specific NPC's to alleviate the issue of having to transition them around. I wasn't ready to throw in the towel for party members though! I would end up implementing a system similiar to the one I use for transitioning party members between area list linked areas.
Turns out, when you transition a party member to an invalid area (which is essentially what happens when you try to transition them to an object in an area it has no reference to), when you enter said area, even though you can't see them, they're there somewhere. I confirmed this by checking the current area of said party member upon entering the area. This was already the case for doing it via linked areas, so I immediately tried to use the function, WR_SetObjectActive, but I never saw them. Then, I tried something else. I activated them, then transitioned them to the WP they should have been sent to, and guess what, they were there!
Now, I already have a bunch of stuff to do, so I didn't really do any research on why this happens, I just ran with it, and started implementing a solution. I essentially created a new utility transition function, that does the following:
Sets the intended area tag variable on the transitioned party member
Sets the intended area wp variable on the transitioned party member
Transitions them to an OBJECT_INVALID area
Now, I already have functionality that loops through all party members (currently in party or not), and if the PC is in the same area as them, they're not in the party, and they're not active, I activate them. I just needed to add an additional check to see if the area tag I saved on them before transitioning them is the same as the current area tag the PC is in. If so, then jump them to the WP I saved on them.
And that folks, is how I get around the horribly inefficient way of having multiple copies of the same party member scattered around. Now, when I get a chance, I will see about doing something similiar for NPC's, to stop doing it for them as well. It's most likely going to involve adding them to the party pool or something like that.
Well, what can I say about this track? It's one of Nobuo Uematsu's most beloved compositions. When I originally heard it during the final battle of Final Fantasy 7, I didn't come away thinking: I NEED THAT TRACK... NOW!
10 years later, I hear this rendition, and I am in love. I'll keep saying this until the end of time, but CRPG's really need music like this. You look up epic in the dictionary, you see the term, One Winged Angel. Enjoy!
10/14/10 -Thursday: MANA SAID THERE WOULD BE DAYS LIKE THIS...
Boy oh boy, what a night... Where to begin...
So, I had just finished adding map notes to all the areas in the game, and was ready to take it for a spin drive. I got through the first sequence no problem, but when transitioning to the set of areas that the next set of sequences take place in, the game crashed. Okay fine, these things happen. Thankfully, I've also added auto-saves at all the important spots, so it was easy enough for me to get back into the game and try the transition again. Crash... Okay, one more time... Crash... Okay, now I'm getting scared...
The area I was trying to transition to is the same exact area I've been adding a bunch (read: a TON) of ambient related things. Thing is, while parachute testing, there were no issues. What followed was what I call the educated guessing game, as I tried to following things:
Updating my display drivers. Bad move. Once installed, I was getting this weird ass flickering effect on every screen. For the record, I have an ATI Radeon 4850, and I upgraded to Catalyst version 10.1 I think it was. Whatever the version, it was the latest. And this latest didn't work, so I rolled back to the previous version. Damn driver updates that cause more problems than they solve...
I contemplated updating my DAO game version from 1.2 to 1.4, but then said screw it. This transitioned used to work, so it can't be the game version, plus I didn't want to inherit any new problems associated with it.
Getting back to the game itself, I tried to simply start the game from this area. As expected, there were no issues. Okay, so I'm already on to something. It has to do with the area transition.
Next, I changed up the transition script to point to another area. The area loaded fine. With that, I knew simple transitioning wasn't the issue, it was the attempt to transition to that particular area.
I then started in another area (which was in the same area list as the offending area), transitioned, and it worked just fine. I expected this, but it confirmed it was definitely an issue transitioning to the problem area, outside of its area list. Getting closer...
At this point, I am 99.9% sure the issue is with the one particular area. Thing is, it's composed of 2 elements: an area, and a level. Because I'm an idiot, I haven't had the level files under source control for a while (long story), so I couldn't roll bacck to a previous version and see if it worked.
Luckily, the toolset has a source control for all designer resources, so I could easily roll back the area to the previous version. Once I did that, and tried the transition, it worked. Bingo! It's definitely due to this ambient stuff I've added...
So, all the creatures that are a part of the ambient related stuff start out in-active. So, I was a little surprised they were crashing the game. But, as I started deleting them one by one, and trying the transition, once I got under a specific threshold, it stopped crashing. Okay, fair enough.
My next thought process was that simply having that many creatures loaded into memory at the same time was a bad thing, so I started to implement a solution to dynamically create all those NPC's after entering the area. I got a little ways into it, but once I spawned more than 4, the game crashed. Damn!
At this point, I'm getting pretty pissed. It's getting late, and I hate to leave issues like this unresolved. It eats at me from the inside, and I pretty much can't enjoy my day.
Shit! Is it because this area is part of an area list that contains 9 other areas? I removed the area from the area list, and voila, it loaded just fine! Damn area lists... They're evil!
For those that don't know, an area list is just a mechanism used to load up a bunch of connected areas into memory at the same time, so when you transition between them, there is no loading screen. Clearly, I've been pushing the boundaries of how much you can stuff into it. I figured, the only drawback of adding more and more areas to an existing area list was that the initial startup time for the areas would be really long. I could deal with that, as it would only be loaded at most, twice.
Well, clearly, I was wrong. There are apparently limits to it, so when I had added all that crap to the one level, when it was being loaded into memory, the Dragon Age engine was essentially like, "Yeah, fuck you, that's too much data. You know what, I'm just going to crash, until you learn to not be greedy with area lists... Damn developers..."
Now, removing this area from the area list does have some minor issues, mostly because I make use of area list transitions for non-party members. Not a lot, maybe 4, but they're there nonetheless. I may have to bend over and make some dedicated instances of said npc's specific to those areas... Sigh, what a waste.
At any rate, I'm glad I went through this, and relatively quickly (only about 4 hours). These are the things you want to catch early in development, where the results end up in minor changes. And I learned more about area lists in the process. Fine, I can't load up half the mod in one area list (I'm only be slightly sarcastic).
There was something about games developed by Rare studios, during the mid 90's. It's like, they got it. They knew adding exceptional music to good games made said games ever better. Star Fox, Killer Instinct, and of coourse, the famous Donkey Kong Country.
This piece in particular, I would listen to over and over again, as with a lot of their games, they included the CD soundntrack. Just so damn peaceful. Enjoy!
10/13/10 -Wednesday: MAP RELATED THNGS...
Right. So, I'm apparently a little slow when it comes to mini maps and map notes. With regards to mini maps, I thought there was some ridiculous process involved in getting them into your game. Who knew I just had to right click on the area, select mini map, then export. Sigh... Next was map notes. I have been making use of waypoints for a while, but I never actually looked at the different attributes for them, such as enabling a map note.
With this new found knowledge, I started going through my 10 or so existing areas, exporting the mini map, and adding map notes where applicable. Now, in my defense, I never tried to implement them until last night. For whatever reason, they just weren't on my radar of things to do, and the one time I did read something about mini maps, it must have been about adding custom mini maps, and thus, I decided to do something else.
Anyway, this all works out in my favor, as it adds the extra layer of polish to the game, as I try to get this ALPHA release out. Tomorrow, I'll be fixing up some minor things, then going through the entire game one more time in order to compile another list of things to fix up. After I fix said issues, I'll have to go through the game one more time, so I make sure I deliver something that is at least playable, with no show stoppers.
Now, I never actually played this game, but in 2006, there was a radio site called RPGFan Radio.I'm not sure how I stumbled upon it, but it was one of the best, short lived experiences of my life. Short lived, because the guy took it down as he could not afford it anymore.
Anyway, this song used to come on every so often, and I was just amazed with it. It really reminded me of the glory days of SNES RPG's. Enjoy!
10/12/10 -Tuesday: CUTSCENE NIGHT...
Tonight, I sort of knew I was supposed to work on this 10 second cutscene that should have beenn finished months ago, but when I sat down, I sort of just stared at the toolset for a moment. Once I came to, I didn't think about it, I just started to do it.
By itself, a 10 second cutscene isn't difficult, but when you have to coordinate the animations of at least 9 actors at the same time, it adds just a smidge of complexity to it. The main issue going in was finding the appropriate animation for one particular NPC. Luckily, I was able to find an existing one used in the OC.
If you look at the animations in the game, there are generic ones, and then there are cutscene specific ones. For instance, there is a cs_cailen (cs presumably stands for cutscene) one, and in there is something like 4ferelden, which is the animation used when he yells, "For Ferelden" during the battle at Ostagar. Anyway, I found what I was looking for, by viewing some cutscene specific ones. Actually, I'm quite happy with the results, as I figured it would take longer to find the right one.
Next, I had to add a bunch of actors to the scene. You see, this particular cutscene is just part of a bigger one, however, since the music changes, and because of my sound implementation at the moment, I need to stop the first cutscene, switch the music, then start up the new cutscene. That in itself isn't so bad, but the first cutscene had so many actors that I had to replicate in the 2nd one. After I was damnn near done, I realized I probably could have just made a copy of the first scene, then deleted everything, except the actors of course. Oh well...
Once I was done with that, I just had to make some small scripting changes to accomodate the addition of this cutscene, and I was good to go. It's been a long time coming, but it felt good to finally have this done. Only a few more gluing tasks left!
So, I came home knowing that I had a bunch of threads in our developer forums that I hadn't gotten to over the weekend. I was supposed to get to it at work yesterday, but I spent most of my free time running a bunch of benchline tests to see if it was worth it to convert this process we have from pure Ruby to JRuby, a java implementation of Ruby. It's actually quite fascinating, and as such, I didn't have any time to devote to the forums. So I got home, had my dinner, and strapped in, because I knew it was going to be a long night. How right I was...
Earlier while on the train coming home, I had written up the backstory for another cast member, and so staretd out by posting that to the forum. Then, I started going through the older threads, adding my input where needed. Then, a new thread popped up asking a few questions about an important transition period between the first of games, and this new one. Well, I rolled up my sleeves, turnend the Monday Night Football game down, and got to it.
Once I started writing, I just couldn't stop. I was actually having a lot of fun describing at a high level, said events. Since I knew I wasn't going to have to show these particular events, when I decided to move away from The Last Petal (sigh...), I never really thought about it. Well, what I wrote tonight was so long, I had to break it up into 4 logical, separate posts. It felt really good pressing submit for that 4th time, and I can't wait for the feedback.
All of this backstory that has been written over the past month is both a blessing and a curse. The blessing is quite obvious. The more backstory, the more history, the more the player can get absorbed in the world. This is really important, because I don't have the Dragon Age lore to fall back on, as most modules currently in production have. I may have been able to get away with not being as specific about certain things in my NWN mods, but I think the standard has been set with DA, and the amount of backstory needed to bring the world to life. And as I always want to be at the forefront of RPG design, there's no turning back.
The curse is, with all of these cool things we're coming up with, we're not going to be able to show all of it in the game. The events taking place around the year 700 for instance, are clearly out of the scope for this game, as The Coming starts around 3980. Of course we'll be able to reference these events and such, but I'm getting so excited about them, I'm knawing at the bit to do a prequel (*looks boths ways*)!
To go back to the blessing, I guess another pro is that whenever someone else joins the team, they will immediately have access to a ton of information to sift through, to get a better understanding of the world.
In other related news, I totally forgot the Shanghai 1000 Master Series Event is this week, so on the days Federer plays, I'll have to focus on monkey tasks, stuff that doesn't require too much thinking. I didn't have the Tennis Channel until this year, so I've never actually gotten a chance to watch any of the eastern Asian events (China Open, Japan Open, etc.), as they normally are starting around 2:00 AM. In fact, I've damn nenar missed the last quarter of the tennis schedule because of this. Now, I can DVR it, and happily watch it at my leisure.
Anyway, my goals for the week stay the same as they were yesterday, before I got caught up in story development. So, I won't waste time repeating them.
I was out for the majority of the day, so I didn't get as much done as I would have liked. At the same time, I went really hard all week long, so one slow day isn't exactly a bad thing. And for those of you who were reading this blog back in October 2006, you know what happens when I get stressed/burned out.
Tons of polishing continues to take place. I feel like a broken record, but I continued to add ambient related things to the various areas I've created thus far. I also started adding sound effects as well. Sometimes, I think people (andn designers!) take sound effects for granted. They definitely add to the overall presentation of the game, though at least for me, I never really consciously think about them when playing a game.
I also was able to include my wife in the development process, having her help me create face morphs for the various characters. I have no problem re-using some existing face morphs from the OC, but some cast members need a custom face morph, for reason thay will be clear once people play the game. I'm hoping to get some use out of some of the ones submitted to the next Community Contest, because besides town building, face morph design is next in line for things I'd rather not do :)
Anyway, you can see the one she did in the bottom picture, which I think is a lot better than the top one. To be fair, I've since made the lighting better, but even in the better lighting (which I don't have a screemshot for), it's not as good as the one. For one thing, this character is supposed to be 25, and in the old one, she looked as if she was 16-18, so it needed to be changed post haste! If I could get her to do a face morph once a week, it would be a success :)
Moving on... If I do a quick mental check, I need to revisit about 3 piecses of dialogue, and write about 2 full ones, and a bunch of one liners. Depending on how I feel tomorrow, I'll either knock those out, or, I may do that 10-12 second cutscene I should have done today.
As for what I have planned this week, I have a lot of threads in the developer forums I purposely left alone, so I could tackle them at work during downtime. It's really funny that in just a month, Jason and I have locked down more of the most important concept/story elements in the game world (not neccessarily things that will be seen in this game, or have been seen in my previous games), than has been done in the past few years. Honestly, I haven't done this much brainstorming since 1999 when I first conceived the idea of Rose of Eternnity. I never realized how much I missed it. It's as if this world has doubled in size and complexity, which is a good thing!
Another thing I wanted to do was kick off the process of getting VO into the game, which of course means getting some dialogue edited. I already have the perfect scene for it, which only has about at most 15 lines. There may not be that many lines, but they are very important, part and parcel of a very important cutscene.
Besides the above, I just plan on continuing to stay focused, and polish things up. I can see the light at the end of the tunnel!
When I saw this movie, I knew I had to buy the soundtrack. Just another hole in nthe theory that truly good music won't be heard in a movie, or something to that effect.
10/9/10 -Saturday: CUSTOM MODEL INTEGRATION, MORE DIALOGUE, AND UM... MORE!
As you can see by the above screenshot, I was able to integrate mikemike37's custom fountain model into my game, with no issues. It turns out, there are 2 models... One is the fountain, the other is the water VFX. Syncing them up was pretty easy. I just took the exact coordinates of the fountain, and then made sure the VFX had the same, and it looked perfect. I even found some good water sound effects, so I'm pretty much good to go. I also created a group that just contains the models in a nice single package I can place it anywhere.
Now, I had a few ideas of where I wanted to put it, some feasible, some not. For some of my interior areas, the white marble look of the fountain doesn't go well together, but outside, it's perfect. Just for the record, the screenshot is not the final place of it. I just dumped it outside to see how it looked with the other models I'm using. Going back to the interior levels, it was also a bit big. I know that Adinos' tool can resize models, but I'll leave it alone for the moment, as I have other things to do.
So, I ended up writing a bunch of dialogue, and in the process, had to make a quick change to how I do it. As I've been mentioning over the past few days, I have many different plot states, with various NPC's saying different things, depending on what's going on. For whatever reason, I didn't realize you could have multiple stages per conversation file. So, if I had multiple stages, I had multiple conversation files... Doh! Anyway, it just took a bit of time to merge all the conversations into one file, and I was good to go.
As I was writing tonight, as usual, yet another NPC has emerged from simple ambient creature, to a full fledged cast member. Their story actually already fits in with the existing framework we have setup, so it's not like it feels contrived or anything like that. Of course, I was already thinkng, "Shit, more VO...". Oh well, what can I do? I won't compromise the quality of this game for VO, that's for sure.
Tomorrow, I'll continue to do more of the same. Writing dialogue, creating stages, and TONS of plot related scripting. Oh, and I have like a 15 second cutscene to create, the hardest thing being finding the right animation for it.
This piece of music I have for you today is one of the standard vocal long songs the Final Fantasy series has been using since um... Final Fantasy 8. Now, I actually haven't beaten one of them since I beat Final Fantasy 9 in 2000, so this particular piece totally was under the radar for me. I just happened on it when I purchased one of the latest CD's that was made from a Final Fantasy concert in... Stockholm?
Anyway, this piece is simply magnicifent. I've literally listened to this while going to sleep for the past month. It evokes so many emotions, and gives me so many ideas for Rose of Eternity, it's crazy. Now, I know this type of music hasn't in CRPG's, but dammit, I still maintain it will happen eventually. To me, this is the last piece CRPG's are missing, to put the final nail in the coffin for JRPG's. Yeah, that's right, a self proclaimed JRPG fan is saying it! That is all...
10/8/10 -Friday: MORE OF THE SAME...
As has been the case lately, I was really focused tonight, as well as consistent. I worked on another smaller sequence, making sure all the people who were in the room are gone, and making sure the people that need to be there, are, well, there. I also even re-worked a combatg scenario, by adding one cast member, and removing 2 minor NPC's.
Since I created this fight sequence, I've added some props to the area, that were sort of blocking some people from reaching others, as we know pathfinding hasn't been the best aspect of any of these previous RPG's (NWN1, NWN2, DAO, etc.). I actually surprises me when things like this do pop up in games. Many people will blame it on the game engine. I blame it on the combat designer. If people are getting stuck by walls, or other things, then move your combat to a more suitable place. I spent a good hour testing out the combat, moving people around, until I found something that worked. I then tested it on each difficulty, just to make sure it was still balanced with the previous combat setups I had created.
COMMUNITY CONTEST 2: Prop Model
So, this particular contest has been over for a while, but I had been eyeing the model of mikemike37 for a while. Here's some screenies:
Seriously, this is what I'm talking about. It's like he just straight up asked me, "Challseus, what would you need in your upcoming game?". I haven't intgegrated custom props into this game yet, but the directions seems pretty straightforward, so that will be on my agenda of things to do tomorrow.
For other modders out there, you can download it here. I'm hoping more people start creating custom content like this. Oh, and don't forget, the Community Contest 3: Character Contestwill be over in 9 days. Get to work, character... creators!
Today's music comes from the Playstation 2 game, Dragon Quest 8.I originally bought it back in 2005 for the Final Fantasy 12 demo, but ended up really liking it, though I never beat it... The one thing I do remember is the music. Now, I'm a fan of Nobuo Uematsu, and I just found out that the composer of music for all the Dragon Quest games is his idol. Go figure. Anyway, enjoy!
10/7/10 -Thursday: MORE OF THE SAME...
Man oh man, this work never ends... I swear I've been doing ambient related things for like a week straight. And this isn't just like an hour or 2 a night. I'm buckling down and doing like 4-5 hours in a row. Luckily, I can see the light at the end of the tunnel.
As what happened when working on The Coming, I've been slowly building up my list of utility functions. All of this ambient stuff has actually produced such functions. Some I just created yesterday are:
ROE_StartAmbientAnimation(object oCreature, int nAnimPattern) - This is a convenience method for having creatures start some sort of ambient animation. It even works if they already had some preset earlier. I guess I could use one of those ambientn animation override functions, but it seems like overkill, so this will suffice. I also added this function to an existing function I have, TransitionToWaypoint(object oCreature, string sWP, int bActive = TRUE, int nAnimPattern). Essentially, if you specify an animation, they will start it after being transitioned.
ROE_SetCreatureGoreLevel(object oCreature, float fGoreLevel = -1) - This is just a thin wrapper over the core gore function, except if you leave fGoreLevel at -1, it will use RandomFloat to generate a random amount of gore to add to the creature.
AddPoolOfBloodByObject(object oCreature) - Underneath this function, it just applies the pool of blood VFX by a creature. This function doesn't do anything new, it just keeps me from having to remember all the parameters it takes.
ROE_KillCreature(object oCreature) - This one does a lot. It:
Adds a pool of blood by the creature
Adds a random amount of gore
Stops the creature from attacking other creatures, and stops them from being attacked
Set their interactivity attribute to false
Gives them a random, looping death animation
UT_TeamSetCreatureGoreLevel - Just calls the aforemention ROE_SetCreatureGoreLevel on a team of creatures.
With regards to all the team functions, it would be nice if you could simply pass a function to another function, if you get my meaning. As of now, all team functions essentially have the same core. Get the team, looping through the team, then doing whatever you need to do to each team member. In the end, it's a lot of repeated code. And, I am very much against repeated code, hence my ever growing library of utility functions.
I know I mentioned this before, but the list is getting so big, it's time to start breaking them up into separate scripts. I'll probably need one for movement functions, team funcntions, ambient functions, etc. I've already broken up the party member stuff, as well as music related things.
The good thing is that most of these functions are "set it and forget it". I don't have to worry about the details anymore, and can focus on other things. Just the normal pains of working with an engine for the first time. The 2nd time around, I'll have built up so many utility functions, scripting will be even easier the next time.
So, I put my foot in my mouth and said I don't like that much music from CRPG's. Oh well :) So, I never actually got far into this game, but even before it was released, I fell in love with the music. They used to let you preview the music on their main website, and I came across this one, and knew the composers they found for their game were going above and beyond what the typical CRPG composer does. Enjoy!
10/6/10 -Wednesday: TOO MANY TOPICS!
After a little web browsing, I got right back into development. Tonight, I focused on setting the scene for the aftermath of another scene. The key is to utilize the same NPC's the player has been seeing through the game thus far, so they grow more attached to them. It's a real labor intensive process, as I need to make sure to remove anything no needed in the scene, add things needed in the scene, make sure the ambiant animations are set, plot flags are set so people say different things, new sound effects are playing, and a whole host of things. That said, I knocked out a huge part tonight, for which I am very proud. Tomorrow. I'll hopefully finish up the scene, as I just need to add a bunch of actors.
Now, I came across an interesting article at IGN, called Too Much Exposition. It's as if they are reading my mind! I won't go into too much detail (that's what the article is for), but it essentially talks about how certain developers either overload the player with too much information in the beginning, or at the end of the game (where many people don't get to these days, including myself).
This has already been a main focus for me. I like to call it, the staggering of information. In the beginning of the game, the player is just dropped into the middle of an ongoing conflict. There isn't anyone there to give you this long winded explanation of what is going. The process is very organic, actually. As you proceed through the areas, while dealing with different people and situations, what is going on will be made very clear. Of course you can inquire, but there is no one there to simply give you a brain dump of the plot.
I really use this strategy when it comes to every aspect of the game: custom ability allocation, introduction of new cast members, etc. The point is, give people enough to keep them happy, but always have more coming, so things stay fresh. Ah game design, if only I could do this full time, not just on the side.
Personally, I'm looking forward to the head morph contest, not only because I'll be able to make use of them in Rose of Eternity, but I also may be able to find someone with considerable talent, who may be able to help with some custom ones I need.
Anyway, if this is your thing, what are you waiting for? Get to it!
Finally, I just want to end things with this little music clip. Let me tell you, I certainly did expect great music from Super Mario Galaxy upon purchase. I just expected impecible gameplay. To Miyamoto's credit, they took things to the next level, and allowed Koji Kondo to record the music with a live orchestra. Wait, what? For an action platformer? Not even for most high profile RPG's? Crazy :)
Anyway, what followed was some of the most stunning music I had ever heard. You know what's even better? They will be doing the same thing for The Legend of Zelda: Skyward Sword. *Drools*
10/5/10 -Tuesday: CUTSCENE NIGHT...
Tonight, I did a lot of work on one pretty important cutscene I had initially created months ago. All of the general stuff has been done for a while, most importantly the sweeping camera angles on key with the music. In fact, every shot is done. The only thing I've needed to do was add more actors to the scene, along with their respective animations, and sound effeccts.
With regards to adding actors, I knew I needed more, I just didn't know who. I wasn't just going to put in extras for the hell of it. Well, since I've been adding more and more NPC's to add to the general ambiance for the past few days, a few lucky candidates were inadvertenly created. So yeah, they were re-purposed to be in this scene as well. Lucky for me, it totally fits with the story. I still need some more, but the ones I added really make a difference.
Next up was the animations. I already knew the theme of the animations I needed, and even was implementing it on the few actors already in the scene. Since the template was already there, adding them to the new actors was pretty easy. I just had to find variants of the animation, as well as playing them at random intervals. How robotic would things look if everyone was performing the same animation at the same time! As usual, Beerfish's animation spreadsheet came in handy, and I was able to find what I needed.
Lastly, there were sound effects to be added. You know, after the whole issue with sound in general, and especially adding it to cutscenes, things seem to just be working now. Weird. I swear, I added sound effects to the cutscene track, and they never played. Now, I've been able to add multiple ones, and they all play on key, even when previewing in the cutscene editor. Go me!
Now that I was happy with the current state of the cutscene, I moved on to the level itself. I've had this persistant issue where the PC turns all black during exact moments in the scene. Why, I have no idea. Some people on the forums thought it might have to do with the fact that I had an obscene amount of static lights in the particular spot where it happens. Yeah, did I mention, this was made before I learned the subtlety of lighting? :) So, I messed around with the lighting, moving things around, deleting uneeded lights, and lowering the brightness of them.
In the end, it did make the level look slightly better, though it didn't fix the all black issue. As usual, I'm not too worried about it, as I'm sure the solution will present itself at some point. I'll just move on to some other things. I may end up rebuilding the scene step by step to see what causes the issue, but again, that's another issue for another day.
Speaking of which, I've been really, really good with this lately. Hot on the heels of just being focused in general, I am also not wasting a lot of the precious time I do have on issues like that. There's always something to work on, so if I'm stuck, I'll just move on to something else I can do. It helps with motivation, because I'm seeing more contnent be added, which is always a positive sign.
And all of the above was just stuff I did when I got home from work. While at work, in between small breaks, and during my lunch break...
...Rose of Eternity is still on my mind. Since the creation of the developer forums 3 weeks or so ago, I now have tasks that need to be done as well, luckily, they can be done anywhere where I have an internet connection (i.e. work!). At any given time, there's been at least 2-3 open threads where Jason and I are discussing the backstory for some particular character, adding various established events to our new time line web app, or analyzing perceived inconsistencies in certain parts of the lore.
If it seems like a lot of work, it is. Luckily, it's fun! In these past 3 weeks ago, we've established some pretty canon events, events that I glossed over in the first 2 games, but never really explained. Well, for those wanting to know more (people always like more, right?!), we've got it for you. And I know I mentioned this before, but documenting every piece of lore, backstory, etc. that we can, it makes writing even easier than it was before.
I also cannot get over how excited I am about the time line. Recently, we've been adding events that take place during the beginning of The Coming, right down to the day. I'm generalizing, but we have things such as:
3980 - Day 1 - Aramusfalls from waterfall, which induces amnesia
3980 - Day 2 - Aramus rescues Cloponfrom the Ministry of Justice
3980 - Day 6 - Aramus & Clopon escape Aribine, and make their way through South Shinkara Forestto arrive at Challseus' cabin. When Oracine and the Ministry of Justice arrive, he's killed
That's just an example of a small sequence of events. We have other events as well, such as Clopon training with Adaramus from 3975-3980, Aramus being born in 3954, Aribine being founded in 3979, etc. As we continue to add more events, it's just making me realize how big this world, initially conceived of in 1999, has become. There are already events that take place in the 700's that I want to design a game about! So much story to tell, so little time :(
Finally, I'm looking into ways of publishing the timeline in read only format. Since it's flash based, I just need to distribute a URL, and that's that. But, there's a lot more work to do before getting to that point.
Today's music is from Icewind Dale 2. I've never been a fan of CRPG music, but this piece is just so damn beautiful. As an addition, I've also added a user remix, which is very good as well. Enjoy!
10/4/10 -Monday: QUEST NIGHT...
So tonight was all about the design/implementation of a particular quest I came up with last week. In an earlier blog post, I talked about how I'm not going to be adding quests for the hell of it, just to have some bullet point when marketing this game. Qaulity over quanitity, folks!
The quest in itself is minor in scope, gamewise, however with the different ways the player could end it, definitely more than minor in implementation. I've actually come a long way with regards to this. I used to just make these Kill 10 Burrowing Beetle types of quests, and rightfully got flamed in the reviews for it. Interestingly enough, it wasn't until I was working on Mysteries of Westgate where I started to really think about implementing really complicated quests. For whatever reason, when they took all the stuff the writers designend, and divided it between the technical designers, I got a lot of the content from "Tiberius".
His entire style, with regards to quests, was to give the player as much choice as possible. People say that crap all the time, but he meant it. There was this one quest, called The Knot of Shou Long, where I experienced his design process first hand. As I remember it, the quest was as follows (obvious spoilers from Mysteries of Westgate) :
THE KNOT OF SHOU LONG
The main premise was that there was this huge knot made out of rope. When I say huge, I'm talking like a diameter of like 6-7 feet. Many would come to attempt to untie this knot, in hopes of winning the prize, a golden chalice, which also had a bunch of gold pieces in it as well. Well, at some point in the core path of the main game, you're walking by the knot of shou long room, only to find out the golden chalice is missing. And it begins!
From the get go, once you find out it was missing, a bunch of detective works ensues. You start out by noticing some blood on the door of the room. Now, if you had completed this other quest that had to do with dog racing, you could borrow this dog to follow the trail back to this particular house. If not, you could purchase some blood revealing potions from this prolific wizard. Then, using this potion, you could follow the trail back to the same house. Oh, and there was no hand holding. No one told you either way what to do, you just had to be paying attention while playing the game!
Once in the house, you would be met by a fierce Adamantium Golem who could only be killed with, that's right, you guessed it, Adamantium weapons. No onen told you where you could get these weapons, but if you talked to the right merchant in the merchant's district, you could find some.
After defeating the Golem, you would then be posed with a puzzle that was a bitch to implement, so much so, that I honestly don't even remember how it went. Something about counting some colored tiles, and using said result for some lock combination.
Once in this room, you would be faced with "The Riddler", the person responsible for the missing chalice. For you DnD purist, I know she came from a certain special race (not Drow!), but I can't remember... Sorry! Anyway, she sends you on some quest to some underground district to approach some Duergar Dwarves (sp?) about something they stole from her. At this point, my memory of the quest starts to get fuzzy.
When you approach them (after fighting your way through this gauntlet area with dwarves raining arrows on you from above), they tell you this particular item was stolen from them (everyone has crap stolen from them!). You can agree to find it, or tell them to fuck themselves and look for it yourself. When you get to the area, you're approached by a gang, consisting of an ogre, troll, and some lich or shadow knight or something. If you told them dwareves to go to hell, some of their soldiers will be there as well. A setup! If you didn't piss off the dwarves, only the gang would be there.
After acquiring the item, you go back to the Dwarves, where another fight ensues. If you fought some of the soldiers with the gang earlier, there are less there, if not, you have one hell of a fight on your hands. When that's done, you can go back to the Riddler with her "item".
Once she has it, she actually tells you the secret of the knot of shou long, and teleports you there. You can solve the riddle, but unfortunately, there is no chalice to give you. But wait, she also told you that she just put a spell on the chalice, and that it's been there the entire time.
If you had a high enough skill in spot check, or something like that, you could immediately find the missing chalice as soon as the quest started.
Now, I'm not doing justice to this quest, as I've left out all the lore, as well as other RP choices (are you a Duergar Dwarf, are you evil, etc.). But damn, it was definitely the most complicated I've ever done, that's for sure.
Here's my daily piece of music, from famed composer Yanni. Yep, that's right, Yanni, I like the guy! Don't let his long mustache/arrogance push you away, the guy's a genius. Me and the wife went to a concert in Albany in the summer of 2009, and it was great. Anyway, enjoy!
EDIT - Here is a walkthrough of Mysteries of Westgate, which would better explain the quest I muddled my way through :)
So, I am really getting good at staying focused lately. Even though I was out at hours at a time, for things like a house warming party 40 minutes away, I was still able to get some work done. If this was a few months ago, I would have came home, surfed the net for hours on end, trolled the BSN forums to see the stupid things people were complaining about on that particular day, etc. Tonight, I didn't even turn on the Giants football game. Now that's dedication!
As usual, just a bunch of monkey work tonight, in my ever long quest to make these areas seem as alive as possible. I did something of a breakthrough, though not in any category of things I was working on. So, I've added a bunch of sound objects to one area, to simulate a crowd of people talkingn, and they sort of get drowned out by the music that's playing. Now, since I'm using sound objects to play music, it's easy enough to lower their volume in the area editor. Well, when I lowered the volume all the way, just to make sure the other sound objects were playing, somethingn interesting happened. In the cutscene that runs when entering the area, the PC walks down a hallway. Well, when he was walking, I could actually hear the sound effects of him walking!
Now, maybe I'm just behind the times, but I thought it was a well known issue that sound effects for animations weren't playing in cutscenes. Many people have brought it up before, and I even submitted it as a question to Fernando Melo when I shot him that long list of audio related questions. So, could it be that me, and others have just had some music drowning them out? To be fair, they are real low, sound wise, but it's definitely there. I'm going to post a topic at the audio forums (not that questions really get answered there!) about it, and see if there is any way to raise the sound of it. I guess technically I could find them in the Bioware FMOD project, but I'd rather exhaust all other options before going that route.
But yeah, I'm continuing to make good, steady progress. Tomorrow is my off day from the gym, so I'll be home around 7pm, and hope to be able to develop until about 12am. There shall be no distractions!
This song right here is a classic. It's from Final Fantasy IV, release back in like 1990. It's so damn good, it's actually on musical curriculums at various colleges around the world. This particular version comes from the Celtic Moon album, which came out shortly after the original soundtrack.
10/2/10 -Saturday: STATE OF THE UNION...
Lately, I've been on a tear. I mean, I've just been super focused, knocking out as much stuff as I possibly can. Granted, it's been minor stuff, but it all has to get done anyway, so it doesn't really matter what I did. Essentially, I've taken a few areas that has been pretty much devoid of all life, and made them come alive. This of course meant adding a lot of new NPC's, dialogue, ambient animations, and sound effects.
From a developer standpoint, I love to see things I've imagined come together, and these areas in particular were just looking so... dull for so long, it was driving me crazy. Right, so of course I know that comes with the territory of developing games, but it is still annoying nonetheless. Well, not anymore. They're finally starting to look like they should.
Now, I did run into a few interesting issues along the way. You see, I've said it many times (no really, if you check my first blog entries from back in August of 2005, you'll see it mentioned there), but I really hate developing towns. There's just so much you have to account for, mainly the state of things. More specifically, as the plot changes, so must the people, and possibly even the environment. It's all about making the damn place as believable as possible.
Well, I'm not building a town at the moment, but this set of areas (9 in total, at least 1 more to come), that I've been working with since the beginning of time it seems, have a lot of state changes. At least 3, possibly 4 if I get even more ambitious. I have to account for day time, night time, and then events that occur which dramatically change the state of things. It's not so much the difficulty of doing it, it's the quantity of how much has to be done. Well, let me back up... It's going to be a bitch to do the night time thing. I'm well aware of how to do it, I just don't want to :)
But back to the issue I ran into... I have this area with a bunch of props. The only problem is, after certain events, these props need to be gone. Unfortunatelty, props are... I don't know the right term... baked perhaps? Yeah, I'll go with that :) Props are baked into the levels you create, get baked lighting effects, shadows, and all that good stuff. Only thing is, once they're there, that's it. Now placeables are added to the area, don't get shadows (not that I know of), but can be added/deleted dynamically. They just don't look as good. This would be well and good if all the props had a corresponding placeable, which they don't. Now, I assume this is because Bioware only wanted to created resources they needed for their OC. Fair enough.
Well, thanks to TimelordDC, I've been pointed toward a tutorial that help me convert a prop to a placeable. This is big for me, and I will definitely give it a look in the coming week. Heh, it seems whenever I have an issue, someone has figured it out... Well, except for music... And even then, I already have my own implementation that works just fine. But yeah, nice to see the community is really coming together. Good times.
STATE OF THE UNION
So, another month has gone by. Overall, I would say the previous month was pretty successful. At this point, I've already done the majority of the heavy lifting for this particular sequence of events. Now, it's just about the minor details, ambient related things, if you will. I did do a couple of new cutscenes, and I did make changes to one of my systems, but I would say the majority of the stuff was just adding that little extra something to make the game special.
That said, it's time to really talk about the 800lb gorilla in the room: VO. Damn people and their expectations. Any developer worth their salt is going to have it, so it is what it is. Look, I've been doing this thing since 2004, so nothing really surprises me that much anymore. I think this will be the one thing that brings me back to 2004, and puts me in a state of feeling like a rookie. Now, with every piece of dialogue I write, I'm thinking in the back of my head, "Someone is going to have to speak this line". I think I just need to get one done, and then I'll be fine.
The only thing stopping me is having the dialogue in a state of near perfection. No one's getting paid, so I only want people to have to do things once. I'm sure it would be annoying to have people record dialogue, only to have to do it again, because I decided to change it. To that end, that's another reason why I spent so much time last month on it, and why Jason and I have been doing so much work, locking down the story, so we don't end up doing double work. Then of course, it will all have to be edited first as well. The plan is for me to take a particular scene, make sure Jason is okay with what I have, then try to get it in the game as VO. Then, we'll go from there.
Besides that, it's just about polishing things up. While this is definitely not the end of the game, I want to have this sequence polished as much as possible, so I can start sending it out to ALPHA testers. The earlier you bring other people in, the better. It served me well with Cry The Beloved (had people testing it 3 months after development, and total development time was 15 months).
Finally, I am not sure how well I will keep this up, but I just wanted to post some examples of some of my favorite music of all time, starting with The Girl Who Stole The Stars, from Chrono Cross. I was immediately hooked, and this became one of Clopon'sthemes in the game. Simply beautiful...
Website contents copyright (c) 2006 by Leonard Bedner