Author: Gene

Dungeons & Dragons Online – Character Creation

   The first thing you’re going to be tasked with in DDO is creating your character. Unlike most MMORPGs it is completely possible to make a very suboptimal character at this point; there are a lot of bad choices that can be made if you don’t know what you’re doing. I’m going to highlight the basics of a character for you, but be sure to read tooltips carefully during character creation!

   The character that we’re going to be creating is a cleric/fighter with a focus on survivability and, later on, a decent amount of ass kicking with a sword and shield. This build should be able to get you through all quests on Normal difficulty as well as most quests on Hard difficulty with a bit of care and planning.

   I’m going to be writing this portion of the guide in the same progression you would take on the character creation screen, so let’s jump in! I’m also going to be working under the assumption that you are playing on a non-VIP account.

Character Generation
   Select “Spell.” Your style is what determines the group of starting classes you can choose from.

   We’ll be starting play as a cleric so that you can get a handle on how spellcasters work in DDO. The cleric class also gives you a solid baseline for surviving the hardships to come. You’ll be roughly 4th level by the time you get off of Korthos (Tutorial Island™), so don’t worry about not being super effective in a fight right off the bad.

   Choose “Customize” down at the bottom. The paths provided will choose your feats and skill progressions for you. They are not even remotely optimal for later game survival and should be avoided.

   Choose “Human.” Why a boring human? The bonus feat! You’re going to need all the feats you can get in DDO and being a human is an easy way to get an extra one. You also get 1 bonus skill point every level (4 at 1st level) which will offset our having an otherwise low Intelligence score. Don’t forget to also choose your gender at this point. Now let’s get into the cruncy parts of creating a character!

The choices up to this point.

Assign Your Ability Scores
   The first true choices set before you are your ability scores. This is also a point where, if you don’t know what you’re doing, you can make a really, really bad character. We won’t be doing that, though. Since you’re a fresh account you only have 28 points to spend on ability scores. As you play more, you’ll unlock the ability to create 30 and 32 point characters. Should you choose to reincarnate at end-game, you’ll be able to upgrade a character all the way up to 36 points. For the time being, though, I’d recommend the following spread of ability scores:
   Str: 16; Dex: 12; Con: 14
   Int: 8; Wis 14; Cha 10

The reasonings behind the above spread is as follows:
   Strength: You generally don’t want to spend points to get an 18 in an ability score unless you’re a caster and you’re boosting your spell DCs (it’s harder to find spell DC increases than attack/damage increases). A 16 strength gives you a solid baseline for melee effectiveness. By the end of the game expect your strength to be sitting in the ballpark of 50 (a +20 modifier), or so.
   Dexterity: A dexterity of 12 gives you a +1 modifier to your armor class which is the most you’ll be able to get in full plate armor (which you’ll be wearing). As you gain levels, this cap will increase, but so will your dexterity. You’ll be wanting to reach a dexterity of around 26 (a +8 modifier) by the time you’re at end game.
   Constitution: Regardless of what you’re playing you always want a constitution of at least 14 (12 if you’re a -2 Con race). The bonus hit points from this will keep you alive in the early game and will add up quite nicely at the end of the game. You’ll want as much constitution as you can get at the end of the game; work toward having a constitution of at least 30 (a +10 modifier) by the end of the game.
   Intelligence: We don’t care about intelligence because we don’t need many skills with this build and none of the skills or abilities we’ll be using are based off of intelligence. All we’ll be investing in skill-wise are the Heal and Use Magic Device (see Assign Your Skill Points below). Intelligence isn’t particularly important for this character so don’t expect to get it much higher than 20 (a +5 modifier) without more investment than is probably worth putting into it.
   Wisdom: Our wisdom score determines the maximum level of spells we can cast (Wis – 10 = max spell level) and it also grants us bonus spell points. A 14 baseline will guarantee us a 17 wisdom by the time we have access to +3 ability score items which will allow us to cast all of the spells we’ll need access to. We don’t care about our spell DCs since we’re not an offensive caster, and the bonus spell points granted by having a higher Wisdom can be supplemented by feats instead. By the end of the game expect your wisdom to be around 26 (a +8 modifier) or so.
   Charisma: Generally a dump stat, charisma is of some small use to all characters in DDO that focus on the Use Magic Device skill, which we will. That being said, we don’t need a lot of it since it won’t be something of use to us until we’re nearing end game. A cleric’s ability to Turn Undead is based on Charisma, but tends not to be worth investing in unless you also intend on working towards the divine might enhancement. A charisma score of 24 (a +7 modifier) or thereabouts should be more than attainable by the end of the game.

Assign Your Skill Points
   Time to tackle skills! This character is fairly easy with regards to skill point assignment. You’re going to have eight skill points to assign at this point and each skill can take up to four of them. Since our first level is a cleric level, we’re going to be maxing out two skills: Heal and Use Magic Device (UMD). Here’s why:
   Heal: This skill helps you stay alive. Every point in the heal skill grants you a point of positive spellpower which increases the effectiveness of your healing spells by 1%. It doesn’t sound like much, but it adds up surprisingly quickly!
   Use Magic Device: Truth-be-told, this skill is going to be almost completely useless to you until you’re nearing the level cap. That having been said, it’ll be incredibly useful once you get there. UMD lets you use magical items (such as wands and scrolls) that aren’t normally usable by you. This will let you gain access to some incredibly useful buffs (like displacement) and utility spells (like teleport).

   For all further cleric levels we take we’re going to want to spend our points as above: one point into Heal and half a point into UMD.

   Beginning at 2nd level we’re going to begin multiclassing into the fighter class. This means you have a small choice in how to spend your skill points. Whenever you take a fighter level you’ll want to spend a skill point on Use Magic Device. Since UMD is a cross-class skill this will grant only a .5 modifier, but over the 6 fighter levels we’ll be taking that’s a total +3 modifier to the skill. The other skill point you acquire can be used on either a half a point in Heal (totaling out to +3 to Heal by 20th level) or a whole point in Intimidate (totaling out to +6 to Intimidate by 20th level). Intimidate is useful if you are going to be playing with friends and want to take on a tanking role. If you’re going to be soloing almost exclusively, I recommend putting your skill points in Heal and UMD.

   It’s time to choose our feats! Feats are what make characters unique, in a sense; they offer abilities that can’t be acquired anywhere else and are typically the source of a fairly decent amount of a character’s given power. At first level we begin with three feats: one for being 1st level, one because we’re human, and one class feat. Choose the following:
   1st Level Feat: Shield Mastery – Shield Mastery gives us several handy bonuses. Physical resistance is great because it functions as a percentile reduction to any incoming physical damage we take, and the 10 points we get for using a tower shield (which we’ll be using) is very nice. 3% doublestrike means that every attack we make has a 3% chance to hit the target twice — it’s not a high chance, but extra damage is helpful. The +3 bonus to melee power is a flat percentile damage increase to all attacks we make with melee weapons. Very nice!
   Human Feat: Improved Shield Bash – Improved Shield Bash gives us a 20% chance to automatically make an attack with our shield every time we attack (up to once per second). This will happen surprisingly often and the additional damage will never be unwelcome.
   Class Feat: Follower of the Sovereign Host – We choose the Sovereign Host as our deity not only because their favored weapon (the longsword) is decent, but because once we reach 6th level in cleric we’ll also gain access to an incredibly potent healing ability. We’ll be fighting with longswords primarily until much later in the game.

Review Your Spells
   Have a quick look at all the spells you’ll have access to in your spellbook. You won’t be able to cast all of them, you’ll have to choose a select few for that honor. I’d recommend grabbing bless, cure light wounds, divine favor, or night shield as soon as you have the opportunity to do so. You will begin play with only cure light wounds prepared but you’ll gain access to a rest shrine where you can prepare your other spells a handful of minutes into the tutorial. A brief overview of why you’ll want this selection of spells is as follows:
   Bless: This AoE buff grants you a +1 morale bonus to attack rolls and on saving throws against fear. The bonus to attack rolls is fairly useful early on. Past low levels you’d probably be better off preparing divine favor, though. Lasts for 1 minute per cleric level you possess (minimum 5 minutes).
   Divine Favor: This self-only buff grants you a +1 luck bonus to both attack and damage rolls. This spell is something you’ll want to keep prepared even into end game. Luck bonuses to stats are very uncommon unless you happen to have a bard as a travelling companion. Lasts for 6 seconds per cleric level you possess (minimum 30 seconds).
   Cure Light Wounds: Your first healing spell. You have to have one of these prepared at every spell level you have access to. It’s cheap and heals for enough to keep you running around if you’re careful.
   Night Shield: Nightshield grants a +1 resistance bonus to saving throws (scaling up to +3 at cleric level 9), which is not particularly useful past 1st or 2nd level. The more important thing that it does, though, is that it grants you immunity to magic missiles. This immunity will save your life later in the game. Always have this spell prepared and applied. Lasts for 1 minute per cleric level you possess (minimum 5 minutes).

Summary & Your Appearance
   Finally, you’re provided a quick look through all of your stats up to this point. Make sure everything is where it needs to be and then hit next where you will then be given the ability to customize your character’s appearance, name them, as well as choose an alignment. Alignment used to be much more important than it is now, but I would recommend you align yourself in some way that has Good in it. Once you’re done with all of the above go ahead and click “Create.”

   I’ll see you all next time where we being our journey through Korthos. Until then, run through the tutorial and poke around town a bit. It’s time to begin your journey!

Welcome to DDO!
Read More Dungeons & Dragons Online – Character Creation

Fiancée Game – 08 – A Little of Everything

Estimated Hours of Work Since Last Update: ~15

   As per protocol it’s been a while. As per protocol life has been busy for me. Alas, it seems that whenever I finally get into a good rhythm of working on Fiancée Game that everything gets chaotic all of a sudden. Strange.

   Anyways, I’ve got an update. A fairly substantial one. Lots of stuff has been done in the ~5 weeks since my last post. I also set up a Trello page if you’d like to follow development as it goes on, minus the witty banter that I know you all come here for. I’m not going to go over every little thing that I’ve done, but I’ll cover the major stuff here. If you want a more granular look at everything that’s taken place for this update, use the link to the Trello page above.

Of Tooltips and Optimization
   The most time consuming thing I’ve worked on for this update has to have been either tooltips of game optimization. I completely rewrote the tooltip system from the ground up. It’s a lot faster now. Like, a LOT faster. It also supports multiple kinds of tooltips instead of just tooltips for items.

We now have tooltips for stats!

   While I was working on tooltips I’d noticed some fairly heinous slowdowns. Fiancée Game typically sits at around 400 FPS on my system. For whatever reason, tooltips were slowing this down to about half that (!!!). The reasoning behind this was how I was displaying them. I’d originally had the tooltip display running once per frame for every object that could display a tooltip because I was being a lazy ass (and it wasn’t particularly harmful to the FPS early on). However, as time went on, the number of objects increased and running the same bit of code ~100 times per frame does have an impact on performance.

   The fix was easy enough. I stored all objects that could have a tooltip in a global list. Once I’d done that, I moved the displayTooltip function from those objects to my IO handler that checks the list once per frame. If it finds that an object should have a tooltip displayed it displays it. There is now no FPS loss for tooltips.

I also prettied up item presentation a bit. Item subtypes were added, too.

Skills and Leveling
   Gaining levels has been implemented. I’m still fooling with experience point requirements but I’ve got the larger details set. I’d originally expected a fairly low max level, but I’ve gone back on that. Instead of the level cap being the original ~20 that I’d initially planned, I’ve bumped it to 100. Why? Well, future-proofing, for one. I don’t expect that the ‘base’ Fiancée Game is going to have enough content to it to even remotely hit the level cap. The Fiancée™ has, however, demanded that there be future expansions, so I’m leaving room for those. I expect the base game will be completed in 30th to 40th level range. Or more, assuming she grinds a lot. Which she does.

  Currently gaining a level nets you some extra health and energy based on your class. You also get ability score points and skill points. The rates that these points are gained vary based on the level band you happen to be in at a given time. Skills and abilities are gained quickly at lower levels, but less frequently as the levels pile on.

   There’s currently no grand fanfare when you gain a level, just a message in the message box. I’ll eventually get some sort of graphical flourish implemented so that the player knows they’ve gained a level.

   I’ve begun implementing skills. I currently have all the basic skills for the rogue skill tree implemented. While getting skills working (and getting the UI put together for them) I discovered that I’d have more room than initially intended — almost twice as much space, actually.

We also have tooltips for skills.
There’s still some formatting work that needs to be done.

   My original design for Fiancée Game was to have four tiers of skills. With the new UI put together I have room for seven. I spoke with The Fiancée™ about this and she was okay with the idea of an expanded skill system. We brainstormed how we were going to handle the extra tiers and settled on a ‘specialization’ system. How it will work is that the first three tiers of skills for a given skill tree are considered ‘basic’ skills and anyone can learn them. Tiers four through seven are considered ‘specialized’ skills and when you hit a specific level (I’m leaning towards around 12, or so), you’ll pick a specialization and be stuck with it for the rest of the game. You can have a specialization in each skill tree that you’ve invested a certain number of points into.

   Each skill tree will have three specializations (the rogue’s, for example, are acrobat, assassin, and thief) that offer different styles of play within a given skill tree. Using the aforementioned rogue specializations: the acrobat is for avoiding damage via evasion, assassins are great for single target damage and damage over time, while thieves are good at stealing things from enemies and getting more treasure in general. In addition to unlocking specific active abilities with each specialization, a specialization will grant passive bonuses as well. The assassin, for example, will grant bonuses to damage with daggers and will add a poison-based damage over time effect to the rogue’s bandoleer/fan of knives and dagger toss abilities.

   I’d originally thought to lock the specialization trees behind skill point expenditures, but with the rate that skill points and ability score points are gained I’ll likely just go with a “you have to find the trainer” method instead. I think it’s better this way anyways since it will encourage exploring the world more than just hoarding skill points instead of spending them on interesting skills.

The Stuff I Work On Instead of Fixing Bugs
   It hate bugfixing. Not because it’s hard, but because it’s time consuming and often tedious. I fix critical bugs, but most smaller niggling bugs remain, or have been given band-aid patches.

   Instead of fixing the bugs in my old spaghetti code, I instead implement totally unnecessary features that really should wait. But they don’t. Because I hate fixing bugs.

   So, what has this amounted to? Three big things as of right now. First was loot piles (and examine text):

My inner loot whore is breathing heavily right about now.

   I programmed loot piles mostly as an exercise of boredom. I’d just finished debugging some god-awful bit of combat-related horribleness and wanted to add something to the game as opposed to fixing things that I’d broken. Loot piles were the result. They’re hand placed but I have the ability to fill them with random goodies from a list as well as have a chance to not even spawn. Yes I fully intend to plug one of these things in somewhere that has a 5% chance to spawn and then another 5% chance to spawn some stupidly powerful item. Because I can. And because The Fiancée™ needs to know that this game hates her.

   With the loot piles I also implemented examine text. It’s fairly simple: if the player right-clicks on an object in the world it pops up a bit of descriptive text in the message box. You can examine objects, but not things like walls or doors (I would hope that we all know what those are). I eventually want to have it display the description somewhere more prominent on the screen, but there’s no rush for that. I’ll probably use this descriptive text system at some point in the future to give hints to the solution of puzzles or the location of secret areas.

   Up next came in-combat damage splats which I shamelessly burgled from the excellent Eye of the Beholder games — buy them on GoG (or, failing that, watch either my or Captain Planets’ LPs of them (#shilling)):

Believe me when I say that my splats were… lacking.

   While I’m generally opposed to adding ‘pretty’ things unless they’re necessary at this point in development, I’ve felt that combat needed some feedback-related love for a while now. I added these because, dammit, who doesn’t like seeing damage numbers flying around?! I fully intend to have combat-related sound effects implemented for the next update.

   And, finally, monster spawners:

It spawns things that want to kill me.
Joke’s on it; player death isn’t implemented yet!

   These were implemented because, frankly, I got tired of having to restart the game to continue killing stuff. I guess it’s a good sign that I like running around murdering things. Means the core gameplay isn’t completely terrible. It’ll be better once I’ve gotten more combat-prettiness implemented and have got the skill trees filled out.

   Oh, and I also implemented a basic music player. No screenshot for this one (still haven’t mastered filming sound waves quite yet), but it’s there. Music now changes depending on whether you’re in combat, exploring, creating your character, and so on. I’ve got the music player implemented in such a way that I can have exploration music changed based on tile that the player is standing on. This will be used for per-zone music. Handy stuff. I mostly play with the mute on, though, since listening to the first ten seconds of the same track over and over again has somewhat begun to grate on my nerves.

Bugs that I Did Fix
   Only a few bug fixes for this update. Truthfully most of the bugs that are currently running around are so minor that I just ignore them the majority of the time. They’re things that I’ll need to take care of eventually, but I think it’s more worthwhile to be implementing new features than fixing them. Still, I did take care of a few:
   – Enemies weren’t dying when reduced to exactly 0 health.
   — Pretty simple mistake. I was checking an enemy’s health improperly (health >= 0 is alive), easy fix.

   – Fixed a reference bug for enemy Attack values.
   — This was another easy fix. I’d borked up the reference code somehow and each enemy was referring to the next enemy in line’s attack. I didn’t even notice this until I was working on a boss monster whose attacks really shouldn’t have been missing and yet inexplicably were. Sneaky little bug.

   – Fixed a camera display issue that cropped up when the player was on the edges of the playable area.
  — This bug was caused by how I have the player peer forward and down when standing on a ledge. The script itself works by referencing the cell ahead of where the player is standing. If the player was at the edge of a map there’s no cell to reference (null reference error) and it would lock up the camera. I simply added a check to make sure to only call the ledge peer when the player was in an area it would actually work.

In Closing
   While I haven’t had nearly as much time to work on Fiancée Game as I’d like to have over the past month, I’m more than happy with the amount of work I’ve gotten done in the time that I did have. Hopefully things will keep moving along this quickly! Thanks for reading!

Read More Fiancée Game – 08 – A Little of Everything

Fiancée Game – 07 – Enter the Companion

Estimated Hours of Work Since Last Update: ~11 plus a 4.5 hour dev stream

   Hey, a weekly update that’s actually on time! Not only that, but I’ve hammered out a decent amount of work this week, too, due to catching a really nasty head cold and otherwise not being up to doing much around the house.

   Last Saturday (the 2nd) I even streamed some development of Fiancée Game and had a really good time. Definitely going to do that again!

   Anyways, enough about all of that, time to dive into all the new things I’ve gotten plugged into the game this week!

The Companion
   The player’s companion has been implemented to the point where it’s combat effective. It derives all of its stats off of the player’s, so as the PC gains more power so does the companion.

   I still have to implement some display information for the companion and I feel that I need to tweak his final stat values a little bit, but overall he feels like he’s about where I want him to be.

   I dislike UI work. I find it incredibly tedious, even though Unity makes it easier than doing it by hand. Still, I actually got a decent amount of it done this week with regards to adding a character sheet to the game.

So I hear you have a thing for numbers…?

   I would say that I spent between four six hours getting the character sheet implemented to its current state. Most time was actually spent getting the information I wanted in the space that I had. As you can see above, there’s still room for just a little bit more information in the ‘Secondary Stats’ section but I don’t have anything to put there yet. I also still have to implement variable display for resistances, but I’m not in a rush to do that since they aren’t taken into account by anything yet. Graphically it’s a work in progress and I haven’t even started on the Companion character sheet, but it should mostly be copy/paste work. I also need to implement the character sheet (and skill sheet) closing the inventory and minimap when the player opens them on a screen with a resolution that has a width less than 1080 because otherwise they obscure the player’s inventory and gear.

   I also spent a few hours completely rewriting how the game handles tooltips. The previous method was sloppy and slow, now all tooltips pull their functions from the global functions script instead of having to do everything in their own script. I also changed how they display a bit; now if they’re an item or a skill they show the icon of whatever you’re mousing over in addition to providing the relevant info.

An item tooltip! Still a bit of a work in progress, but I like ’em better now.

   The combat saw a bit of work this week due to the addition of the Companion. I had to add functionality to all current ‘kill the thing’ scripts so that enemies will properly damage the Companion and so on.

   During the Dev Stream I implemented a victory screen that pops up after combat and gives the player a chance to grab their post-murder rewards. Assuming they survived. Item drops are added to a small ‘loot’ list and can be taken if the player desires. I’m planning on re-writing how the loot slots function in the coming week since they don’t currently support the rewritten tooltip system.

We survived a fight and even managed to snag an item out of it!

   In addition to the spoils of battle, the player can now gain levels. Currently a level grants you some bonus health and energy based on your class, three points to allocate to ability scores, and a skill point that can’t be used for anything quite yet. I’m hoping to have a rudimentary version of the skill system implemented by next week but it’s going to require some work on other systems to tie in functionality for things like passive skills.

Bug Fixes
   As per protocol there were a handful of bugs that I set out to take care of this week. I think that from now on I’m just going to copy/paste my notes on bug fixes instead of going into long paragraphs over them. So, for this week, I fixed the following:
   – Enemies at low health (2/22 HP on a kobold chief) have a full health bar display. Probably an error in handling the display as opposed to math error.
      – Yup. Display error. Didn’t take into account enemies with 1% – 9% health, only 10%+.

   – Null item returns when rolling for loot for a creature that has a loot table but doesn’t throw out any loot. Probably not really an error, just a poorly placed Debug.Log command.
      – I didn’t take into account the player just not rolling well enough to get loot. Whoops.

   – Torch timer counting down when not in ‘exploration’ mode.
      – 30 second fix. Made sure that the timer only counts down in exploration mode.

   – Doors (and secret doors) facing N/S don’t work because reasons.
      – Code was correct, but the script was referring to the door’s button’s worldspace position instead of the door’s. This lead to… problems.

   – Fix borked particle effect on N/S doors.
      – I was incorrectly getting the parent object’s rotation. Looking at the base rotation instead of getting it as a Euler angle.

   – Player Health/Energy bars do not move on the Y axis when re-positioning them in the UI. Has to do with their vertical resizing.
      – Linked their position on the Y axis to their parent object’s Y position. Easy fix.

   – Finally fixed all the null reference exceptions to things that exist. Was due to scripts looking for stats at the time of creation. I pushed the referencing code from Update to LateUpdate so everything has a chance to set itself up for proper referencing.

   – Gold drops at the end of combat are borked. Waaaaaay too high.
      – Was rolling dice based on min/max gold for an enemy instead of generating a number between min/max. Rookie mistake!

In Closing
   This was a really solid week for me with regards to getting things implemented in Fiancée Game. I’m hoping the coming weeks are as fruitful.

   As you might have noticed from the screenshots above, the worldspace looks a bit different. I’ve scrubbed out all of the realistic looking graphics and I’m aiming for a more 8-bit/16-bit feel to how the world looks. I just think it works better this way, plus it gives me an excuse to avoid having to 3d model decor for the world, I can just use 2d sprites instead. Fun!

   In the coming weeks I want to finish up the UI work that I need to do, which will amount to finishing off the Companion’s character sheet as well as the skill sheet. I also want to get tooltips implemented for non-skills/items so that a player could, for example, mouse over their might score and it would break down where its total is coming from.

   The biggest upcoming hurdle is that I also want to get skills for both players and enemies implemented into gameplay. Once that’s done I’m going to have to do some work on getting a proper AI routine put together for the enemies in combat. My experience working with AI is dated (very dated) so it should be a learning experience, to say the least. I’d also like to do more development streams; I had a really good time with the last one, though I’ll probably keep them a bit shorter than four-and-a-half hours.

   Until next time!

Read More Fiancée Game – 07 – Enter the Companion