Calculator Creation Process
The peafowl genetics calculator was a labor of love for just over a year, built by a small group of five volunteers.
I originally spoke about my desire to make one in March of 2025, but I lacked the coding knowledge or art skill to make it. I was attempting to learn to code so that I could make it work, but it was going poorly. The first iteration was just an excel spreadsheet.
I originally spoke about my desire to make one in March of 2025, but I lacked the coding knowledge or art skill to make it. I was attempting to learn to code so that I could make it work, but it was going poorly. The first iteration was just an excel spreadsheet.
I programmed all the colors, but got stymied when it came to the patterns. I probably could have done it, but I thought it would probably be easier to write code for a website than to deal with all the data I would have to put into one cell in excel.
But, even with my partner's help at that point, we just didn't know enough to make it do what we wanted. I had pretty much given up, and made a blog post to that effect, lamenting that I wish coding was easier to learn. An artist responded asking how I would go about doing it, and I explained I wanted to be able to have drop downs to select genes, and display the offspring genetics once the parents were selected.
At that point, several coders suggested that what I wanted to do wouldn't be that complicated. Of course it seems uncomplicated when you already know a lot (which is the pot calling the kettle black, I've said a lot of times that genetics isn't that complicated, but only because I already knew a lot!). One very kind coder, qwertynerd97, stepped forward and offered to write up the code for it, and the original artist that had inquired offered to work on artwork so the offspring could display visually in pictures as well as genetically in text. Two more artists volunteered shortly thereafter, and we were off!
At that point, several coders suggested that what I wanted to do wouldn't be that complicated. Of course it seems uncomplicated when you already know a lot (which is the pot calling the kettle black, I've said a lot of times that genetics isn't that complicated, but only because I already knew a lot!). One very kind coder, qwertynerd97, stepped forward and offered to write up the code for it, and the original artist that had inquired offered to work on artwork so the offspring could display visually in pictures as well as genetically in text. Two more artists volunteered shortly thereafter, and we were off!
Pre-planning the Artwork and Coding
One of the tricks for this calculator to work was getting the coding to play nice with the artwork, without bogging down the speed at which the code could work. Oz had originally suggested drawing every individual combination of peafowl color/pattern out there separately, but that would have been a lot larger undertaking for the artists, and more of a hassle to code for. After some discussion, it was decided that transparent images layered over one another by the code would work best. Oz determined four layers would work best.
The lineart is the top layer for all of the sprites, because it has to display over all other image colors. Beneath that is the leucistic layer (pied, white, white eye), because leucism masks all other colors and patterns. The pattern level comes next, covering up the color, because pattern can alter how color is displayed. Last, the base color on the wild pattern, which will display when there are no other types of mutations present.
This meant the artists had to create a sprite for each color mutation, but only had to do 4-5 leucistic layers total and only color in the wing on males, reducing the amount of work compared to need to make a new sprite for every combo. The code would be responsible for layering the images, which would be less work that pulling an image from a larger database. It also meant that when it comes time to add new color or pattern mutations, we'd only need to make 1-2 additional layers per morph, rather than having to illustrate them in pied and silver pied and white eye, etc.
The lineart is the top layer for all of the sprites, because it has to display over all other image colors. Beneath that is the leucistic layer (pied, white, white eye), because leucism masks all other colors and patterns. The pattern level comes next, covering up the color, because pattern can alter how color is displayed. Last, the base color on the wild pattern, which will display when there are no other types of mutations present.
This meant the artists had to create a sprite for each color mutation, but only had to do 4-5 leucistic layers total and only color in the wing on males, reducing the amount of work compared to need to make a new sprite for every combo. The code would be responsible for layering the images, which would be less work that pulling an image from a larger database. It also meant that when it comes time to add new color or pattern mutations, we'd only need to make 1-2 additional layers per morph, rather than having to illustrate them in pied and silver pied and white eye, etc.
The Artwork
Once we knew what the artists would need to do, it was time to make the lineart. This would determine what areas everyone would color to make the lower layers. First step was determining a pose that would show the areas we needed to show, the references people use to determine color: crest, head, neck, chest, saddle, wings, rump, tail, and legs. We also had to make sure that the areas leucism shows (like primaries and throat latches) would be visible. Here's an early sketch!
Once we had determined the areas and Oz was clear on what needed to be shown, we landed on this general idea:
Oz tried to keep the wing feather groups separated so that they could be colored differently if needed (like with het pied/white, where the primaries are white but the rest of the wing is normal). The train of the male provided some extra difficulties...
So, the design was simplified, and split into two images instead of one with both, in order to allow for males and female to display as different. You might recognize these!
After that, Oz ended up making a spreadsheet of all the other layers we would need, and the artists signed up as they went. This helped to maintain order, and prevent anyone from illustrating a sprite someone else was already working on. Here's a small portion of the spreadsheet!
Oz worked through the pied layers first, and then the colors. They put the different color blocks for different sections of the bird on their own layers, refining and streamlining as they went. Some of the earlier birds (like the wild type) look different because they were done before the process was streamlined. Fun fact: the wild type male barring was drawn directly onto the base color layer, while the rest were done as a layer that could be recolored on its own!
The other artists joined in to help finish the males, and repeated the process for the hens, which took twice as much work, as the blackshoulder mutation hens had to be colored in totally different, not just a wing. For this, the artists made masks that could be colored a bit easier, and this standardized the process across artists, too!
The biggest challenge for the artists was probably the lack of good, clear, accurate reference images. I scoured the internet to find links to photos they could use, and several breeders posted photos in response to my pleas on facebook, but very few people actually understood what we needed. BIG shoutout to Sid at Texas Peafowl and Jens Poulson of jepo-paafugle.com, for taking big, clear, well-lit photos to put on their website and clearly labeling them, to Bill Vinduska of Spring Creek Peafowl for taking 1 million photos of his birds for me, and to anyone who submitted references to the Peafowl Database, because those helped tremendously. Now if only we could get more people to take photos of their hens regularly!! Hen photos were the hardest to find, across all colors... so difficult we actually couldn't find photos of a few of them. Since the hens don't look like the males, even the same mutation looks different, those couldn't be used to color the hens.
Because of the lack of references, many colors were hard to make look accurate. Many morphs look similar to one another, and the lighting in photos didn't help with iridescence or consistency of color. Many photos were not from good angles to see the parts of the bird the artists needed- sometimes bellies had to be colored off tiny bits sticking out, or legs were barely visible because a wing was open, or we could only find images of the birds displaying their train from the front so we couldn't see the tail. Image quality was often garbage; I'm not naming names but sometimes it felt like breeders were taking photo with a pinhole camera from 5000 yards away, or had saved and re-saved images until the artifacting was so bad the bird was more of a blurd. Many photos aren't of clean mutations- they're blackshoulder, or they have pied or white eye, or they're Spaldings that alter the coloration from a plain blue. And almost all the photos are of the males, anyway, which is useless for coloring the hens. And BS hens are SO different from non-BS hens that the non-BS hens are basically useless for coloring the BS hens. The artists actually got quite exasperated with the lack of hen images, such that it became a bit of an inside joke.
To quote Oz, one of the artists: "There's so much peafowl misogyny that despite Ked BEGGING people for photos of PEAHENS, PLEASE, PLEASE, HEN PHOTOS, WE NEED TO KNOW WHAT THE HENS LOOK LIKE, we STILL had people respond by sending photos of their males, and I've had to reconstruct hens from what might as well be Bigfoot sightings in the background of photos of someone's Incredibly Photogenic Male. There have been something like 4 new morphs in the last 2 years, and I'll let you guess how many photos of hens the breeders showed anyone."
Some of the sprite colorations came down to my own knowledge of having physically seen the mutation in real life. This resulted in a lot of artists sending images to the calculator work server we were in together after coloring the birds off photos, and then me picking colors I remember to have the sprites updated. Back and forth and back and forth and back and forth, until the sprites looked as accurate as the artists could make cartoony, 2D peafowl look to the real shimmer of shifting colors. I cannot express how much work this was for them, nor how impressive the images are as a result.
Once each sprite had gone through this process and passed inspection, the artists flattened their layers in their art programs, and e-mailed me the sprites. Because the layers were going behind the artwork, they looked blobby and weird!! But it's hard to argue the result.
The other artists joined in to help finish the males, and repeated the process for the hens, which took twice as much work, as the blackshoulder mutation hens had to be colored in totally different, not just a wing. For this, the artists made masks that could be colored a bit easier, and this standardized the process across artists, too!
The biggest challenge for the artists was probably the lack of good, clear, accurate reference images. I scoured the internet to find links to photos they could use, and several breeders posted photos in response to my pleas on facebook, but very few people actually understood what we needed. BIG shoutout to Sid at Texas Peafowl and Jens Poulson of jepo-paafugle.com, for taking big, clear, well-lit photos to put on their website and clearly labeling them, to Bill Vinduska of Spring Creek Peafowl for taking 1 million photos of his birds for me, and to anyone who submitted references to the Peafowl Database, because those helped tremendously. Now if only we could get more people to take photos of their hens regularly!! Hen photos were the hardest to find, across all colors... so difficult we actually couldn't find photos of a few of them. Since the hens don't look like the males, even the same mutation looks different, those couldn't be used to color the hens.
Because of the lack of references, many colors were hard to make look accurate. Many morphs look similar to one another, and the lighting in photos didn't help with iridescence or consistency of color. Many photos were not from good angles to see the parts of the bird the artists needed- sometimes bellies had to be colored off tiny bits sticking out, or legs were barely visible because a wing was open, or we could only find images of the birds displaying their train from the front so we couldn't see the tail. Image quality was often garbage; I'm not naming names but sometimes it felt like breeders were taking photo with a pinhole camera from 5000 yards away, or had saved and re-saved images until the artifacting was so bad the bird was more of a blurd. Many photos aren't of clean mutations- they're blackshoulder, or they have pied or white eye, or they're Spaldings that alter the coloration from a plain blue. And almost all the photos are of the males, anyway, which is useless for coloring the hens. And BS hens are SO different from non-BS hens that the non-BS hens are basically useless for coloring the BS hens. The artists actually got quite exasperated with the lack of hen images, such that it became a bit of an inside joke.
To quote Oz, one of the artists: "There's so much peafowl misogyny that despite Ked BEGGING people for photos of PEAHENS, PLEASE, PLEASE, HEN PHOTOS, WE NEED TO KNOW WHAT THE HENS LOOK LIKE, we STILL had people respond by sending photos of their males, and I've had to reconstruct hens from what might as well be Bigfoot sightings in the background of photos of someone's Incredibly Photogenic Male. There have been something like 4 new morphs in the last 2 years, and I'll let you guess how many photos of hens the breeders showed anyone."
Some of the sprite colorations came down to my own knowledge of having physically seen the mutation in real life. This resulted in a lot of artists sending images to the calculator work server we were in together after coloring the birds off photos, and then me picking colors I remember to have the sprites updated. Back and forth and back and forth and back and forth, until the sprites looked as accurate as the artists could make cartoony, 2D peafowl look to the real shimmer of shifting colors. I cannot express how much work this was for them, nor how impressive the images are as a result.
Once each sprite had gone through this process and passed inspection, the artists flattened their layers in their art programs, and e-mailed me the sprites. Because the layers were going behind the artwork, they looked blobby and weird!! But it's hard to argue the result.
Once the sprite was in my hands, it would get marked complete on the the spreadsheet. Each mutation from start to finish takes around 4-12 hours of work, depending on how many times it needed redone, and there were around 110 full-color sprites + more than 30 BS wings that needed illustrated, meaning the artists sunk SO much time and skill into this project, and all of it was generously donated for the sake of being able to share knowledge with a community in need of it. Wow!!
The Coding
The coding was all done on GitHub, by qwertynerd97, Elli Howard. I provided all of the mutations I currently had genetics for and how they all worked, and much of the base code was finished within a week. The base included functionality, but Elli was in for a lot of tweaking to get the genes to behave correctly, and to make the exceptions like Indigo/Hazel display and travel correctly, and halting breeding for Charcoal hens, who do not lay eggs- a function which also came in handy for preventing results from progressive pied and fawn, which are both linked to major health issues at this time.
Our biggest concern when it come to coding involved user interface (UI) and accessibility. The tool couldn't just function, it had to be easy to use, and easy to understand. We were creating it to help a community, so it had to be easily understood by that community. This is a big part of why we included images, so that visual learners could see the mutations and understand the results better. But this accessibility added some complexity to the code.
For example, people were likely going to come to this calculator with little to no knowledge of genetics. That's why there are two sections- one for phenotypes (ie, what does your bird look like) and one for genotypes (what genes does your bird have). The genotype section has the gene names, but it also has colloquial labels. The bronze gene drop down lists "WT/WT, WT/br, br/br" but it's labeled "Buford Bronze" so people can tell what gene that dropdown codes for. Additionally, the genetic section is linked to the phenotype section, so that selecting "br/br" from the genetic dropdown changes the phenotype dropdown to say "Buford Bronze."
We also had a few major quality-of life UI changes along the way, including moving the locations of the sections, adding a reset button so people could return to start without having to manually select wild type again, and having the genotype of the offspring drop down to conserve space. Toward the end, Elli added in notes to silver pied, to make that confusing morph clearer.
One of the hurdles we didn't quite manage to jump is the lack of genetics information and reference photos for some mutations. You'll notice some mutations, like Onyx and Cream Bronze can't breed; this is because the calculator coding MUST contain the mode of inheritance/gene type, and we don't have that info for those morphs yet. Some, like Black, I was able to track down information for while the calculator was in development, in time for them to be included in the launch. You'll also notice some mutations don't have sprites despite existing, like Australian Fawn. In these cases we either were not able to find photos or were unable to acquire photos from the breeders that referenced what we needed to reference, and they had to be coded as unknowns.
Lastly, just before launch, I sprang UI tweaks on Elli, but they pulled it all off with flying colors. We bug tested on a local chat server, and then a larger blog audience that can press buttons like you would not believe, and finally, finally, were able to release it to the general peafowl community for use after a year of work.
Our biggest concern when it come to coding involved user interface (UI) and accessibility. The tool couldn't just function, it had to be easy to use, and easy to understand. We were creating it to help a community, so it had to be easily understood by that community. This is a big part of why we included images, so that visual learners could see the mutations and understand the results better. But this accessibility added some complexity to the code.
For example, people were likely going to come to this calculator with little to no knowledge of genetics. That's why there are two sections- one for phenotypes (ie, what does your bird look like) and one for genotypes (what genes does your bird have). The genotype section has the gene names, but it also has colloquial labels. The bronze gene drop down lists "WT/WT, WT/br, br/br" but it's labeled "Buford Bronze" so people can tell what gene that dropdown codes for. Additionally, the genetic section is linked to the phenotype section, so that selecting "br/br" from the genetic dropdown changes the phenotype dropdown to say "Buford Bronze."
We also had a few major quality-of life UI changes along the way, including moving the locations of the sections, adding a reset button so people could return to start without having to manually select wild type again, and having the genotype of the offspring drop down to conserve space. Toward the end, Elli added in notes to silver pied, to make that confusing morph clearer.
One of the hurdles we didn't quite manage to jump is the lack of genetics information and reference photos for some mutations. You'll notice some mutations, like Onyx and Cream Bronze can't breed; this is because the calculator coding MUST contain the mode of inheritance/gene type, and we don't have that info for those morphs yet. Some, like Black, I was able to track down information for while the calculator was in development, in time for them to be included in the launch. You'll also notice some mutations don't have sprites despite existing, like Australian Fawn. In these cases we either were not able to find photos or were unable to acquire photos from the breeders that referenced what we needed to reference, and they had to be coded as unknowns.
Lastly, just before launch, I sprang UI tweaks on Elli, but they pulled it all off with flying colors. We bug tested on a local chat server, and then a larger blog audience that can press buttons like you would not believe, and finally, finally, were able to release it to the general peafowl community for use after a year of work.