Sunday, March 26, 2017

Character Creation Design

Something I would like to do for my Introduction to Programming class is write a prototype for a character creation dialogue. I don't think my instructor will be requiring a final project, but this will be a good way for me to practice applications to game design and I can use what I learn from it to apply to the codebase I'm working with now.

The code I'm using has support for guest accounts and normal user accounts, which we'll call subscribed users. The flow of connection would be as follows:

Splash Page
|
Account login or creation
|
Character login or creation

Starting from the creation option of Character login or creation, the dialogue will proceed as follows:

Choose your character's race:
Elf, Draconian, Halfling, Human, Ogre, Dwarf, Gnome, Minotaur
If there is a subrace, select subrace:
Elf (selection of 5 subraces)
Draconian (selection of 5 subraces)
Dwarf (selection of 4 subraces)
|
|
Choose your character's class:
Warrior
Rogue
Naturalist
Mage
Tradesman
(Each of these base classes will have customizable skillsets that determines their specialization; with these specializations, there would be up to 20 different classes to choose from. I feel like this will reduce complexity during character creation)
|
|
Choose your character's gender:
Male
Female
|
|
Choose an alignment for your character:
(No selection defaults to True Neutral)
Lawful Good | Lawful Neutral  | Lawful Evil
Neutral Good  |   True Neutral    |  Neutral Evil
Chaotic Good  | Chaotic Neutral |  Chaotic Evil
|
|
Choose a starting region:
(This dialogue will allow for players to experience different parts of the game, no matter what race they begin with. I plan on having NPCs who react to some races differently than usual, such as if an elf decided to start in the Dwarven region.)
|
|
Select a name for your character:
(This dialogue may move up to follow the character gender rather than coming at the very end. I wonder if players rather make all the choices they can before deciding on a name, or if they would rather name a character before making decisions such as alignment and starting area.)
|
|
Write a brief, 2-3 sentence description of your character (optional):
(This step could be skipped, but to give a player the option to describe their character in a text-based game before they even enter the game would be beneficial, I think. Some can't come up with descriptions on the fly, which is why it would be optional. I would try to work some code in that would check the description area and post a reminder at, say, level 10 and beyond, alerting a player to an empty description field.)
|
|
Entry to the game

Each step of the way, there would be an index of dictionaries for each term, and hints to use these dictionaries (i.e.: Type "help race" for more information.). These dictionaries will have entries for each race, each class, each alignment, and each starting area. There will probably be an entry for name suggestions and description advice, too.

This is the basic structure I'll be trying to achieve with the character creation program, and what I'll be aiming to write before the end of the semester. Hopefully, I'll be able to integrate it into the codebase that I'm working with, although it's written in Python 2.6 to support some dependencies. I'll have to submit this for class in Python 3.5.

Tuesday, March 21, 2017

Talking Projects

I consistently brainstorm about the projects I want to see completed. The one that I think about the most is a MUD that I want to play around with.

I've thought about all sorts of features I want to implement, but one of them that has surfaced over the past couple of weeks is the ability to roll a character as customized as you want it to be, and at any point, randomize the rest.

Say you have 5 steps in character creation:

Step 1: Choose your name
Step 2: Choose your race
Step 3: Choose your starting class
Step 4: Choose your stats
Step 5: Choose your alignment

Kind of a simple creation, but say you know you want a human thief named Doug and you don't care about the rest. I think it would be great to have a randomizer (aside: one that won't fuck you over as you progress through the game, which would take quite a few verification checks on each class so someone can't roll a mage with 2 int and 18 str).

Part of the reason I want this so bad is because I have been captivated by the idea of customizable coded and non-coded traits. By this I mean:

Coded: Abnormally tall (+height), abnormally short(-height), clumsy(-dex), diplomatic(+cha), strongman(+str, -dex), agile(+dex, -str), etc.

Non-coded: Drinking problem, hates water, afraid of sleeping outside, talks too loud, etc.

So there could be aspects of these traits that benefit a character, others that detriment in one way or another, and some that just make the character overall more interesting. While that would invite specific traits to be selected all the time by those who are only concerned with big numbers, the prospect of having a "random character generator" for anyone bored and looking for inspiration could be a fun aspect, especially for a MUD, wherein much of the draw is the RP element.

One of the more evil ideas I came up with while brainstorming some of these traits was a "lack of sense of direction" trait, which would remove the (north, east, south, west, up, down) exit lists at the bottom of rooms with (exit, exit, exit, exit, exit, exit). It wouldn't randomize the exits, partially because I think that would be a pain to implement and I wouldn't want it to be IMPOSSIBLE to play a character with this trait, just slightly more interesting.
I am absolutely certain that if I successfully implemented something like this, it would be never be picked. But it amuses the shit out of me and I might do it simply because of that.

Another thing to mention would be the inverse relationship between "negative" traits and "positive" traits. Pick a trait that will negatively impact your gameplay, such as the example above, and more positive traits become available for initial selection.