Sunday, May 22, 2016

User Interface and Customization

When I first started Bounty, one of the most important things I had to do was design an interface that would stick. While I figured that the interface would have to be improved and changed as time went on, it was important that it could hold everything that I wanted to shove into it. For this reason, the interface in Bounty is slightly more complicated than some similar text-based games, for better and for worse. 

The best aspect is that I can implant menus, status screens, options, or anything else with impunity. Some menus contain just a few buttons, while others contain stacks of buttons and information. Every screen is designed separate from the others, although a few screens actually share so many features that they're indistinguishable. Some screens could be designed in a similar manner, but I've opted to make them look different enough so that it's easy to tell by the organization of the screen what you're looking at - the rules menu shouldn't be easy to confuse with other menus, for example.

This approach isn't without any downsides. Unlike similar games, I don't have one static region to print data to. Bounty's menus can have text in different regions which can be a challenge to work around sometimes. I've dubbed the text boxes "readers", as I've experimented where they should be placed in order to maximize the amount of text that can be displayed without taking too much real estate on the screen. 

This is what it looks like when I'm editing screens.
Every screen has three types of elements that are placed into sectors: buttons, readers, and text boxes. Buttons are simple enough to understand, and come in a few different sizes, ranging from a whole sector, to half a sector, down to the circular buttons in the corner of the screen used to continue to the next page of encounters. Left-clicking a button cycles to the next option, and right-clicking reverts to the previous option. Readers are designed individually for each screen for the sole purpose of outputting the data that the player needs/wants to know, from stats, to lists of perks, to item descriptions. Finally, text boxes are regions where you can click to begin typing in. What, you don't remember any text boxes in the game? That's because the first usage is being implemented in this next update to collect a character name.

This might sound boring, but the reason I'm writing about (or thinking loudly about, more like it) the user interface is because I'm finally completing the final screen of character creation, which is the screen where you can customize the appearance of your character. When deciding how to implement the interface for customizing your characters, there were a few options, and one stuck out as the clear winner due to the way the engine is built. I could have displayed multiple screens asking for individual traits, i.e. "What is your skin color?" where you would click a button before choosing to move to the next decision, but that would have been a waste of time, for both me and anyone who plays the game. If this game was a graphical game, I'd have to display the character, and have tabs to cycle between customization options, but this isn't the case, either. 

In the end, I decided to just display the customization options on one screen. In this manner, all of the options are available at a first glance, so there should be no backpedaling during character creation.

I feel like I wrote this post for the purpose of posting this image.
There are also a few things I wanted to share about the character creation. Each race has a different range of possible skin colors. Humans have the most common set of skin tones, which are included with most elves and dwarves. Other races have variations and limitations on their skin colors. Hair and eye colors aren't limited by race, but they are limited to natural(ish) colors (at least until changes can occur mid-game.) Some races have options exclusive to them, such as the "Elf Ears" option shown above. Height/weight are based on the averages for your race - playing a halfling and choosing average means you are average for a halfling. Finally, the "Other" option encompasses things such as freckles.

I've been inserting tags into all of the current events. I'm not finished yet, but the events definitely feel more tailored for the character.

Friday, May 20, 2016

The Next Week's Development

A post or two ago, I mentioned that the next release was going to focus on polishing locations and adding alternate location events for characters of different races/perks. This addition isn't going to come alone, since a few other features need to be present in order to accomplish this. In this post, I'm going to cover a few of these new additions required to get to that point.

Tags

This is something I've been tinkering with for a long time, and is vital to the next update. It's a simple concept - text will be tailored more around your character. It might involve your Elven ears, hair color, virginity, or even the clothing you are wearing. This means that events and encounters will be much more tailored to your character, helping

Like I said, I've been messing with this for a long time. The database of tags is basically complete at this point. I just need to rewrite bits of everything to accept the tags, which is more time consuming than difficult. I can't continue forward without having this complete, so now is the time to hammer it in.

Currently, the smallest entries are things like hair color and skin color, since those can typically be filled with one word, i.e. "Your auburn hair" or "soft, obsidian skin". In contrast, the clothing entry is the largest, since there are 10 different sets of clothing in the game with varying degrees of removal, i.e. a short skirt can be removed by the character, pulled down, ripped off, or panties just pushed aside.

The Journal

Sort of a staple in these sorts of games, the journal is a page you can access from the stats menu that recounts the actions you've taken throughout the game, while also describing your character. This will give you a good option for tracking everything throughout a game.

I'm still working on the specifics of how things will be delivered. Right now, I'm experimenting with different methods of delivering the information. I'm thinking that it'll be read less like a block of stats, and more like an actual diary/journal that someone might keep. Stats will have a bearing on how the journal is written. A character with a higher mind might write in greater detail, whereas a character with lesser mind might have simpler descriptions or thoughts. More intelligent characters might have journals describing themselves as unsullied, or have more upsetting thoughts about being raped. Less intelligent characters might just shrug it off as a thing that happened.

Fun fact: Early in development, I considered having the mind stat correlate to how easy it was to become upset. An intelligent character would get upset more easily and find it harder to look past everything in front of her, while a less intelligent character would care less about consequences and be easily entertained. I never implemented this, because there isn't yet enough of a bonus to having a high mind score at the moment outside of making extra cash at locations that would be more oriented towards intelligence than sex work or labor.

More Character Customization

In order to populate the journal with all of the required information, character creation is going to be made a little more in-depth. Character creation now includes some basic character descriptors, such as hair color, name, and skin tone.

At the moment, these additional options have little to no effect on the actual game.

Next Update?

I haven't been able to post/update in a while due to personal reasons, but that's all in the past. Because of everything, I also have a free week next week before I have to return to work, so expect a marathon of posts and progress for a bit before rescinding to the typical weekend updates with occasional weekday spillage - I fully intend to make up for lost time. I plan on releasing a major version somewhere during the middle of all of this, including the above additions, along with more that I'll be posting about as they're completed.

For a vague schedule, I'll be spending the first few days completing features, followed by a day of catching up on the bug tracker and polish before releasing the next update. After that, I'll spend another day fixing anything reported before spending the rest of the time working toward the next update.