Jump to content
Dante Unbound: Share Bug Reports and Feedback Here! ×

Zerrien's Kubrow Genetic Concept


Zerrien
 Share

Recommended Posts

Preface: I am not an artist. I tried to make the patterns interesting, but I lack the talent to really make it stand out, I apologize.

 

This is a general suggestion for the 'random' generation of Kubrow... hides.

 

To start, consider a simple pattern that exists across 3 different Kubrow.

 

9TEC1Tl.png

 

Patterns:

 

Let's start with a picture:

i3ehJzt.png

 

Here's how to read it, starting from the Upper Left to the Bottom Right:

 

Upper Left

1: A wild 'domesticated' Kubrow, raw colors, a medley of browns. No longer feral, it's a Tenno Kubrow, compared to the wild/militarized versions.

 

2: Through genetic experimentation (to be explained, later,) the player can work away that mottled pattern to reveal the Kubrow's pattern.

 

3: Further experimentation eliminates any of that mottled pattern.

 

4: Continuing on, a player can bring out a higher pattern that was barely visible in 1, but had disappeared (blended in,) in 2-3. Spots appear along the edges of the pattern.

 

5: Color correction. The Tenno who owns this Kubrow wants a white black pattern, so genetically alters it towards whites/blacks (but, Reds, Blues, etc, are possible.)

 

6: The Tenno decides to remove the deep pattern.

 

7: Pattern gone, leaving only the base coat + spots.

 

8: Base coat + spots are further refined to their desired colors.

 

9: And, all that magic is made possible using this RGB image. R > G > B > Black. Each color on the template, gets it's own RGBA vector. Through breeding/genetic rewriting, this RGBA vector is modified.

Bottom right

 

Finally, some samples that I thought looked good using this specific pattern:

adDugIz.png

 

Edit: Also, the inspiration for all of this can be found here:

http://blog.counter-strike.net/workshop/finishes/patterns_a.html

http://blog.counter-strike.net/workshop/finishes/patterns_b.html

http://blog.counter-strike.net/workshop/finishes/patterns_c.html

 

And a quick demonstration of genetic algorithms, which.. may not be too suitable.

 

Genetics:

Alright, high-level concept: using the concept of 'genetics' people are able to combine the genes of two different Kubrow in an attempt to create their ideal pattern+colors. Note, this doesn't have to apply to just that, but for the purposes of this, we're going to assume the genes only effect the colors of a pattern. (Other conceptual ideas that could be applied: Genetic Degradation, Pattern Seeds, Evolution.)

 

Each Kubrow is 'born' with a specific set of genes. Since we're in a virtual world, we'll simplify ATCG genes into 1s and 0s. In the example above, the Pattern is preset with 4 colors, 3 of which having an alpha value. As a design choice, we're going with a 256 RGBA precision each, which means 8 bits * 4 * 3 + 8 * 3... * 2, for dual pairs of genes.

 

Next design choice, (of which can be simplified/expanded on,) is that color is determined based on a single allele, of which traits are codependent. As you get a blood type of AB, BB, OO, etc, each individual binary bit plays half the role of color.

 

Take a Kubrow's Red Allele as:

 

1 0 1 1 0 1 1 0

1 1 0 0 0 0 1 0

 

If, in descending order, we assign the values (128, 64, 32, 16, 8, 4, 2, and 1,) each individual bit-string haploid provides 1/2 of these values with the following value:

 

128 ((1+1)*128/2) + 32 ((0+1)*32/2) + 16 + 8 + 0 + 2 + 2 + 0 = 188, out of a possible 255.

 

The 8-bit long strings are the objects used in genetic engineering.

 

Using two parents (M/F? Asexual, but requiring two strands of DNA to create offspring?) one strand of each parent is used, at random, to create an offspring. Crossover and mutations occur as well.

 

Crossover: Given two binary strings (one parent, second parent), there is either one, or more cross over points where the individual binary strings swap traits.

 

Parent A: 1 0 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1

Parent B: x y x y y x y x y y x x y x y x y y x y x y x x x (Example, x/y = 1/0)

 

At a point in the chain, binary strings cross over to create two new strands:

 

Offspring Gene A: 1 0 0 0 1 0 1 1 0 x x y x y x y y x y x y x x x

Offspring Gene B: x y x y y x y x y y 0 1 0 0 1 0 1 1 0 1 0 0 1

 

In the case of RGB values being co-dominant, for the specific offspring, the colors remain the same crossed or not. However! This helps with genetic diversity, as when a strand is chosen, it is not identical to it's parent's strand, but a slight mixture between the two. ALSO: If there are dominant/recessive alleles, this is the point where traits are removed from one strand of a parent, and mixed with the other's.

 

Mutations: This is hitting the genetic jackpot. Some traits may exist across all living Kubrow, so mutation is the only way to fix this problem. If a trait is undesirable, it can be bred out using Kubrow that do not have such a trait. A Kubrow, in the wild, that has no 2nd pattern (opacity value (alpha) is 0.) This can be used to breed out a second pattern of an otherwise undesirable Kurbrow. Now, imagine, all Kubrow ever in existence have a pure red color. No amount of crossing or parent genes will ever be able to get it out.

 

To remedy this, mutation is what keeps the gene pool fresh. Occasionally, (a % of Kubrow) there will be a mutation in one of the binary bits of a Kubrow's string. With a bit of luck, a Tenno would be able to keep this introductory gene thriving through breeding.

 

There are other mechanisms for mutations which could be implemented, but this keeps it simple.

 

That about wraps up the ... introductory stages of this silly suggestion of mine. Even if genetics aren't implemented, I hope some mechanism for patterns is included, to allow players to create interesting color combinations for their new upcoming pets.

Edited by Zerrien
Link to comment
Share on other sites

  • 3 months later...

Three months later! I went into a bit too much detail about the actual mechanics, but, it's good to see that there's going to be some uncontrollable customization with the Kubrows! I'd like to expand on this in the future, and I'm sure I wasn't the first one to suggest it, but (booyah.)

Link to comment
Share on other sites

Anyways, I'd like to continue my previous trains of thought on how DE can make Kubrae enjoyable for all.

 

Gameplay:

These are my opinions on undeveloped features. I could be completely incorrect on how things will actually work, but these are my feelings towards the subjects:

 

Maintenance: While I have some support towards Tamagotchi mechanics, it shouldn't be overbearing as to drive players away from the Kubrow. Logging in 'every day' is a burden for some (many?) players, and it shouldn't be a requisite for anyone to keep their Kubrow. This is a negative feedback loop that will make players uneasy about even partaking in this feature. Lots of excuses for individuals to steer clear away from the Kubrow.

 

Although, saying above, I don't have a problem with a daily interaction 'boosting' the Kubrow. Daily may be too much, but 'appropriate' interaction across a week will keep him at tip-top shape, with around a week of decay, should he be neglected. No death, no running away, just, less speed, less damage than the potential 'maximum,' which can easily be boosted up over a few quick days of care.

 

And, no, I don't support vacation packs that are constructed/bought. That's putting too much emphasis on the pet-like aspects of Kubrow. Warframe is a game about being a Ninja, in space. Not a space-dog wrangler, in space. Kubrow should be a deep pet-slot animal that comes in a variety of shapes and sizes, and patterns, etc, nothing more.

 

Stamina: Continuing on the last point, Kubrow shouldn't be anything more than a Sentinel. Energy systems again dip into the 'too much focus' territory. Consistency is the name of the game, always make system consistent. Sentinels don't suffer from wear, don't make Kubrow do the same. (There is NO reason to implement a stamina system, unless you were planning on monetizing that aspect of Kubrow. ... Never monetize energy systems.) (And, again, I don't feel 'people will use Kubrow over Sentinel, every, time!' a suitable excuse. 'Coolness' is a real factor for many players, and if many people think Kubrow are cool, let them use them! However, if they have substantial gameplay benefits that players feel forced to bring them along, then there is a gameplay schism. See: Carrier.)

 

And, if it absolutely must be implemented, don't make it heavy handed. We don't need an Energy-gauge. Implement a system that makes the Kubrow outwardly display it's exhaustion, before forcibly removing itself from being equipped. While it's a neat thematic difference of monitoring a Kubrow vs freedom of a Sentinel, it's... just not fun to put up with 'negatives' that may come around from a Kubrow being exhausted. Consistency, again. Players go in, expecting a Kubrow to perform at a certain level. If it's doing better, great! If it's doing worse, how annoying...

 

Puppies: This is a contradiction to my first suggestion. This is where Tamagotchi mechanics can be implemented. Force a player to log in, daily, for 3 days (yespls)? A week? A month (uhg)? This will be the time investment for players raising their Kubrow. Daily interaction is important so the Kubrow know their Tenno overlord, and don't become feral. Much more interesting than watching a timer tick down in the foundry. Maybe a day incubation in the foundry, followed by ~3-5 days of daily interaction before it's ... fully grown? Adolescent?

 

Also would be a great way to demonstrate traits. Instead of a heavy handed 'This Kubrow is a Hunter' after adulthood, it could be replaced with trait-unique events halfway through the growth stages. Upon logging on, the Kubrow drops something for the player, (a digger!) Or, he's hidden away in a part of the ship, (stealthy!) Or, he dispenses a space-rat at the player's feet, (a hunter!) These events should be quick, and to the point. Make them exciting the first time, unique, but don't make them so overbearing that breeders and some players get sick and tired of having to 'hunt around for that one unique spot to find their stealthy Kubrow.'

 

The penalties? Negative loops are... bad, but, this is the alternative for the foundry. No one wants to log on to a dead Kubrow puppy in it's bed. But, if a player hatched a Kubrow, they need to accept the responsibility of interacting with it for the required time. Missing two days in a row would result in an escape. Missing two total days over a 5day/weeklong raising session may result in the Kubrow escaping. 3 days, total missed? Most likely gone, as well.

 

How harsh is the penalty? ... I'm a kind person, after all, some of these Kubrow can be worth some Plat/$$$, so I'd dump the player with a 'DNA' sample that needs to be reconstituted into an egg, over time. 7 days sound suitable, doesn't it? The player DID neglect a puppy. (Of course, it's rushable with Plat. $_$)

 

Aesthetics:

 

Depth: Very, very important! I'd argue this is THE most important aspect, it covers EVERYTHING else that makes a Kubrow interesting/exciting. This is my favorite part, as a designer, as this is where we get to create the elements that go together in a Kubrow! Of course, this is the worst part for programmers, network engineers, artists...

 

Some things to consider: Complexity, Treats, and the Mechanics.

 

Complexity: The word that strikes fear in the technical fields. How exactly do you implement 18 different ear-styles!? (Very carefully?) The system needs to be complex, and predictable. It needs to be deep, and accessible. It should be scalable and well-defined. Buzzwords ahoy, freezing implementers directly to the core!

 

Start with a macro look at the Kubrow. What can be changed? Ear shape, size. Nose shape, size. Height, body type, pattern, colors, eyes, teeth, stance! Personality! Tail shape, size! These are 'elements' of the Kubrow that can be defined by genetic traits, just like a pea is green and round, or yellow and withered. (Or yellow and round, or green and withered?)

 

Then, examine the pieces on their own. Of course, it's hard creating a unique genetic blueprint for a spacedog, but luckily we have some references to help us. The lore!

 

Look to the races (as you've done,) and see how they'd interact with these Kubrow.

 

Grineer like them bulky, muscled, with short hair. Tough and rough! Earthy tones, camouflage patterns. Mottled, dotted, solid greens and browns.

 

Corpus, maybe, like them thin, tall, hairless (eww,) with exotic, eye-catching techno colors. (Bright blue stripes!) Maybe cybernetic enhancements? An artificial leg? Synthetic eyes?

 

Lotus, well, you can just ask her what she likes in a Kubrow. Of course, they can easily be propaganda machines. Lotus symbols, shaggy coats.

 

Red Veil?

 

Feral? Grimey colors, dirty, muddy... Patchy fur? (Bare head, bare arms? Stubby tail?) Red skin; black, beady eyes?

 

Or, and Orokin Kubrow? What was 'perfect' to them? What was the pinnacle of the Kubrow, at a time? Tall, stoic, long fur, long nose, long ears?

 

Using these factions, it gives us a good range of properties for Kubrow to exhibit. Of course, this is just a guideline and next we dip into another great part:

 

Treats: Now, we can directly implement some of the easier ones into the game. Grineer get fight monsters, Lotus has her pup, and the Red Veil has the occasional packmaster, so, all those traits are easily available should the player acquire an egg of those genetic makeups, but how does a player unlock an Orokin egg, of a genetic trend that no longer exists?

 

Mutation! Not full-blown evolutionary mutation, unfortunately. But game-ified pseudo-evolution. A player can directly compare Grineer Kubrow ears to Lotus Kubrow ears, so they know what is expected if they jam the two together. But, the off chance, the rare potential that an allele flips, reversing back to it's Orokin purity (or... forward towards an Infested corruption...?) and the Kubrow exhibits a trait never seen before, yet. Peaked ears? Beveled ears? Traits that may be desirable by their rarity, or looks, not obtainable through raw combination between parents. Seed the genetic pool with hidden possibilities, hint at them, or not, but randomness is your friend.

 

An aside on randomness:

"But, Zerrien! We're sick and tired of RNG, we want it to be predictable! I don't want to be one genetic step away from MY perfect Kubrow only to have it mutate in the last step! And, given the rest of unpredictability in this game, why can't it be WYSIWYG?! Aren't you against dilution, and rigged RNG?" I hear you cry, to which I reply:

 

"I don't care!" But, why!? In a system like this, randomness works great! It's what the entire system is build on! I'm a fervent opponent to exclusivity and undecipherable RNG, but using a random system for cosmetic items, it generates artificial value for breeders to exploit, and consumers to desire. As long as GAMEPLAY mechanics are transparent, the rest can be hidden behind an fuzzy mask of magic. Breeding two Hunter parents should give a GOOD chance of their offspring behind a hunter (excluding any recessive personality traits that each parent may share,) but, a pattern? That's purely cosmetic, and it's completely fine, in my mind, that a player may not get their ideal appearance combination without actually working for it (or buying it.)

 

Mechanics: Still reading? (I doubt it.) Now, we get into the meat of the potatoes. The diamond of the dozen. The... eh, never mind. This section can also be called "Bridging the gap between design and function."

 

To start, we need to really settle on the trait system for a specific gene.

 

Binary:

Dominant and Recessive. Elementary genetics. Construct a punnet square, roll the dice, and apply the trait.

 

Using the standard representation of capital being dominant, and lowercase being recessive, an example:

 

Ear Size, 'E' is Big Ear, 'e' is Short Ear.

A Kubrow with alleles EE or Ee would have Big Ears.

A Kubrow with alleles ee would have Short Ears.

 

Non-discrete:

Also known as 'quantitative,' is best used for a trait with a range of possibilities. Height is a good example.

 

A simple way to think of it is as a 'set' of binary traits. One trait may have a large impact on height, another may have a lesser impact on height. One may have a negative impact. And... 13 others have varying impacts on the height.

 

Sum up all the possibilities and you end up with a variable height. Since there are so many genes that go into it, it's really hard to actually decipher this one, as recessive and dominant traits for all of it are hidden behind the summation.

 

Those are the building blocks of our genetic system, and then we continue on with how they are applied.

 

Specifically, let's consider some situations:

 

Patterns:

Patterns are 2-D textures that are overlaid over the Kubrow's skin/fur. Rendered and loaded as players load in?

 

Generally, for 'interesting' results, a pattern set of 1, 2, or 3 would be used, each color overlaid on top of each other (as demonstrated in my first post,) but this is optional.

 

Striped:

How many stripes there are.

How thick the stripes are.

(Note the synergy, lots of stripes + thick stripes = no more stripes, but solid color)

 

Mottled: (Using a thresholded Perlin noise function)

The threshold on the noise. (Resulting in bigger/smaller splotches of pattern color)

 

Dotted/Speckled:

The function determining the dots. (A distance formula between the various dots, or... totally random.)

Amount of dots.

 

Sectioned:

The 'depth' of the sections, resulting in colors showing more/less.

 

Shape:

These are more difficult to implement, technically. Morph targets based on genetics is a really neat idea, though. Thick Kubrow and Thin Kubrow with the same mesh, just stretched accordingly!

 

However, an easier way to do it would be to have 1-3 archetypes for each individual piece. A 'thick' Kubrow has a big body, and is assembled with the other parts.

 

Ears:

Simply could be tall/short.

 

With a bit more depth and some morphing: (Technical limitations...)

A variable height, short, medium, tall, dictated by a genetic value.

Forwardness, curvature, position...

 

Eyes:

Pupils formed the same way as patterns.

Glow?

Color, of course.

 

Closing:

Anyways, I'm sure these will be disregarded! A big ol' wall of text on possibilities of implementation of the genetics. I'm sure DE is inches away from releasing Kubrows in U14, so everything I say here isn't likely to be implemented. (However, they say they have their own genetic ideas, so that's good!)

 

Edit: As always, what's a concept without a picture? Mostly just experimenting with dynamic patterns.

 

http://goaggro.com/kubrow.html (My website with a mockup. Slide the sliders)

Edited by Zerrien
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...