10/29/2012

on elves

i've never been terribly fond of how elves are depicted in fantasy stories.  idealistic, nearly perfect, incredibly intelligent, talented, and long lived...  and yet, somehow, always in decline.  all of the persecution complex without any reason to actually be persecuted.  but besides that, there's a few things that i just never quite got.

first, there's the forests.  with the exception of maybe old nordic legends, the elves always live in forests.  this isn't really so bad, except the one major feature that almost all elves share is their fantastic eyesight.  these two just don't seem to fit together so well with me; in the sort of thick, overgrown forest that elves so often inhabit, you don't get to take advantage of that kind of eyesight.  being able to see ten miles means nothing if the trees keep you from seeing more than a few hundred feet.  why are these two features almost always found together, when the one cancels out the advantage of the other?  why wouldn't they live somewhere their incredible sight actually helps them?

the second thing that bugs me is the 'peaceful guardians of nature' thing.  granted there are a few precious (and notably better) examples of this, but for the most part, elves are depicted as being reluctant to go to war or fight, excessively defensive of the sanctity of their forests, et cetera.  i've never liked this sort of view of nature, as some sort of ideal state.  nature isn't strictly a thing of beauty; it's senseless death, terrible tragedy, and heartless self-serving survivalism.  the young and the weak die, the strong take advantage of the weak, and only the luckiest, craftiest, strongest, savagest, and most desperate survive.  i've always seen civilization as an opposite to nature strictly because it tries to change this: a place where the young and weak are protected, the strong protect the weak, and the drive for individual survival is replaced by a drive for communal survival.  nature doesn't have, or need, guardians; nature simply exists.  if the forests wither and die, that is how nature progresses.  if species go extinct, that is how nature progresses.  but, that's an entirely other topic of an entirely different gravity.

the third thing about elves that i don't like is their long lives.  most fantasy and sci fi lores fall into the problem of not properly handling long-lived species.  humans can see four generations for 90 or 100 years; if elves mature at around the same rate, that could be 20-40 generations.  the alternatives are that they take a long time to reach adult size (a 60 year old child), have absolutely absurd gestation periods (2-5 years), bizarre reproductive physiology (only capable of breeding every hundred years), or some other disadvantage that would probably preclude their species from advancing past a few generations.  even worse, without any of these things, they live long enough that any significant reproductive rate would quickly see them spread across a world in great swarms.  now, i could see how this could make for a good source of ancient ruins (spread like wildfire, quickly occupy the entire world, wars break out as overpopulation sets in, war leads to massive rapid technological/magical development, eventually a weapon is developed that virtually wipes the world clean of the race)...  but that creates an extinct civilization, not one that's in decline.

haven't had much spare time the past few days.  had a tire glow flat (had to replace it), worked long shifts this weekend...  and admittedly, played a fair bit of borderlands 2.  the mechromancer really kicks ass. 

10/24/2012

on the value of commant prompts

the next release is probably going to be in the form of a console window (the crappy black and white box), capable mostly of generating a character and displaying it.  this sounds disappointingly familiar.

still, the code is getting largely rewritten.  the crapwindow is mostly going to be used for proving that the code works, from which point it can easily be incorporated into the main program.  the base system for organs is in place now (reporting and setting values).  before i can go further, i'll need to rewrite the character generation.  after that i can put some sort of demo out (and possibly an editor-type program to 'write' the race files), followed quickly by a version that allows saving and loading.

10/21/2012

on misunderestimation

taking a bit longer than i thought it would.  still need to spend some time coming up with the formula for how the game generates real length values from the relative values for the relevant organs (tails, hair, fur, tongue, penis, clit, nipples, and tentacles), while the others (wings, arm, ear, nose, and horn) can just stay a vague 'you have unusually long arms' and so on.  unless there are people with a serious fetish for nose-fucking i don't see anyone complaining about that.

did run into a bit of frustration because i forgot that the organ functions are in a class outside of the entity class, so they don't have innate access to their host entity's height value, which is necessary for calculating the real values of relative stats.  still, that just means i need a function that takes a relative value, height value, and organ type to spit out the proper number.  might be handy for reporting information for npcs, i suppose.

10/18/2012

on dicks

i don't like tracking the actual size of organs.  when you're dealing with a number of races whose size relative to one another can differ so greatly (goblins range from 3'6" to 5'9", while imperials are a minimum of 6' and as tall as 10'6"), it gets very difficult to tell what exactly constitutes an 'average' size.  8" isn't bad for a standard six foot human, but for that short-as-hell goblin it's virtually knee-length, and for the tall-as-hell imperial it's just embarrassing.  fortunately there's an answer for this, one that's (sort of) already in the game.

the game doesn't actually track your weight in terms of pounds, or kilograms.  instead, it tracks your body mass index (or some approximation of it), and then multiplies that against your height (i think the formula is height^2 * BMI / 28,800, with height being measured in 1/10th inches and weight coming out in pounds - no idea how accurate this is; if someone has an actual formula i'd be happy to see it).  i'm thinking of just doing something similar and then applying it to things like hair, genitals, wings, etc, to make it much easier to tell what is large and what isn't.  this is mostly for the player's benefit - without graphics, it's sometimes easy to forget that you're actually four feet tall, and that (otherwise) unimpressive tool is actually quite large for your size.

it will also help prevent people from walking around with dongs that drag on the ground, but that's just a side benefit.

finished a large deal of the organ handling methods tonight.  this is part of the reason i wanted to redo them in the fashion i did; instead of having 3 separate methods for virtually every piece of data stored by each organ (get, set, modify), it's all been condensed to about 40.  now, the syntax is: getOrganType(1, head) or getOrganType(head).  technically it's actually about 160 methods, but half of them are essentially 'halves' of the same function (one handling basic organs and the other handling sexual organs; the two store slightly different information and thus need different data structures, and thereby methods) and of those, half are one line methods that manually call getOrganType(1, head) when you just put in getOrganType(head).  and yes, i could drop this number by half by only using a single data type for all organs and then just ignoring the extra sexy-type information for things like legs and arms, but the only extra code that gets written is a copy/pasted header with the names of the data types being changed.  the rest of the code would need to get written either way.

i have tomorrow off, so should be done with organs by the end of then.  probably going to spend several hours streaming (if anyone actually watches).

10/16/2012

on skinless wolves

you land the first and final blow, killing the wolf after a short scuffle.  they aren't much of a challenge anymore; you're probably one of the greatest swordsmen on the continent.  the beast dispatched, you pull out your trusty knife, preparing to skin the animal.  oops; you put a large gash in it's hide.  no problem, it's still salvageable.  oops.  there goes another bit; still, you can make two small hides.  or three; oops.  make that four.  before long, the hide is completely unusable.  you went from a green adventurer to master swordsmen in less than a year, but still can't skin an animal without mangling the hide.

it's a trope so common that calling attention to it has almost become a trope in and of itself: you get sent off to collect ten wolf pelts, or a dozen goat hooves, or twenty bear asses, and seem to encounter nothing but skinless wolves, legless goats, and assless bears.  to mention nothing of the fact that by your second week, you've decimated the local wolf, goat, and bear populations.  unlike the one i posted yesterday, this has a very simple practical solution (infinite wolves), but making it thematically sensible is the hard part.

i've already sort of gone over this, but i don't like the idea of the brave hero of the land wantonly raping and murdering half of everyone they meet.  or at least, not seeing any consequence for it.  so, i decided that the combat system was an abstract one; rather than actually connecting with every attack, health represents an abstract of the character's stamina, combat ability, luck, and training.  it's why it goes up with your level, when you don't actually grow extra flesh or redundant vital organs.  the fight doesn't end when one person falls dead; it ends when they reach the point of exhaustion, realize they can't win, and surrender.  the same concept can be applied to wild animals - sooner or later that wolf will realize that it's outmatched, turn tail and bolt.  obviously killing wildlife is more acceptable (and arguably necessary for a healthy ecosystem; preventing overpopulation of predator of prey species) than killing people.

so, you'll still get your wolf pelts, and you'll even get them from every wolf you kill - you just won't necessarily kill every wolf that you encounter.  of course there are still a few (minor) issues; if you get jumped by a bandit and they surrender, do you tie them up and let them get devoured by all the wolves you've pissed off?

going to be streaming until about 11 tonight.  more coding, more work on organs.
http://www.livestream.com/uldegoagogo
done a bit early.  programming lists make me want to tear my hair out.  assuming that what i have is working (which i think it should), tomorrow i just need to go through and finish all of the reporting functions (that return things like organ length, type, color, etc).  it's not terribly difficult busy work, but it still needs to get typed.

on races

say you're an orc.  or, you were an orc.  you've gone off the straight and narrow (so to speak), given up a bit of yourself to become a stronger adventurer, exposed yourself to strange magic in a dungeon, and drunk a few under-the-counter potions that you hope will help you impress your lady friends.  between the dark red scales, viciously clawed hands, and serpentine tail you look more like a dragonkin now...  but everyone still greets you as an orc.  what?

this game is going to have lots of races.  orcs, dwarves, humans, wolfmen, and more exotic creatures like the golems and slimes.  race isn't exactly a single uniform slider that can be controlled by a single number.  so how does it get identified?  there's two basic solutions:

first, keep a 'bloodline' count for each racial archetype (human, orc, dragon, etc), and define it by what preset race you're closest to.  so humans are 100% human, orcs are 100% orc, and orckin have at least 25% human and 50% orc (or 25% orc and 50% human).  each time you get exposed to a type of mutative force, you gain or lose a chunk of the appropriate bloodline.  when you reach certain levels of a given bloodline, certain changes either kick in or go away; for instance, 10% dragon might give you horns, 20% might be clawed hands, 30 would be scales and 40 would be a tail.  if you go from 0 to 50, you gain horns, hands, scales, and tail.  if you get mutated another way and go down to only 30% dragon, you lose the tail.

this has a few problems from a gameplay perspective: how do you piss around with the fractions?  if you're 25% human, 25% orc, 25%dragon and 25% dwarf and drink a potion that adds 5% horse, where does that 5% come from?  1.25 from each of your existing?  if you just assign each bloodline a static number (rather than a percentage) you can calculate percentage easily enough...  but then you end up with things like a character that's 0.5% orc, 1.25% dwarf, 2.25% cat, 3% dog, etc, etc.  although, this could easily end badly, with characters becoming increasingly difficult to change as time goes on; while this could be good thematically, if the player only has the ability to gain demon wings after defeating demons at higher levels in the game, even a powerful potion could only move their race a fraction of a percent, since they would have already drank countless potions to get there.

you could go into things like introducing bloodline decay (eg, if you have 5 points in orc blood and 100 points in human blood, every day the orc blood goes down by one until you're free of it's taint), but that would require a lot of tweaking to see how fast things should decay, avoiding making it too high to make it impossible for characters to get the transformation they want without making it too low to make the decay worthless.  if a specific item or effect doesn't occur often enough, frustrated players can't get their dragon wings and quit.  and what about the people who want dragon wings, but not scales?

or, the second solution: just apply transformations on either an absolute  (use item x, transformation y always occurs) or random/semi-random (use item x, transformation w, y, or z all have a chance of happening) basis, and then 'audit' the players race.  essentially, this would require programming a flow chart:

does the player have humanoid legs, or something else?  (humanoid -> go to elfkin, humans, dwarves, imperials, plainsdwellers, etc) (else -> go to slimes, centaur, naga, etc) from humanoid, ask does it have fur?  (yes -> go to roamers, foresters, imperials, trolls, etc) (no -> go to humans, goblins, etc) and keep narrowing things down until you've narrowed them down to a specific race.  if they simply don't fit any of the categories (for instance: pointed ears, bright blue fur, reptillian claws, four tits and a giant throbbing tentacle cock), they either get classified as a 'mongrel' (for mundane differences; looking humanoid, but not quite being orc, elfkin, human, or etc), 'mutant' (for more bizarre mutations, as the one mentioned previously) or 'abomination' (for the guy that modifies their character to have a foot long dick growing out their forehead).

i think i prefer the second method - it would allow the player to custom pick their body modifications, it'd be overall easier to code, and i still wouldn't have a good answer for things like 99% dragon pc's or people that became 10% 10 races.



worked on organs some more tonight.  in addition to all the old stuff, the game now tracks your mouth, tongue, 'lungs', 'stomach', and tentacles, as well as tattoos and piercings.  the mouth thing should allow for features like fangs and tusks, tongue should allow for kinky blowjobs, lungs and stomach will be able to track things like ingested or breathed toxins (i figure, it could lead to some fun events like certain toxin-resistant races spiking their own drink with aphrodisiac, then handing it off to someone else).  tattoos and piercings should be obvious, but as a side note, tattoos will also include natural patterning, like tiger stripes or other fur and scale patterns.  'tentacle' is another sexual organ class, like dicks.  because all organs use the same basic format with variables identifying what body part they represent, they all share methods: lungs will have a 'get color' function, although it only applies to skin, hair, and the like.  still, the actual coding should be smart enough not to try and call for the color of a lung-type organ, so this shouldn't be an issue, and the method itself can always check to make sure the call is relevant to the organ type and return a specific answer as an error message if it's not.

on a side note, the existing system makes it much easier to add (or remove) certain organs from certain entities, so for all of those out there who hate furries, there'll be a file to swap out that turns all of the mean, nasty horse-like imperials into safely human half-giants by removing the lines that tell the game to generate fur, hoofed feet, a tail, and so forth.  it'll take a bit more work before races can actually be added via these files (there will need to be a way to tell the game how to identify that race, as an example), but eventually it should be possible.


10/14/2012

well, shit

started work at 5.30 am today.  going to get home tonight at about 9.30 pm, if i'm lucky.  not terribly happy about that.

i was planning on doing something tonight, but i guess not.

10/13/2012

brainstorming

one part of the changes to how body types are stored is that all color information now uses the same table to reference what color is being depicted; so, instead of '1' meaning blue for eyes and black for hair, it's now always albino (which is what it was for skin.  not all descriptors make sense for all organs, but that's fine.)

as a part of compiling a complete list (or complete enough) of what can look like what, i felt that i should post what i did have, and give people the ability to look it over to see of their favorite skin or eye color missed.  this is a direct copy/paste from whats in the code, so it's gonna look a bit wonky instead of being neatly arranged into two columns.

//universal color chart
// 0 = translucent           1 = albino
// 2 = chalk                 3 = cream
// 4 = pale                  5 = pink
// 6 = peach                 7 = pale yellow
// 8 = tan                   9 = mulatto
//10 = burnt                11 = olive
//12 = ruddy                13 = chocolate
//14 = deep brown           15 = brown
//16 = light brown          17 = pearl
//18 = opal                 19 = bronze
//20 = copper               21 = black
//22 = pitch                23 = charcoal
//24 = blackened blue       25 = deep gray
//26 = gray                 27 = soft gray
//28 = pepper               29 = pine green
//30 = brackish green       31 = green
//32 = pale green           33 = orange
//34 = pale orange          35 = dark orange
//41 = pale yellow          42 = bright yellow
//43 = sand yellow          44 = blue
//45 = pale blue            46 = neon blue
//47 = navy blue            48 = red
//49 = pale red             50 = deep red
//51 = jet black            52 = blonde
//53 = platinum blonde      53 = sandy blonde
//54 = golden blonde        55 = strawberry blonde
//56 = dirty blonde         57 = ash blonde
//58 = deepest brunette     59 = chestnut brown
//60 = golden brown         61 = ash brown
//62 = burnt orange         63 = auburn
//64 = brick red            65 = fair red
//66 = fair orange          67 = pale gray
//68 = pine green           69 = moss green
//70 = onion white          71 = gold
//72 = brass                73 = deep gold
//74 = faint gold           75 = silver
//76 = platinum             77 = white gold
//78 = pink                 79 = purple
//80 = amber                81 = hazel
//82 = violet               83 = sapphire
//84 = emerald              85 = topaz
//86 = diamond              87 = granite
//88 = marble               89 = sandstone

the last three are for use with golem-type character skin.  remember that this list should cover eyes, hair, fur, and skin, as well as tattoos, clothing, and natural pattern markings (like tiger stripes or the like).  got something i missed?  post text, a picture, or a color sample.  probably going to put a post like this up on /tg/.

10/12/2012

(samuel clemens reference)

so, what happened?

in short, a family member became very ill and i had to spend some time taking care of them.  between this and work i had little free time for anything, much less something that takes as much mental energy as writing code.  which is just as well, since (upon returning to the project) the code was a fair mess.  i'm going to be simplifying how the program handles it's base behavior (from about 15 different ways, with different behaviors for things like saving, loading, etc) to three (combat, input, and output).  most of the old event text is still usable, though, so that shouldn't be too bad.

also overhauling how characters are stored.  i don't like having a the 150-odd disparate integers saved as hard and fast data points.  hard coded character limits are bad, m'kay, something that i noticed later on when i felt the need to go back and add things like facial hair, pregnancy, and lactation support.  so, everything is going to be handled for a (relatively) simple system of objects; the 'entity' (a character) now has 'organs' (things like limbs), meaning that the list can be expanded or contracted easily.  this means that, instead of having to code eight extra sets of penis data for the people that want nine dongs, you just need to add a penis-type organ however many times.  there's a method for handling text output as far as what organ shows up where; i don't think i'm going to bother trying to make locations exclusive (so if you want fifteen cocks growing out of your forehead, go ahead).

naturally, though...  this entails a significant rewrite of how characters report, change, and save their physical data.  all the same, for those interested,

http://www.livestream.com/uldegoagogo

(streamed noon till 2; probably more later)
8 pm: streaming again (ended at 9:30)


(and for those wondering, yes, they got better)