Pages

Wednesday, June 20, 2012

Feats: Status Update

After spending quite a while tweaking how the feat selection works, I can say I finally have a solid v1.0 of it going right now. Take a look:


In addition to the feat trees, the video shows a glimpse of a few additional feature's I've just added, namely:

  • Character backgrounds. I've always really liked the idea behind the character background feats in Neverwinter Nights 2, but always felt they were way too weak; their bonuses too small to make any difference.

    In D&D 3.5, you can take something called character "Templates", which work something like NWN2's backgrounds, but those were on the other side of the power spectrum - they tend to produce over-powered characters.

    I've implemented what I think is a reasonable middle-of-the-road solution. If you don't know what I'm talking about, a background is basically a quick nod to what your character might have been like before the game started (which you get to decide), and this background provides him or her with a fixed bonus. You can only take one, and only at Level 1, during character creation.

    Bonuses you'll get range from +2 to a particular stat, +2~4 to one or more skills or some other unique bonus like being able to move 10ft further each turn if your background is Athlete, or giving your allies +1 attack while lowering your own by the same amount if you're a Natural Leader. I think it adds a nice amount of flavor to character creation, especially when the bonuses you get will be large enough to actually be relevant in the game.
  • Description windows. Almost everything has a description window now, either normally displayed on the screen (as it is when you pick a class) or as a separate window you can bring up by pressing (A) or (X) (as it is when you're picking feats). I've also updated the main menu to use these when displaying feats or skills.

    This gets around a problem I've been having of wanting to have fairly long descriptions of things but not having any screen-space to display it in most menus, due to RPG Maker's tiny, eye-strain-o-vision screen resolution.



  • Racial feats. Now, in addition to changing your appearance, the race you select also modifies your starting stats, skills and feats. Each race gets some kind of stat bonus (usually +2 to two stats and -2 to a third) and starts with several feats (you can see Dwarves and Elves starting with Darkvision and Humans starting with Skilled in the above video).

    Classes now also gain various feats, such as monks starting with various bare-handed fighting feats and fighters starting with several Weapon and Armor proficiencies.

  • Feat Requirements are now displayed while you're picking feats from the tree, if you don't meet them. If you meet some of the requirements for a feat (say it has 5 requirements and you meet 3), it will only display the ones you're missing. This should make it much easier to see what's available, what you want to take and when you can take it.

And that completely wraps up character creation for now. As of today, you can create a full party of 5 characters, customize their appearance (race/gender/hair/eyes/portrait/etc.) and their stats (class/feats/skills/etc.) and jump into the game.

The game itself so far only has a working menu. I haven't gotten into any actual gameplay yet (maps, combat, etc.) because I want to make absolutely sure everything else is setup properly before I start with that. Pre-production and whatnot. Once that's all done, even having a little gameplay will make it feel like a proper, decent quality game.

I'm a fan of the Blizzard idea of polish-everything-as-you-go, rather than do-everything-sloppy-now-we-can-polish-later (I can't remember who it was that said this in an interview, but it was something along the lines of: "There is no later. Polish everything now. Do everything right the first time").

Anyways, next on my schedule:

  • Add a world map to the menu. When I get to actually making the game maps, you'll be able to use it for fast-travel from any outdoors (non-dungeon) area.
  • A simple Party HUD: something that displays everybody's portraits and HP bars as you're walking around the game. Once I get around to implementing combat, it will all happen on the actual game maps themselves instead of going to a separate battle scene, so knowing your party status at all times (without having to open menus) will be useful.
  • Autosaves and Quicksaves
  • Quests, and a quest menu
  • Minimaps
  • Unique items and equipment. I'll probably be using a modified version of Tsukihime's Inventory System for this.
  • Crafting. This will be fairly simple. I liked the crafting in Temple of Elemental Evil, where you don't really need ingredients to craft anything; you only need the appropriate feat, meet a level requirement and pay some gold. It's pretty straightforward and shouldn't be too hard to implement once I have items working correctly.



Saturday, June 16, 2012

Feat Trees

So it turns out that making what is basically a skill tree made of dozens and dozens of skills isn't exactly easy. It's not really hard either but it takes a bit of planning. Like...more than I had done so far. After spending about 10 minutes  in the database manually assigning positions on the tree to various skills, it became pretty obvious that doing things this way wasn't going to work.


So I decided it'd be easier to make a full mock-up of the whole thing first, as close to scale (in terms of things being roughly in the right position relative to each other) as possible. I could worry about what that meant in terms of actual coordinates inside the window later.

A few minutes of googling turned up this site called lucidchart.com. It's apparently an online flow-chart designer, and it actually works pretty well. It was certainly a lot more pleasant to deal with than Microsoft's Visio, which I had used the previous times I had to do something like this. After a couple hours of messing around with it and cross-referencing my game's database and the D&D SRD wiki, I came up with this:


They're ordered roughly based on what level you'd have access to them. Low-level feats at the top, high-level epic feats near the bottom. Beyond that, I divided feats into categories; these are just the ones that I put under "Combat". It's amazing how something this simple gives you a much better idea of how a menu should actually look like. Once I had that, on to actually putting it in the game!

Before that, though, I just found out, completely by accident, that UTF-8 happens to have characters for drawing things. And I just happen to be working on drawing the links between feats inside the feat selection window when this happened. And it turns out that some of the characters are shaped exactly like the icons I wanted to use to display the links in the tree.

So, being the incredibly clever programmer that I am, I came up with this:


Screw figuring out positions for things, I'll just draw all the links (with text) and let the feat window code figure it out. I don't know why, but I find it kind of hilarious that this actually works. After messing around with the icons for a bit so they all line up when you draw them, the feat window now looks like this:


I had to copy/paste a few screenshots to get that (the actual window only displays about a third of that, and you can scroll up or down to see the rest), but you get the idea. I still have to give them proper icons and everything, but it's looking pretty good so far.

Friday, June 15, 2012

Feat Selection!

So I've just recently finished the visual aspects of character creation. You can see a video demo of it here:


With that done, I started (and spent most of the last three days working on) the other part of character creation. Stats, skills, classes...you know, the important stuff. The game part of the game.

Given that I already had the level-up process working for classes, attributes and skills, (yes, I implemented leveling up before character creation and yes, that is completely backwards; I'm weird like that) this was actually fairly quick and easy. Only took about a day's worth of work and I already had everything up and running.

Then came the hard part of putting work into the things I hadn't actually done any of yet. A few weeks ago I had a pretty awesome idea on how to handle the feat selection menu, but I never quite had the time to get to it then, since there were more important things to finish first. Well, I've finished those now, so I took a crack at it.

The main idea is: if you've ever played a D&D based game (like, say, Neverwinter Nights), you know that one of the things you pick every few levels is feats. If you, like me, played the game before ever playing pen-and-paper D&D, you've probably had the experience of being completely fucking lost in the feat screen.

If this all sounds like greek to you, feats are essentially special abilities your character earns ever few levels (every 3 for most characters, some classes get additional ones every few levels). They're all binary things: you either have them or you don't, there's no "levels" of them. Some of them are active, some are passive, some have nothing to do with combat. You could think of them as RPG Maker's Skills, but a little more generic.

See, the problem with them is there's fucking hundreds of these things. When you first create a level 1 Fighter   in Neverwinter Nights 2, you get to pick 2 of these (or 3 if you're a Human). The game gives you an enormous shopping list of every damn feat in the game that you qualify for (which even at level 1 is in the order of several dozen) and it's up to you to pick 3. And that's pretty much all the information you get. Hopefully you don't pick something useless that will screw you over for the rest of the game. Good luck!



That's always struck me as an awful way of implementing that. Even now, when I'm more familiar with D&D rules, I still have to double check rulebooks (or, more often, online D&D wikis) to make sure I'm picking things in the correct order and won't screw up and miss a pre-requirement for a feat I'll want to have like 6 levels from now.

So I started thinking: why doesn't this happen in other games? Well, usually you don't have that many choices, but in some games you do. You never feel lost like that when you play Final Fantasy XII or Diablo II though. This is because of how the implement their UI.


The main thing NWN2 is missing is that it requires you to actually know more than you can possibly be expected to know to make a proper decision. There's no way for you to look at that feat screen and know things like "Is this a pre-requisite for a better feat that I can't pick right now?" or "Can I just see the spellcasting feats? I don't really care about all these melee combat ones".

So I came up with a different way of displaying what feats you can select from. It'll look something like a mix between Diablo II's skill trees and Final Fantasy X's sphere grid.



The main point of it will be to display everything you can have, even if you don't qualify for it just yet (so you can have an idea of what to invest in and what might pay off to have down the road), and to divide them all into categories, so you don't feel as overwhelmed by the amount of them and you can easily find feats of a particular type.

That's what I've spent most of the last couple of days working on. Turns out it's a little bit trickier to implement than I expected, but I'm still making progress. With any luck I'll have a working first version of it done in a few days. This is what the menu looks like right now:








It's kind of hard to tell right now, since I haven't actually added very many of them (or drawn any of the connections between them), but the inside of that menu (the part with all the icons) is basically a giant grid. The orange tabs at the top are the categories and the icons are the feats. Hovering the cursor over one shows that tooltip with a feat's name on it. Related feats (i.e.: Power Attack -> Cleave -> Great Cleave) will have lines connecting them (like a skill tree).

Anyway, it'll make more sense when it's done. I'll probably post a video of it when it's all working.

Sunday, June 10, 2012

Blog:new()

I tend to have all sorts of ideas while working on games, and I have the bad habit of never writing them down. So I figured it's time to start a blog!

I'll be posting pretty much anything and everything about my current project here, from screenshots, to cool or weird programming-related things I figure out by breaking apart the RMVX Ace engine, to random game-design brain-droppings I have while thinking about my project.

I'll post a more detailed progress update of my current project sometime in the next few days.