diff --git a/src/call b/src/call
deleted file mode 100644
index 291e52c..0000000
--- a/src/call
+++ /dev/null
@@ -1,4 +0,0 @@
-general 8003508220
-specific 702 840 4504 - customer sevice, spoken to allie, extension 135
-
-the sec I get 10k refund email, call allie, say you already spoke to her. eligible for program.
diff --git a/src/char/Aloin-basics b/src/char/Aloin-basics
deleted file mode 100644
index 8796c70..0000000
--- a/src/char/Aloin-basics
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
role: husband, father, emperor of evil
-
age: late 30s
-
birthday:
-
mental: brilliant mind, loves puzzles, genuine and enthusiastic
-
physical: average height and build, unusual bent features, no eyebrows
-
style:
-
height: 6'5
-
residence: with his Fifi and newborn son softened his heart. He still pursues evil, but it's a gentler form. He works with one of the more stable criminal organizations in town. His wife Fifi is fully supportive, and her fame as a celebrity has been instrumental in pulling off some of his jobs, especially earlier on in his career when he was less fettered. His wife makes enough money off of brand deals for them both to retire, but evil is a passion job for him.
diff --git a/src/char/Cass-basics b/src/char/Cass-basics
deleted file mode 100644
index f017a2c..0000000
--- a/src/char/Cass-basics
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
role: college student, spirit-eater
-
age: late teens
-
birthday:
-
mental: troubled,
-
physical: average build, medium skin, dark wiry hair, almost black eyes
-
style: pastels, ruffles, skirts
-
height: 5'5
-
residence: college dorm
-
likes: loud music, cooking at home, painting
-
dislikes: nightmares, having trouble making friends, being alone
-
notes: second-generation American with Mexican heritage, unpierced ears
Both of Cass's (pronounced the same as "case") parents are originally from Mexico. She's fluent in Spanish and used to visit Mexico every year with her family before going to college, but her accent is indistinguishably American. She's on scholarship but not particularly driven in any area, so she took a business major upon recommendation by a friend of her mother.
-
-
Her headstrong, sardonic attitude gives her a harsh edge that contrasts with the shower of feminine pastels and vibrant florals that dominate her wardrobe and bedroom. Her nightmares have always been just as vibrant, pushing violent imagery, psychotic villains, and natural disasters onto her nightly since she was a preteen. Many of them seemed real, taking place in her bedroom with realistic break-ins. She could feel needles, hornet stings, and worse the same as she could feel her fingertips pinching herself during the day. There were reoccurring figures whose faces and bodies she had grown so loathsomely familiar with, she mockingly named: Owen, Caleb, Isaac...
-
-
And finally, one night, soon after moving into her first apartment, she met Caleb in the waking world.
-
-
Before long, her apartment was a circus of haunts - incubi and things she had never heard of before. This attracts the attention of a full 500-pound baku (a spirit-eater that is visually indistinct from a regular tapir) and inspires him to take up permanent residence in her bedroom. Her landlord maintains a strict pet weight limit of around 10 pounds, so this stresses her out to no end, at least until he brings her the sweetest dreams she's had since she was in 5th grade. The haunts still rear their ugly heads now and then, but it's usually just her and Funwa, a cute but nosy baku.
She has the millennial RP heterochromatic eyes in the colors from Portal because I wrote Hello, Traveler in the 2000s. Other than that, she's a cute blonde girl with short hair and weird sci-fi makeup and robes.
Basically, she lives in a timeline where the Old Testament took place during the space age. The entire Earth is essentially Israel and the solar system's alien races are the Canaanites, Hittites, Jebusites, etc. Israel-Earth has shattered into shards, and the tribes are spread out in space. Some are living on doomed shards, others have been taken into captivity on other planets, etc, so there are plenty of opportunities for adventures. Chandra was called to begin a ministry to reach all 12 tribes and announce that Planet Canaan as the Promised Land. She's also given a spaceship. Van is her pilot and sword.
-
-
Early on, her party is attacked by bandits. The Canaanite Colt rescues her and joins them. They have the ill-fated love thing going on. He falls in love with her, but she is not interested in breaking the command to intermarry with the enemy nations. Way later, the tribes are given the Promised Land, but Chandra was disallowed from ever setting foot in it due to her the LORD of hosts leaves her and gives her quest to another, and even Colt won't take her back because he had become a spiritual Israelite through faith after seeing the many miracles of the journey.
He's tall with sharp features and muddy brown colors. Anywhere his hair parts, tiny quills are revealed that contain a mild numbing poison. He's always armed with some kind of weapon while off the ship.
He saves Chandra and her crew from bandits and eventually joins them as a bodyguard. He falls for Chandra to her great annoyance because he doesn't even accept her as a prophetess of God. His personality is coarse, and his morality is pretty questionable, but his intentions are never bad. Van and Chandra are still constantly steering him to the narrow path, though. He's initially dismissive, but some of their points stick in his mind.
She's a short girl with dark skin, thick hair, and vibrant brown eyes. Despite her age, she is wise beyond her years and strikingly calm and controlled when the situation demands it, though she has a childish side as well. Her clothing is simple, usually hand-me-down skirts and dresses in pinks.
I wrote Dymn as an edgy 13-year-old. It basically takes place in Morytania because RuneScape dominated too much of my imagination then.
-
-
Ember Lane Crowe (real name on her birth certificate) is the main character, but the story is told from Brandyn's perspective as he observes her from afar. He unravels her persona step by step, but he never tries to directly interact with her until it's too late. (My early work really suffers from disassociated Kafkaesque character relationships lol.)
-
-
Brandyn Harlowe, like Will, doesn't have much substance beyond his interest in the main girl. Crowe is a misanthropic werewolf who frequently hides in caves and rants about living in a society.
-
-
Window Harpen is a journalist who arrived in the town of Dymn to investigate local rumors of werewolves. He's able to build a rapport with Crowe. She confides that she just wants to be normal, so he forwards her to swamp druids renown for their remarkable ability to remove disease. He also discourages Brandyn from hanging around any longer.
-
-
They lead her on an suspicious wild goose hunt, but it becomes obvious at the final moment their instructions were malicious. She pauses on her choice between life or death for a final soliloquy. As Brandyn finds her and lunges to stop her, she takes her own life, catching his face in her final moments of awareness, wondering who he is. He mourned her briefly before racing to confront Window over his complicity only to find he had already left town.
diff --git a/src/char/Eden b/src/char/Eden
deleted file mode 100644
index 314d3b4..0000000
--- a/src/char/Eden
+++ /dev/null
@@ -1,22 +0,0 @@
-Eden | means place of pleasure | human♂
-
-
basics
-
-
role: gatekeeper
-
age: teens
-
birthday: April 22♉︎
-
mental: dubious, passive
-
physical: slim, effeminate, pale skin, long hair half purple and half brown, brown eyes
-
style:
-
height: 5'8
-
residence: renting
-
likes: not working at work, playing board games, playing a variety of music instruments
-
dislikes: transitioning into adulthood, not feeling that strongly about anything
-
notes:
-
-
-
story
-
Eden's the receptionist for the Abyss. He really should be keeping everyone out, but there's a hard limit to how much effort he'll exert. He's incredibly self-absorbed, so he gets on his peers' nerves all the time.
-
-
description
-
He has soft, pretty features with a musical voice, but his attitude is brusque and careless. He keeps his brown hair long and dyes half of it purple.
likes: performing on her own schedule, the fashion industry, makeup artistry
-
dislikes: cooking, people being loud when her baby is sleeping, writer's block
-
notes: She's below average height for a sim; barely ever leaves house without makeup
-
-
-
story
-
She has been steeped in music her whole life, with her brother reliably bringing home records of new bands and emerging genres. It wasn't long before her and some neighborhood friends started their own band. Her unique singing voice like the chirping of songbirds or the ping of a harp captured a lot of attention. Her candid lyrics captured what people felt but couldn't say. She quickly outshone her fellow members, a vocalist stolen from band to band, getting to travel all over the country. After a decade, she began to lose her footing with younger audiences, though she still has a very dedicated older fan base. She's content with this shift because it affords her more time at home to raise her baby.
-
-
-
description
-
She's thin and has delicate, sunken features with a narrow jaw. Her blonde hair is thin and wispy, and she usually wears it tied back or in updos. She's extremely involved in the fashion industry, frequently attending shows and lending her face to campaigns. Naturally, her closet is dominated by luxury brands, all gifts from her designer and model friends. Her style is distinct, consisting of ballet pinks, blues, and creamy whites, with soft piled textures covering highly structured garments. She has with no hesitation in wearing ostentatious furs and shoulder pads. Her makeup is wild, covering her entire eye socket and tops of her cheekbone in baby blue, applies long thin straight falsies, using shocking white lipstick, using contour gray as a blush color. Usually, she'll wear concealer lips and only overdo one feature, but she feels no qualms about going all out.
mental: perpetually miserable, indifferent to world around him
-
physical: emasciated, short, pallid, spiky storm blue hair, pale yellow eyes
-
height: 4'11
-
style: shoddily assembled rags, discordant colors
-
residence: the streets
-
likes: solitude, Trace, his parents
-
dislikes: the older generations, human nature
-
notes:
-
-
-
story
-
Freefall was taken from his happy family as a toddler and raised outside time along with other representatives of each generation. They were each given supernatural abilities and set against each other in a cosmic game where the last man is given kingship over mankind.
-
-
Freefall is naturally awkward and antisocial, so he was never taken seriously as an opponent, target, or ally by the others. After some time, he ducked out entirely and returned to earth, finding it a hundred years advanced when he had only aged 10 years himself. He can't find a foothold in this society, so he roams city streets and observes from the outside.
-
-
That is, until a fateful encounter with a girl who not only clicks with him but seems to bear some family resemblance. At first, he's overwhelmed by this thumbprint of his past. Trace has some common ground beyond blood, too, so they hit it off. As time goes on, he sees too much of himself in her and grows to hate her, haunting her as a depressive shadow.
-
-
Meanwhile, the cosmic game is nearing its conclusion, so the final combatants realize the need to take him out before he comes back with a surprise attack. Hiding is no longer an option. Trace takes charge of the situation, and they learn to work together.
-
-
description
-
Freefall is a small, emasciated boy, though his health never fails. His hair is touched with gray, his eyes are deathly yellow and piercing, and his skin is translucent. His clothing is shoddily stitched together from found textiles, and he has no real ties to any objects or places.
-
-
He can shape-shift into a blue-gray cat with yellow eyes and does often to reach the best hiding spots.
-
-
inspiration
-
He's originally from Impressive Title, a 3D chat server that ripped off Lion King artstyle and stole Morrowind's soundtrack.
diff --git a/src/char/Freya b/src/char/Freya
deleted file mode 100644
index 42be38c..0000000
--- a/src/char/Freya
+++ /dev/null
@@ -1,22 +0,0 @@
-Freya | means noble lady | dervish♀
-
-
basics
-
-
role: Dervish Sunspear
-
age: late 20s
-
birthday:
-
mental: strong-willed, decisive, wise
-
physical: toned but graceful, white hair, deep brown eyes, rich black skin
Driscoll is a nondescript ghost custodian for the abandoned hall of his master, which lies somewhere deep under snow. This hall holds crumbling monuments and treasures that tell the story of his master's life.
-
-
One winter, Katherine drawn to this hall during her dreams. Driscoll introduces himself, then each night, he leads her through a new wing, recounting the life of his master and his love for her. The last night, he says to wait for him and gives her a token from him as a reminder, an heirloom bracelet. That morning, she awakens with the bracelet in hand, but the dreams cease.
If she isn't in her computer room all day, she's exploring equally dark and dank places. Her skin will never get any sun. She hoards spooky chews but never eats them, so her apartment is full of them. Despite minimal time at her plot in the farmlands, she manages to grow a large array of exotic flowers and vegetables regardless. Maybe it's a hidden talent of hers, or (more likely) kind neighbors watch her plants in her absence.
-
-
description
-
I draw her differently all the time. Fluffy pink hair, pink eyes, and slouchy clothes is enough to identify her.
diff --git a/src/char/Helia b/src/char/Helia
deleted file mode 100644
index d0bcda4..0000000
--- a/src/char/Helia
+++ /dev/null
@@ -1,24 +0,0 @@
-Helia | means sun | union♀
-
-
basics
-
-
role: transfer student
-
age: teens
-
birthday: ???
-
mental: "too cool for you," able to achieve anything she sets her mind to
-
physical: short, blonde front ponytail with chunks of burgundy and flaming orange, hot pink eyes
-
style: DIY fashion
-
height: 5'1
-
residence: with her uncle
-
likes: urban exploration, cool hiding places, music
-
dislikes: grownups, her parents, being asked if her eye color is real
-
notes:
-
-
-
story
-
Helia was basically abandoned by her parents, but she keeps this information on the down low. She doesn't really have a lot of options, so she's going to live in a foreign country with an uncle she hasn't seen since she was a toddler. Worse, he's barely ever at home. Fortunately, despite having a culture shock, she makes friends easily in this small town of Lucrest.
-
-
Early on, Tessa dares her to sleep in the haunted shopping center overnight. It turns out the place has a strict curfew with rumors of strange lights, sounds, and slime monsters bubbling up from the ground. Helia finds that to be true and more, stumbling upon an entire dungeon beneath the city, populated with multiple fantasy races and nations. There's dark secrets and political intrigue and all that, but her most mysterious recovery is an abandoned horned boy with otherworldly powers - Rune.
-
-
description
-
She's short, slender, and flat as a pancake. She uses dark pink contacts so habitually that her friends don't remember what her natural eye color is. She also dyes her hair at home, hiding chunks of fiery orange and burgundy under her blonde hair. She's a high ponytail girl, wearing it so high, it usually falls over the side of her face. To let the hot pink and fiery colors shine, everything in her closet is black-adjacent - deep purple, forest green, navy, and blood red - and she enjoys DIYing detailed accents like corset lacing, reverse applique, and using found objects as buttons or charms.
diff --git a/src/char/Helmut b/src/char/Helmut
deleted file mode 100644
index 510d2a9..0000000
--- a/src/char/Helmut
+++ /dev/null
@@ -1,25 +0,0 @@
-Helmut | means healthy mind | witch♂
-
-
basics
-
-
role: master alchemist, mentor
-
age: thirties
-
birthday:
-
mental: genius, laid-back
-
physical: tall, long warm green hair, honey brown eyes, a beauty mark under one eye
-
style: comfy sweaters, honeys, mustards, ochres, and terracottas
-
height: 6'5
-
residence: nice house
-
likes: reading, working out formulas before material experimentation
-
dislikes: noise
-
notes:
-
-
-
story
-
His accomplishments in the field of alchemy are exemplary, but he is worried about his legacy on earth. He is divorced and without children, so there's no one special to share his knowledge, wealth, and time with. He adopts the two orphans with the highest magical aptitude in his city: Faber and Tilly. Initially, the relationship is all business with formal meal times, lessons, and planned field trips, but he comes to love them like his own children.
-
-
description
-
He's still surprisingly young for his contributions to his field, but signs of aging are at the forefront of his mind. He wears his grass green hair rebelliously long, despite what his first bosses told him, and has a vibrant wardrobe that tends towards fall colors and textures.
-
-
inspiration
-
Helmut and his apprentices are inspired by Pantone colors of the year.
diff --git a/src/char/Leslie b/src/char/Leslie
deleted file mode 100644
index 74abb5f..0000000
--- a/src/char/Leslie
+++ /dev/null
@@ -1,25 +0,0 @@
-Lesser "Leslie" Than Three | means holly garden | elementalist♀
-
-
basics
-
-
role: earth elementalist
-
age: twenties
-
birthday:
-
mental: flirty, capable
-
physical: chalky skin, rusty hair with inclusions of various gemstones, buxom
-
style: fitted bodices and leggings in brown
-
height: 6'5
-
residence: Ascalon City
-
likes: boys, social outings, makeup and haircare
-
dislikes: Charr, the current state of Regent Valley and Ashford Abbey
-
notes:
-
-
-
story
-
She grew up in Ascalon and is helping to rebuild the city. Not a lot of Elementalists survived the Searing, so she's chronically overcasted. It seems like she finds a new pocket of survivors in the wastes every day, though, so how can she stop fighting for her people?
-
-
With the release of Guild Wars 2, it looks like all her work was for naught. The ruins are almost identical to the day Lune left with Prince Rurik to seek an alliance with the dwarves lol.
-
-
description
-
She's naturally full-breasted with a distinctively doll-like side profile with her smooth porcelain forehead, long, upturned nose and full lips. She'd get all the attention from boys she wanted if she wasn't deemed a lost cause. Ascalon is lost, but she'll never face reality. The refugees need to be rescued, but hyping the return of the kingdom is just feeding them false hope. Regardless, no amount of reason will move her feet from her home.
-
diff --git a/src/char/Lisbet b/src/char/Lisbet
deleted file mode 100644
index 1c80f28..0000000
--- a/src/char/Lisbet
+++ /dev/null
@@ -1,7 +0,0 @@
-Aristen | means the best | mystic♀ | martial artist, soldier of fortune | 24 years old | 5'6
-
-My Black Desert Online main! The community and gear system ruin what is one of the best tycoon and life skilling MMOs, so I didn't play it for very long. I still adore Aristen, though.
-
-She's an honest and direct person who won't betray her core values of loyalty, submission towards authority, and denial of the flesh. Her Spartan lifestyle borders on asceticism. She lives off the land. Though her body is shaped by extreme discipline, she isn't necessarily the wisest person. She's always falling into the "work harder, not smarter" fallacy, leading to some pretty comical blunt-force solutions for her jobs.
-
-Her quiet femininity contrasts with her titanic arms and powerful thighs. (I maxxed out the arm muscularity and arm thickness sliders.) Perplexingly, she's retained an hourglass figure, which she attributes to a life of wearing belts. She always presents herself with excellence, wearing a meticulously perfected coral monochromatic face of makeup to set off her pale eyes, deep auburn hair, and glassy skin. Through experience, it wears gracefully even through sweat and heat. Her wardrobe is purely functional, consisting entirely of training and ceremonial uniforms, especially those that pair well with belts and scarves. Her favorite colors to wear are orange and jade.
diff --git a/src/char/Nephele b/src/char/Nephele
deleted file mode 100644
index 1c7044e..0000000
--- a/src/char/Nephele
+++ /dev/null
@@ -1,29 +0,0 @@
-Nephele | means cloud | green ozilette♀ | theme: Gregory & the Hawk - In Fact
-
-
basics
-
-
role: walker
-
age: teens
-
birthday:
-
mental: sharp, bitter
-
physical: short, athletic, wavy brown hair tied back in a huge ponytail that brushes the floor, blue eyes
-
style: long, flowing clothing in shamrock, crimson, and sunny yellow
-
height: 5'3
-
residence: abandoned suburban house
-
likes: interesting encounters with others, temporary travel companions, free-running
Her parents turned their kids loose and never check up on them, so Nephe never came back after it was obvious she wasn't missed. There's an abandoned house in the subdivision she squats in. It's really weird because there's never been any sign anyone actually lives there as long as she's known about it. The front door is locked, but the garage door is open and leads to an unlocked door. Regardless, it kind of creeps her out, so she never leaves the garage or driveway. She has some basic items, like a laptop and some notebooks, and leeches off of a technically illiterate neighbor's wi-fi.
-
-
She meets her first friend and true teen love online, Denver. He confides in her that he spends so much time online due to a fatal disease that prevents him from attending a normal school. When he stops logging in, she assumes he died. In a climax of emotion, she scales the house and tears her diary into the wind, page by page, then recedes into the darkest rooms in the house to hide for as long as she can bear.
-
-
With spring, she ventures out for the first time in what feels like forever, letting the healing sun sink into her skin and cut through the fog in her head. She stops to look at a particularly beautiful garden before noticing a crumbled piece of paper -- a page of her diary! She's fearful to read it but can't resist, and she's filled with not dread but the warmth of nostalgia. She begins a journey to retrieve all the pages and has a lot of interesting encounters on the way.
-
-
description
-
She's a short, lithe, girl built from solid muscle. She has beautiful brown hair and blue eyes, with her hair so thick and long it probably weighs as much as she does. She also always wears red, teal, and yellow, like a color-coded cartoon character.
-
-
notes
-
This was actually one of my early gamedev projects. I wrote a GDD for it as an angsty middleschooler. The blog is still floating around on Tumblr lol.
Newcomer is my first story, started when I was like 8. It's flawed beyond saving, but I've got a soft spot for it.
-
-
Emily is the quintessential self-insert. She looks like me but prettier, and she has my life but with exaggerated tragedy. She's isekai'd to a generic fantasy world via a portal in a black secluded lake near her neighborhood. Will has a crush on her from afar and happened to be trailing her the night she falls into the lake. He dives in after her and becomes her guardian in the next world. She always rejects his presence and help, but he never gives up pursuing her. (So mean, Emily! What the heck?)
-
-
After meeting the evil witch queen Adah (who could have saved a lot of time and effort by killing Emily then?), Adah quickly enrolls her under her sister Annelore's mentorship. Emily is integrated into generic fantasy society, complete with an overly long and boring training arc with her mentors Annelore and Lewis.
-
-
Emily is the last of her race (the Al Khara), and she's led on a fradulous "chosen one" quest to put her securely in Adah's clutches so she can eliminate the Al Khara for once and all because racism or something.
-
-
Immature story, but Annelore and Lewis are actually kinda cool. Annelore is an exiled princess hiding under an assumed identity, but her natural aptitude with politics has elevated her to high leadership in her new city. She was cast out of the royal family of Calx as a teen, and encountered Lewis on the road who taught her basic survival and combat skills.
-
-
Lewis himself is a serial isekai victim, and he'd been through at least five different worlds by the age of 17. He was there just long enough to get her established then got isekai'd again. Annelore figures he must have been an angel in disguise and was taken back into heaven. She never moved on emotionally, though, missing him every day. Then, at a critical moment, he returns, having found his way back to his true love. (He also looks exactly like Edward Elric because why not? lol)
-
-
(Why weren't they the main characters? None of this is even in the story. It's just the backstory I had in my head for them.)
-
-
Adah has a boyfriend, too, named Koda. She's supposed to be a loveless icon of her church-state, so Koda's her secret "mistress." They're just evil, though, without much more to them.
physical: tall, reddish skin, dark intricate hairstyles, dark almond-shaped eyes, pointed ears, black wasp wings
-
style: minimal clothing, orange
-
height: 5'10
-
residence: nomad
-
likes: humans, discoveries, helping
-
dislikes: unfriendly people
-
notes:
-
-
-
story
-
She's a rogue VI, lost in Paragon City. She loves making friends and helping them out, but her lack of discernment doesn't always put her on the right side.
Tessa fighting with brass knuckles and animal companions
-
Tessa bullying Rune
-
WISE in a dilapidated environment
-
diff --git a/src/char/Rodolphe b/src/char/Rodolphe
deleted file mode 100644
index 477bded..0000000
--- a/src/char/Rodolphe
+++ /dev/null
@@ -1,24 +0,0 @@
-Edward "Night" Lusk | means dark | chemist♂
-
-
basics
-
-
role: pharmacist
-
age: teens
-
birthday:
-
mental: genius, haughty
-
physical: short, thin but without muscles, dark hair, light blue eyes, pale
-
style: relatively formal, lots of suit jackets and vests with pops of bold colors
-
height: 5'5
-
residence: a house above his office
-
likes: compliments, pride in his appearance,
-
dislikes: situations beyond his control, owing favors
-
notes:
-
-
-
story
-
A natural-born genius who quit high school early to pursue apprenticeships at capital hospitals. Then, just as he was offered to study at one of the top research hospitals in the nation, his grandparents' health rapidly deteriorated. He had to rescind the offer and return home to spend his last moments when them, prepare the final paperwork, and decide what to with himself, his orphaned brother Milo, and the property. The mayor Dia has been trying to take over as much of the "adult" work as possible to give him space to mourn and spend time with his baby brother. She's also set him up with a little pharmacy in town, waiving rent for now.
-
-
description
-
Though mature for his age, he's short. He's headstrong and particular about his things, wearing his hair long and frequently covering his eyes, never using his real name for anything, and overdressing no matter the occasion. Paired with his snarky, cynical, conceited attitude, he has always been distinctly unpopular. The nearest doctor was previously half a county away, though, so the pharmacy was bound to succeed no matter who was running it. At work, though, he is strictly professional, his training and lost opportunity always pressing on his mind.
-
-
He has an extreme complexion, with dark hair but light blue eyes. He's vampirically pale, abhorring any time spent outside or exercising. His wardrobe is all neutrals with bold pops and relaxed fits - brown corduroy, navy monk-cloth, striped silk surah, vibrant sweater vests, and dress shirts in every color. Tessa's mom made her alter every single one of Night's jackets for practice, so they all fit like a glove.
He is a mysterious adolescent boy rescued from the dungeon by Helia, Tessa and Angel. He is listless, gaze-avoidant, and asocial initially, barely able to communicate in English. Over time, he warms up to his new friends and opens his loyal, tender, but usually misguided heart. The girls have a tendency to baby him, but he is more mature and capable than any of them in several ways. Unfortunately, his poor grasp on English, surface culture, and social cues confound any attempts to impress them. Being both trusting and born yesterday is an overbearing temptation for Tessa, and she bullies him relentlessly.
-
-
Until his rescue, he was living in the buffer territory between the inner earth and Lucrest Shopping Center. Bless, a dark gray styracosaurus, raised him with a hoard of Abyssal beasts. She is fiercely protective of Rune, goring anyone who trespasses in her territory. She's a known threat in the area, and workers take the long way around to avoid her.
-
-
description
-
He is shockingly tall and white as paper. Even more striking are his empty, red-toned eyes and inky hair that forms semi-rigid keratin "horns" about his crown. He is first found in rags and taped-together trash, living in a kingdom of refuse, but is later lent old hoodies and jeans by Angel.
They promise Silke training and opportunities for promotion, and she always gives her best to no reward. She has done data entry and taken calls for about every industry. Instead of being able to see her 'butts in seats' jobs for what they are and adjusting her expectations, she soldiers on, overworking herself fruitlessly.
-
-
Her parents were never really present in her life and kicked her out as a teenager, so she only knows self-reliance and perseverance, odd skills for office work. Her quiet, unassertive nature makes her easy to overlook, and while she has a calming presence, she hasn't had a genuine friendship since high school. She is rigidly professional at all times, afraid of offending someone. She needs someone to care about her and show her how to better focus her energy, but until then, she's hopeful her meticulously organized faxes will someday impress her manager into letting her sit in on the dev ops meetings and lead her to a real job.
-
-
description
-
She has a boyish build, big pink eyes hidden behind her thick frames, and blonde hair, usually worn up with cute hair accessories. Her ultimate outlet is dressing up in excessively feminine clothes, draping herself in lace, chiffon, tulle, and silk taffeta. She owns way too many dresses and pink blushes. She also loves unwind by playing with her two pets, Genie and Emme.
Despite viewing women as nothing more than playthings, he's drawn to Cass for an indecipherable reason. Even when he rebels against the attraction and goes far away, he finds himself back in her town before long. The other incubi bully him incessantly about catching human feelings. He doesn't know what to think.
-
-
He can paralyze victims with his magic power.
-
diff --git a/src/char/Tilly b/src/char/Tilly
deleted file mode 100644
index 660d62a..0000000
--- a/src/char/Tilly
+++ /dev/null
@@ -1,25 +0,0 @@
-Tilly | means mighty in battle | witch♀
-
-
basics
-
-
role: student
-
age: teens
-
birthday:
-
mental: intelligent, serious
-
physical: layered hair with lavenders and periwinkles, blue eyes, and glasses
She's forgetful and somewhat careless, so there will always be one thing wrong with her appearance, maybe unbrushed hair, wrong shoes, or her shirt inside out.
-
-
inspiration
-
Helmut and his apprentices are inspired by Pantone colors of the year.
diff --git a/src/char/Tove b/src/char/Tove
deleted file mode 100644
index 1c80f28..0000000
--- a/src/char/Tove
+++ /dev/null
@@ -1,7 +0,0 @@
-Aristen | means the best | mystic♀ | martial artist, soldier of fortune | 24 years old | 5'6
-
-My Black Desert Online main! The community and gear system ruin what is one of the best tycoon and life skilling MMOs, so I didn't play it for very long. I still adore Aristen, though.
-
-She's an honest and direct person who won't betray her core values of loyalty, submission towards authority, and denial of the flesh. Her Spartan lifestyle borders on asceticism. She lives off the land. Though her body is shaped by extreme discipline, she isn't necessarily the wisest person. She's always falling into the "work harder, not smarter" fallacy, leading to some pretty comical blunt-force solutions for her jobs.
-
-Her quiet femininity contrasts with her titanic arms and powerful thighs. (I maxxed out the arm muscularity and arm thickness sliders.) Perplexingly, she's retained an hourglass figure, which she attributes to a life of wearing belts. She always presents herself with excellence, wearing a meticulously perfected coral monochromatic face of makeup to set off her pale eyes, deep auburn hair, and glassy skin. Through experience, it wears gracefully even through sweat and heat. Her wardrobe is purely functional, consisting entirely of training and ceremonial uniforms, especially those that pair well with belts and scarves. Her favorite colors to wear are orange and jade.
diff --git a/src/char/Trace b/src/char/Trace
deleted file mode 100644
index a6ee513..0000000
--- a/src/char/Trace
+++ /dev/null
@@ -1,23 +0,0 @@
-Trace | means heavenly | blue balkane♀
-
-
basics
-
-
role: student
-
age: teens
-
birthday: May 7♉︎
-
mental: intelligent, weak presence
-
physical: boyish frame, red hair, brown eyes, soft features, squared face
-
style: denim, jersey cotton
-
height: 5'1
-
residence: with her parents
-
likes: drawing, writing
-
dislikes: social anxiety
-
notes:
-
-
-
story
-
She can't pinpoint the moment, but one day she became transparent. She hasn't been able to make eye contact or be heard by anyone since she's realized it. Even if she acts recklessly, like toppling a store display, not a single person so much as glances in her direction. She jokingly(?) theorizes she died while unaware and became a ghost.
-
-
description
-
She's a plain jane with dull red hair and brown eyes.
likes: not standing out, hospitality, lakes and oceans
-
dislikes: staying in one place for too long, personal questions
-
notes: hair always covers his eyes
-
-
-
story
-
Window is sent all over the globe to report on supernatural incidents for a national outlet. He doesn't really believe in this stuff, but he does his due diligence in his investigations. Even if he thinks he avoids bias, his contempt for his subjects is pretty obvious.
-
-
description
-
He tries to blend into any situation (with his purple anime hair, I guess?), avoiding conversation or cameras. His eyes are always hidden behind a veil of black-almost-purple hair. He's short, slim, and relatively soft-spoken but with a deep voice.
-
-
inspiration
-
I made him while writing Dymn in middle school, but he ends up in everything I write. I'm not sure why I was stuck on this character, but it's a tradition at this point, I guess.
-
-
I thought his name was so cool when I was 13.
diff --git a/src/churchgirlsanimalparade b/src/churchgirlsanimalparade
deleted file mode 100644
index 5bb8d85..0000000
--- a/src/churchgirlsanimalparade
+++ /dev/null
@@ -1,125 +0,0 @@
-fashion is...
-
-problem-solving, just like any design field. I approach it as a blend of personal and social desires with technical and mathematical challenges. I iterate over original designs according to the specific needs of a piece, source appropriate materials, make the pattern, plan the tech pack, cut and sew, and perform any value addition. Though I enjoy the full process of apparel construction, pattern-making has been my favorite step since high school. It has the most opportunity for real design work. It is the pattern-maker who numbers the strands on a mohair garment and plans zipper placement within an eighth of an inch.
-
-The impact of fashion is another problem to solve. The apparel industry is one of the largest water polluters, dumping 20% of the world's waste water, and many textiles do not degrade, filling 5% of landfills with textiles that take over 500 years to decompose. Donating old clothes has its own associated problems, competing with fledgling domestic industries overseas. The apparel industry also doesn't necessarily pay a living wage or ensure its factories are maintained. Valuing a low price tag over a manufacturing country of origin with proper labor protection has a human cost, most famously in the Dhaka, Bangladesh garment factory collapse.
-
-These are macro problems that can't be solved at the micro level. We can be good stewards over our little plot of Earth, though. To me, the best approach is to buy fewer but more practical things, get as many uses as possible out of what we have, and source the materials for new things from salvage. I'm not perfect, though. Sometimes, brand new polyester fabric really is what a design needs, and sometimes I get dazzled by the coolest buttons and forget to check their country of origin. Then I'm sure there's other severe issues completely unknown to me. Minizing my impact is the best I can do, honestly.
-
-I make individual or small batches of my designs. I'd like to be able to digitize patterns and sell them, but for now, read about my collections on the fashion page.
-
-
-
problem-solving, just like any design field. I approach it as a blend of personal and social desires with technical and mathematical challenges. I iterate over original designs according to the specific needs of a piece, source appropriate materials, make the pattern, plan the tech pack, cut and sew, and perform any value addition. Though I enjoy the full process of apparel construction, pattern-making has been my favorite step since high school. It has the most opportunity for real design work. It is the pattern-maker who numbers the strands on a mohair garment and plans zipper placement within an eighth of an inch.
-
-
The impact of fashion is another problem to solve. The apparel industry is one of the largest water polluters, dumping 20% of the world's waste water, and many textiles do not degrade, filling 5% of landfills with textiles that take over 500 years to decompose. Donating old clothes has its own associated problems, competing with fledgling domestic industries overseas. The apparel industry also doesn't necessarily pay a living wage or ensure its factories are maintained. Valuing a low price tag over a manufacturing country of origin with proper labor protection has a human cost, most famously in the Dhaka, Bangladesh garment factory collapse.
-
-
These are macro problems that can't be solved at the micro level. We can be good stewards over our little plot of Earth, though. To me, the best approach is to buy fewer but more practical things, get as many uses as possible out of what we have, and source the materials for new things from salvage. I'm not perfect, though. Sometimes, brand new polyester fabric really is what a design needs, and sometimes I get dazzled by the coolest buttons and forget to check their country of origin. Then I'm sure there's other severe issues completely unknown to me. Minizing my impact is the best I can do, honestly.
-
-
I make individual or small batches of my designs. I'd like to be able to digitize patterns and sell them, but for now, read about my collections on the fashion page.
-
-
-% rebase('frame.tpl')
-
-
-
blessfrey fashion
-
-
-
-
church girls + animal parade
- a collection in two parts
-
-
Church girls comes from my personal apparel history. Growing up, most of my clothes were the older girls from church's castaways. I retained a majority hand-me-down wardrobe through my post-graduation internship. I never felt embarrassed about it. Actually, I enjoyed looking unique, wearing nothing you could buy in a store. One lady told me I looked like I was from a different era. (Insult maybe, but I loved that.) Other hand-me-downs became so old they were once again on the cusp of a trend.
-
-
Many of my hand-me-downs were banished to the back of the closet as I got to buy my own clothes and participate in street fashion for the first time on a college campus. My outfits got very dainty with sheer and uncomfortable fabrics, complex layering, and a general lack of practicality. The pandemic knocked that out of me quickly, and I retreated back into my old, floppy, cotton hand-me-downs and stolen t-shirts from my husband. This time with the clothes, I was older and more aware of things. They became a symbol of neglect and pity. None of them were chosen by me or my parents, and many were from people I barely knew. I was well-dressed for the depressive, disassociative state of the world.
-
-
When the town began to open back up, I had a reason to dress up again but saw nothing both exciting and comfortable. Most of the clothes I made had been given away or broken down into scraps. I hadn't sewn for myself in ages anyway. My last set of hand-me-downs were starting to deteriorate beyond repair. Left with some chiffon blouses and rayon skirts, it was finally time to sew and dress for me again.
-
-
Church girls's theme is finding appreciation again for the anachronistic, cultural melting pot of my old hand-me-down wardrobe. There are clothes from the 00s, 90s, and proper vintage eras; from American families but also Mexican and Panaman families; and from mass retail, luxury, and home seamstresses. Also, they aren't just stuff that looked good in a store - they are care items that were set aside for me by people in my community.
-
- For the capsule collection, I immortalized my favorite old clothes as reverse-engineered patterns. With the original garments, I am creating clothes that are finally me but flavoring them with discordant sources of inspiration and sentimentality. I take each design's name from scattered memories.
-
-
-
-
I wasn't prepared to unlock a 00s fashion time capsule when I found a copy of Animal Parade. It's not like Hikari epitomizes the era and I never liked that style back then, but her cami layered over a basic tee and bulky cargo pockets has a hold over me. It's a mix of fresh and nostalgic. It brought to mind some of the silly and hyper-girly outfits Hillary Duff wore. She wore layers and comfy cottons all the time, too. Maybe people would cringe at her old outfits, but they were undeniably fun.
-
-
Pre-AP, I wore camis and biker shorts for modesty under fussy chiffons. My foundation was decidedly neutral. There's something expressive and carefree about wearing these purely functional elements on top and in cute colors. Even these 'boring' garments can be special. It was a line I needed to be led across in my life. This speaks to me in several different directions. Rejoice always. It's okay to be playful. Whatever you do, work heartily, as for the Lord. Even drudgery is an area for personal growth and exploration. I was sad for a long time, but seamstress's block has finally lifted.
-
-
The animal parade capsule collection is what Hikari is to me: individualism in each layer, joy in adding details, and amiable natural fibers. I name each design after significant animals in my life.
-
-
The two themes belong together. Meditating over the introspective and the expressive, hiding away and being open, the old and the new. They come bundled with transformational passages of Scripture.
-
-
I will extol you, O Lord, for you have drawn me up
- and have not let my foes rejoice over me.
-O Lord my God, I cried to you for help,
- and you have healed me.
-O Lord, you have brought up my soul from Sheol;
- you restored me to life from among those who go down to the pit.
-Sing praises to the Lord, O you his saints,
- and give thanks to his holy name.
-For his anger is but for a moment,
- and his favor is for a lifetime.
-Weeping may tarry for the night,
- but joy comes with the morning.
- (Psalm 30:1-5)
-
-
My beloved speaks and says to me: "Arise, my love, my beautiful one, and come away, for behold, the winter is past; the rain is over and gone. The flowers appear on the earth, the time of singing has come, and the voice of the turtledove is heard in our land.
- (Song of Solomon 2:10-12)
-
-
-
- >
-
-
-Bomber: I've had a favorite light rayon bomber jacket for 10 years, but it's wearing out and has some weird bleach stains. This is basically a knockoff of a BB Dakota design. This one is a shiny pink polyester (a lustrous exception to my natural fiber rule) with multicolored lace trim, a metal zipper, and a beige drawstring. I think I can keep the old BBD jacket, too, but it needs embroidery or appliques over the stains.
-
-Bodice: This is a light layering top made from batiste. It will have ruffles at the shoulders and long straps from the waist to wrap around and tie in a bow.
-
-Kimono: I have a favorite purple floral chiffon kimono that has a fraying seam. After three repairs, it needs a semi-retirement. This design but with rayon batiste and a dark inky print...if Mood ever restocks the Penitentiary Block print!
-
-泣き虫 (Cry Bug): An oversized poplin button-down with short sleeves and an oversized beetle print. It has black piping along seams, a pocket, and black glass shank buttons. The fit is meant to resemble your dad's shirt where the short sleeves come down too far, the armholes are too deep, and the pocket is too big, but the collar and length will be appropriately proportioned for me. It's white with an oversized print that visually plays up the unusually large proportions of the shirt. The piping and glass shank buttons remain the correct proportions, though.
-
-Mock Turtle: There's three light mock turtlenecks. This is my favorite staple, but I lost my charcoal gray one 2 moves ago. (RIP) One will be a foil knit with thumbholes, one is a striped knit, and one is a 4x2 rib knit.
-
-
-
-
-
-Pants: Straight-legged plaid linen pants with a fly-front closure, belt loops, side pockets, and blind hems. Linen feels great in the summer and lends itself to a well-tailored staple.
-
-Shorts: Two pairs of linen shorts, one with stripes and striped fringe ribbon trim and the other with a dragon fruit print and cuffs and a bow belt.
-
-
-
-
-Swimsuit: The one piece swimsuit is made out of pastel seafoam and pink neoprene with pops of sulfurous yellow in an abstract swampy design. I actually lived around wetlands for most of my life, so it's cool to see a wetlands design instead of another tropical beach or flowering meadow print. It has long sleeves, a mock turtleneck, and an invisible zipper at the center back. The focus is the obi belt made from a contrasting black neoprene. There are three panel-and-tier ruffles over the bottom to give some illusion of volume against the closely-fitted belt and top without adding more unnecessary bulk. I'm not 100% on materials yet and may need to bring in a thinner swimwear tricot for the layers.
-
-Pajama sets: The pajamas are not my design. They are basically knock-offs from Yahoo! Japan shopping, since I don't feel like importing mall-tier pajamas. (The originals are Japanese-style yukata-style long sleeve pajama set for spring and fall from OPEN-CLOTHES and summer pajama set for ladies in their 20s with flared collar and cute short sleeves from kittyshop.) The only real design change is using oversized rick rack instead of ruffles on that second set. Pajamas are the most pressing sartorial area in my life in which I need a self-assertion. People like to gift me pajamas, but they always ask me my size then buy a size or two down. Why won't anyone believe I'm not an XS! The one time I got something that fit, it was unwearably heavy fleece for my year-round hot climate. I don't want to be ungrateful or wasteful, though, so I've either crammed myself into tiny pajamas or sweated since I was little. That's so silly, especially now that I'm an adult. There's beautiful but unused jacquard fabric hanging in my closet. There's nothing stopping me from turning it into cute Japanese jacquard pajamas that actually fit.
-
-
pattern-making and sewing so far
-I'm working on the 泣き虫 button-down shirt first, but while waiting for the buttons to arrive, I went ahead and got one version of the mock turtleneck pattern done.
-
-
-
-
-
-
-
-I'm in the middle of sewing the button-down. The sleeves are cuffed and reinforced with interfacing (finally available again after the early pandemic mask-making frenzy) and decorated with the piping. Next, I'll set the sleeves in and work on the button placard.
-
-
-
-
-
-
-
-
designer
-
I'm chimchooree! I love the full process of apparel construction, but pattern-making has always been my favorite. Like any designer, I view fashion in terms of defining the problem and solving it. The creative side of my designs are led by meaningful themes, selecting for having relevance to both the temporal and metaphoric season I'm in, diverse concepts to draw from, and a consistent core to tie everything together.
-
-
design statement
-
The best clothes might very well be the ones you already own. We are called to be good stewards of the earth, so I encourage you to have your clothes repaired, altered, or customized whenever possible.
-
-
But if I'm going to make new clothes, I'm going to design them to be irreplaceable. They will be thoughtfully designed and made with professionalism, personality, comfort, and durability in mind. I shoot for daywear that handles being thrown in a washing machine no problem, and try to keep my designs easy to alter.
-
-Filling out Iciaa's questionnaire for Dia because I'm feeling nostalgic for these overly long questionnaires. Also, Dia isn't that detailed of a character yet.
-
-1. What is your character's name? Do they have a nickname?
-Diana "Dia." She may be mayor, but Lucrest is so small and Dia is so young that she had no hope of expectation of getting all the boomers to address her by her title and surname.
-
-2. Is your character male or female? What is their sexuality? What role does it play in your story?
-Female, straight. She isn't above manipulating guys' feelings to get what she wants.
-
-3. How old is your character? Does their age matter to them emotionally or socially?
-28. It's the age my old guild leader was. Seemed like a good year between young and old, inexperienced and wise to me as a high schooler. Dia is the youngest of her highly accomplished family, so she always feels like her progress to too slow or insignificant. She is also younger than the seniors and boomers and older than the kids and looks young for her age, so she never really finds a peer in Lucrest.
-
-4. How tall is your character? Does it affect them negatively, positively, or neutrally?
-She is pretty sure her short stature prevents her from being taken seriously in some circles.
-
-5. What is your character's body shape? Are they physically fit? What challenges or advantages does this present?
-She is fit but too petite for physical combat. Her magic isn't really combat-oriented either. Her henchies have to do the heavy-lifting.
-
-6. Describe your character's facial features. What color are their eyes and hair? Be specific!
-She has refined aristocratic features. Her Mexican heritage falls more on the Polish side than the Aztec side, so she's very fair. She has natural black hair dyed with streaks of navy and silver. Her eyes are dark brown, nearly black.
-
-7. Do other people find your character physically attractive? Why or why not?
-Yes. She is conventionally cute, polite, and knows how to push people's buttons.
-
-8. What sort of clothing does your character wear? What colors are common? What does this style reflect?
-Light, elegant colors, professional but feminine styles, propensity for sparkly or metallic fabrics like lurex or lame.
-
-9. Does your character have any physical or mental disabilities? How does this affect your story? Is it a main point of your plot?
-I'm not going to armchair diagnose her with anything, but she's a jerk.
-
-10. What does your character do for money? If they are unemployed, how do they live? Does money matter to your character?
-She owns 90% of the commercial properties in Lucrest in addition to several miscellaneous small businesses. She's pathetic by her family's standards, but she's plenty wealthy.
-
-11. Does your character have specified family members? Describe their relationship with their family.
-Her father is the vice president of the Confederate States of America. Her older brothers and sisters are tycoons and elite politicians. Her father treats her like the baby of the family, so he never sets the same expectations for her nor shows her the same respect. She's not particularly accomplished anyway. She has a rivalry with her siblings and takes every one-up personally.
-
-12. What is your character's marital status? Are they involved in a relationship? How is this emotional taxation present in your story?
-She actually does have a secret boyfriend, Koda, but he isn't really involved in the story. He's her confidant and very supportive of her behind the scenes.
-
-13. Who are your character's closest friends? How do they know each other? How do they act around each other?
-She doesn't really have close friends besides Koda. Even when she's chummy with someone, she privately views them cynically, either as a tool or an enemy.
-
-14. Who are your character's minor enemies? Why do they not get along?
-I'm fleshing out this part of the story right now. Dia bought a lengthy section of land over Abyssal Cave, which just happened to be an unincorporated community to simultaneously takeover politically as a cover. There are other figures who are trying to control the cave for their own purposes, though. Later, the National Park Service is going to get involved, too.
-
-15. Who are your character's major enemies? How does this affect your plot? What began the animosity of their relationship? How, if at all, is it resolved?
-Helia and her friends. Although secrecy is part of the deal with the "minor enemies," Helia is set to blow everyone's cover. Before she even set foot in the caves, Dia was suspicious the moment she realized she was related to Chuck, a Union vet.
-
-16. How does your character speak, and what does their voice sound like? How does this reflect their personality, if at all?
-Her voice is sweet and high-pitched like a bell. She took speech classes as a child, and it shows in her deliberate articulation.
-
-17. Is there anything significant about your character's movement? Is it important?
-She has perfect posture; she's good at walking silently and sneaking around; I don't know lol no.
-
-18. Who does your character live with, or do they live alone? How does this arrangement affect your character's lifestyle?
-This changes a lot. She's lived with Rune's older sister, her paramour, Angel's dad, and probably others in the future. Get out of her business.
-
-19. What traits does your character value in their friends?
-Someone intelligent, someone who gets where she comes from, someone who respects her.
-
-20. What are your character's main pet peeves? Does this play a role in your story?
-Being belittled, being called cute, being carded for things. It's part of her impetus for purchasing a section of the Abyssal Cave.
-
-21. Where does your character live? Are they happy? Describe the scenery. How does this affect your story?
-She lives in the Mayor's Mansion in Lucrest, Nickajack. It's devastatingly rural and slow compared to the capital, even after she's populated with lots of fake businesses and tourists.
-
-22. What is your character's opinion of the society they live in?
-She's too impatient to worry about the consequences of her actions, especially when they apply to people far beneath her, both in birth and intellect.
-
-23. Briefly summarize your character's childhood.
-She is much younger than her siblings, so she didn't see them much. Unlike a lot of rich kids, her parents actually raised her themselves without a nanny or boarding school. She roamed the National Archives and other legal and political centers growing up. She also had all the fancy private tutoring, social outings, and world travel expected of the daughter of an elite family.
-
-24. What are your character's darkest secrets?
-Hahaha...It wouldn't be murder or plague or blackmail. It'd be that the GDP of her town is falsified, and nearly all the businesses there operate at a substantial loss.
-
-25. Has anyone close to your character died in the past? How did your character deal with this? Did it have a lasting impact?
-Haven't thought about it.
-
-26. What is your character's social status? Are they happy with it?
-She's the daughter of the vice president and the mayor of a nowhere town. No, she's miserable because she could do so much better.
-
-27. Is your character a hero, a villain, or neither? How do they see themselves, as opposed to how others see them?
-Villain for sure. She knows it, but others wouldn't understand how hard it is for her to compete. Others think she's weird but effective.
-
-28. Is your character conservative and disapproving of change, or liberal and willing to accept?
-I don't think this is a very fair definition of conservative and liberal. She's a Democrat, just like her father. She doesn't necessarily carry her views out in Lucrest because she is seeking wealth and power over a career in local politics, but she's a supporter of states' rights.
-
-29. It is said that every character has a fatal flaw. What is your character's?
-She's impatient. She could be every bit as rich and powerful as her siblings if she put in real work, accepted that failures are inevitable, and relied on family and friends more.
-
-30. What are your character's special talents? Are they supernatural, or normal? Can few other people do them?
-She is the only one with the GDP wand, stolen from the magic caves. She can control the hand of the market.
-
-31. What specific activities does your character lack skill for? What challenges does this present?
-Keeping secrets. Competitors and worse had an eye on Lucrest before she did.
-
-32. What are your character's major wishes in life? These are not goals, simply things they wish would happen without work.
-Her dad would approve of her relationship with Koda.
-
-33. When your character looks in the mirror, what do they think of themselves? Is it positive or negative?
-She's definitely nitpicking, rearranging her hair, touching up her makeup, but she's ultimately confident in her appearance.
-
-34. What is your character's most precious material object? What would happen if they lost it? Why is it so important?
-Her magic wand. Unthinkable. Without it, she'd actually have to formulate her own effective economic policies, and she's never tried that before.
-
-35. Is your character more creative, or more logical?
-Maybe creative?
-
-36. What are your character's small flaws? Do they cause annoyance or disdain for your character? What are your character's opinions about them?
-I feel like all her flaws are major.
-I guess she's never real, so she has trouble relating to others. Some people can tell and don't jive with her. Even those who think she's nice or supportive don't feel like friends to her. It's lonely, but she could never be that vulnerable with other people. And besides, she has Koda.
-She also has maturity issues. If someone gets under her skin, she'll hold the pettiest
-
-37. Is your character envied? By whom? Who does your character envy?
-Sure. The older women wish they had her figure, the younger girls wish they had her cool car and stuff, and other mayors can't find a legitimate reason for her success. She envies her siblings and every girl who has something she doesn't.
-
-38. Does your character deceive others often? Do they attempt to deceive themselves? How and why?
-Always. She knows just who will let her get away with stronger coersion, too. She doesn't really lie to herself, though. She knows she isn't a real politician and is afraid of being exposed someday.
-
-39. What is your character's faith? Briefly describe their religion, if it exists. Are they polytheistic or monotheistic? Do they see God(s) as all-powerful, or helpers in the course of fate?
-She's Episcopalian on the Sabbath but lacks a deep belief in God.
-
-40. Describe your character's uncommon beliefs. Do they believe in fate? Karma? Multiple heavens and hells?
-She believes she has a superior genetic background and class and consequently feels entitled to success in life. It's deeply troubling that she's almost 30 and can't find it for herself, even with wild crutches. She also believes in the opposite of soul-mates - soul-enemies and enemies at first sight.
-
-41. Is your character well known or little known? Why?
-She's as well-known as any random daughter of a high-ranking politician who has served in the government for 40 years.
-
-42. Is your character more optimistic, or more pessimistic?
-Aggressively pessimistic. So much so that she rarely relies on others or luck.
-
-43. Does your character have a lot of hope? Are there points in your story in which they lose hope?
-She feels like she's getting away with it. Cracks start to show over time.
-
-44. What traits make your character unique? Do they have special abilities, or a unique facial feature? Be specific.
-Streaked hair, though most of the cast has that. A ridiculous economics-based RPG class. I don't know; I should probably come up with a catch phrase or something.
-
-45. Is your character moody or even? Is there a cause? What are the consequences?
-She keeps it together most of the time, but she gets into slapfights with her predestined enemies.
-
-46. What is your character's mental capacity? Are they brilliant, or slow to learn?
-She's very bright and quick on her feet, but she doesn't trust herself enough to actually use her brain.
-
-47. Does your character sport charisma to influence others? How do they use this? If not, how does it affect them?
-Not really lol. She relies on emotional manipulation. She scopes out weaknesses in those with something that can benefit her by acting like a supportive friend or therapist. She can sniff out troubled families, victims of abuse, orphans, etc, and sink her claws in.
-
-48. What is your character's first memory? Why? What was its impact? Was it good or bad? Describe it in detail.
-Uhhh, I don't know. She remembers her childhood mostly as being alone in archives, reading random meeting minutes and journals; exploring legal offices like mazes; charming government workers with her quiet and studious demeanor into being allowed places other kids were banned from.
-
-49. Are first impressions important to your character? How does your character judge by them? Does your character go out of their way to make a good first impression on others?
-Definitely. She tries to foresee how people will fit into Lucrest. She always does her professional best to make a good impression on everyone.
-
-50. How does your character view authorities? How do they react to taking orders?
-She's scared sick of the ones who work with her dad, and she is cynical of anyone who could view a professional relationship with her as stepping up in the world.
-
-51. What are your character's goals? Long term? Short term?
-Definitely CEO business magnate over an empire. Or something. Just so long as her father's finally proud.
-
-52. What does your character do when they need to relax? Does it work? Does it affect those around them?
-Secret retreat with Koda. Long walks along the scenic avenues of Abyssal Cave. Push the shopkeepers around.
-
-53. What events in your character's past have left major effects? Why and how? Are they good impacts, or bad?
-
-54. What major changes has your character gone through recently? How do the people around them react to this?
-
-55. What are your character's bad habits? Are they major, like smoking and drinking, or minor, like chewing their nails?
-
-56. What is your character a perfectionist about?
-
-57. Who are your character's distant family? Does this play a role in your story?
-
-58. What recent events have strengthened or weakened your character? What do they think of their changes?
-
-59. Who were your character's childhood friends? Do they play a role in your story? How?
-
-60. What major things does your character ignore? Purposefully? Or are they simply ignorant?
-
-61. What are your character's major fears? How does this challenge them?
-
-62. What does your character want that is unusual?
-
-63. What does your character like that is unusual?
-
-64. What is your character's favorite color? Does this reflect their personality? How?
-
-65. Is your character ahead of their time? Behind? At the correct pace?
-
-66. Does your character have much free time? What do they do with it?
-
-67. Does your character have goals that are unattainable?
-
-68. How does your character dream while they are asleep? Vividly? Rarely? Do they frequently have nightmares? Describe some of their dreams.
-
-69. Does your character have health problems? Do they need medication or medical care? How does this challenge them?
-
-70. What are your character's inner fears? Do they tell people about them? Why or why not?
-
-71. What is your character's taste in food? Is this specific to the setting of your story? How does it affect your story?
-
-72. Is your character more selfish, or more generous?
-
-73. What is your character's stress level? Why? What do they do to resolve it?
-
-74. What effects do social pressures, like money and the media, have on your character?
-
-75. Is your character interested in a more lavish lifestyle, or simple?
-
-76. What weather does your character prefer? Why? How do they react when that weather is not present?
-
-77. What is your character's favorite time of day? Why?
-
-78. Of what importance are holidays to your character? Which holidays?
-
-79. What odd traits belonging to your character tend to drive people away? Why?
-
-80. What "walls" are built by your character to accommodate the common phrase, "sometimes you build walls not to keep people away, but to see who cares enough to tear them down," and what effect does this have?
-
-81. Does your character place significant value in common sense? Does your character have a lot of common sense?
-
-82. What is your character's taste in music? Why? Do they make music?
-
-83. Is your character satisfied with their life? Why or why not?
-
-84. What motivates your character to make changes and move forward in life?
-
-85. What are your character's least favorite activities?
-
-86. List several activities that your character will refuse to do and explain.
-
-87. What does your character do to relieve boredom?
-
-88. Is your character more lazy, or more studious?
-
-89. Is your character more athletic and active, or more lazy?
-
-90. Is your character social, or a loner?
-
-91. Does your character attempt to hide their emotion? If yes, how well do they execute their goal? If not, why? What do other people think of your character because of this?
-
-92. What does your character find beautiful? What does your character find ugly?
-
-93. What are your character's redeeming traits?
-
-94. Is your character easily distracted? If so, why, and what challenges does this present? If not, how does this help them?
-
-95. How does your character interact with nature? Why?
-
-96. What are the major lasting effects that your character will tend to have on other people, if any?
-
-97. How self-centered is your character? Why? What do other people think of this?
-
-98. Does your character judge people, and on what premises? Race? Gender? Age?
-
-99. Briefly summarize the major events in the time line of your character's life.
-
-100. Finally, and perhaps most importantly, what is your character's role in the story?
-
-
-Last updated August 31, 2022
-
diff --git a/src/diary/hold/achievementsystem1 b/src/diary/hold/achievementsystem1
deleted file mode 100644
index 9bb22ed..0000000
--- a/src/diary/hold/achievementsystem1
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
the achievement system is the central nervous system of my game (part 1)
What's the difference between winning a trophy or earning a quest reward for killing 10 rats? Probably nothing.
-
-
In this series, I'll discuss how to design an achievement system. Mine is for an RPG, but it should work for a variety of achievements and game genres. I won't discuss integrating with Steam or other platforms, but they have their own documentation.
-
-
platform achievements, quest rewards: there's no difference
-
Achievement is a rather nebulous term for gamers, but it's usually defined as an objective that creates a metagame. Devs offer them as a nudge to explore the full depth of games and seek out hidden secrets. For example, Portal's Transmission Received achievement turns the physics puzzle game into a game of hot or cold using radios you may not have even known were there. Most games' achievements look more like an extension of the quest journal than a metagame, though. Those Dragon's Dogma achievements in the image above are indistinguishable from notice board quests. They are practically unavoidable within a couple of hours of standard play.
-
-
Whether your achievements are meta or not, they can be earned through almost any in-game mechanic or system. (Unless they're so meta, they're completely external to the gameplay like The Stanley Parable's Go Outside achievement: don't play for five years.)
-
-
Unlocking an achievement usually awards a trophy or gamer points. In a way, increasing an in-game score is not unlike triggering a "quest complete" popup. An "event" occurs, and a "reward" is given. Some games offer something more tangible alongside their achievements, like a new game mode or item. The hat merchant in Stardew Valley will sell new hats for each achievement earned.
-
-
So not only does a robust achievement system need to be listening to the other game systems, it needs to be able to be able to interact with them. A system with that kind of power can do a lot more than notify you of achievements and add new hat merchandise - that's central nervous system material. It could progress the state of the game world depending on player actions.
-
-
blessfrey's achievement system doubles as the character/world progression system
-
Blessfrey feeds every in-game event through its achievement system, and its reward delivery is flexible enough not only to give a trophy but to cause anything to happen in response. Beyond achievement management, it is the system responsible for all forms of character and world progression. This is how Blessfrey can be a dynamic and responsive game. After all, if a system can dish out a trophy for killing 10 rats, it isn't too much of a stretch to say it could trigger a quest completion, unlock a codex entry, or teach the player a new skill. And if it can do that, why not something more dramatic? Killing the last 10 rats could be a turning point in the game world, putting the player on the post-rat timeline and changing all maps, NPCs, and quests to reflect the newly rat-free society.
-
-
I don't even think that last one is too silly. Games are all about making choices, so ideally, the world should always be responding. The only issue is scope, both in terms of developer workload and maintaining a coherent game vision. Thankfully, creating a system capable of anything is no problem, though. I'd prefer to be my only limitation, not my progression system.
-
-
what is it going to look like?
-
So realistically, how do I plan to use this system?
-
-
Obviously, the completion of a quest will be technically identical to an earned achievement, as will codex entries and level up rewards. They just won't be visible to the player or cause any trophy popups.
-
-
More abstract things will count as achievements, too, like skill acquisition. Blessfrey revolves around skills, so it would be cool if skills were unlocked in a meaningful way through the achievement system. I plan to have them learned through gameplay via a variety of different methods, so skillhunting feels more like exploring than grinding. Maybe the Fire Resistance skill could be learned by standing in lava for 2 minutes, by eating crème brûlée flambé (without blowing it out), or by taking fire damage in combat. Your time spent aflame will be the event needed to unlock the Fire Resistance skill achievement. Then whenever you check your Skill Library, it knows which skills you've unlocked by checking your achievements.
-
-
World progression will also be tied to this system. Spending $1000 at the mall could trigger a new store to open. Selling too many dungeon items to a merchant could cause him to become suspicious of where you come across them, changing your dialogue options or starting a quest. Even the UI could be tied to this system. Maybe the UI displays increasingly more detailed information when you hover your mouse over a slime as you hit different thresholds of slime kills.
-
-
I'm not kidding when I say everything is an achievement, though. When a skill is used, each stage of skill progression is doled out by the achievement system. It will prepare the skill for action, exact any skill costs, listen for required conditions to be met, and apply skill effects on behalf of the skill. Basically, skill use and the completion of each phase is an event, and triggering the next phase of skill progression is the achievement. The skill itself barely does anything besides provide information to the achievement system.
-
-
The more systems mediated by the achievement system, the better, I say! Letting systems run amok and modify each other directly causes unexpected problems all the time, and bringing in a middleman is such a reliable solution.
-
-
stay tuned
-
So a working definition of an achievement is something awarded in response to a player action or game event. Those actions or events could be related to any game mechanic or game system, be it combat, exploration, trading, racing, etc, so the achievement system needs to be linked to all of them. How can you possibly design a system that is distinct from yet deeply intricated in every other system? In part 2, we'll do just that! Keep reading.
What's the difference between winning a trophy or earning a quest reward for killing 10 rats? Probably nothing.
-
-
In this series, I'll discuss how to design an achievement system. Mine is for an RPG, but it should work for a variety of achievements and game genres. I won't discuss integrating with Steam or other platforms, but they have their own documentation.
-
-
platform achievements, quest rewards: there's no difference
-
Achievement is a rather nebulous term for gamers, but it's usually defined as an objective that creates a metagame. Devs offer them as a nudge to explore the full depth of games and seek out hidden secrets. For example, Portal's Transmission Received achievement turns the physics puzzle game into a game of hot or cold using radios you may not have even known were there. Most games' achievements look more like an extension of the quest journal than a metagame, though. Those Dragon's Dogma achievements in the image above are indistinguishable from notice board quests. They are practically unavoidable within a couple of hours of standard play.
-
-
Whether your achievements are meta or not, they can be earned through almost any in-game mechanic or system. (Unless they're so meta, they're completely external to the gameplay like The Stanley Parable's Go Outside achievement: don't play for five years.)
-
-
Unlocking an achievement usually awards a trophy or gamer points. In a way, increasing an in-game score is not unlike triggering a "quest complete" popup. An "event" occurs, and a "reward" is given. Some games offer something more tangible alongside their achievements, like a new game mode or item. The hat merchant in Stardew Valley will sell new hats for each achievement earned.
-
-
So not only does a robust achievement system need to be listening to the other game systems, it needs to be able to be able to interact with them. A system with that kind of power can do a lot more than notify you of achievements and add new hat merchandise - that's central nervous system material. It could progress the state of the game world depending on player actions.
-
-
blessfrey's achievement system doubles as the character/world progression system
-
Blessfrey feeds every in-game event through its achievement system, and its reward delivery is flexible enough not only to give a trophy but to cause anything to happen in response. Beyond achievement management, it is the system responsible for all forms of character and world progression. This is how Blessfrey can be a dynamic and responsive game. After all, if a system can dish out a trophy for killing 10 rats, it isn't too much of a stretch to say it could trigger a quest completion, unlock a codex entry, or teach the player a new skill. And if it can do that, why not something more dramatic? Killing the last 10 rats could be a turning point in the game world, putting the player on the post-rat timeline and changing all maps, NPCs, and quests to reflect the newly rat-free society.
-
-
I don't even think that last one is too silly. Games are all about making choices, so ideally, the world should always be responding. The only issue is scope, both in terms of developer workload and maintaining a coherent game vision. Thankfully, creating a system capable of anything is no problem, though. I'd prefer to be my only limitation, not my progression system.
-
-
what is it going to look like?
-
So realistically, how do I plan to use this system?
-
-
Obviously, the completion of a quest will be technically identical to an earned achievement, as will codex entries and level up rewards. They just won't be visible to the player or cause any trophy popups.
-
-
More abstract things will count as achievements, too, like skill acquisition. Blessfrey revolves around skills, so it would be cool if skills were unlocked in a meaningful way through the achievement system. I plan to have them learned through gameplay via a variety of different methods, so skillhunting feels more like exploring than grinding. Maybe the Fire Resistance skill could be learned by standing in lava for 2 minutes, by eating crème brûlée flambé (without blowing it out), or by taking fire damage in combat. Your time spent aflame will be the event needed to unlock the Fire Resistance skill achievement. Then whenever you check your Skill Library, it knows which skills you've unlocked by checking your achievements.
-
-
World progression will also be tied to this system. Spending $1000 at the mall could trigger a new store to open. Selling too many dungeon items to a merchant could cause him to become suspicious of where you come across them, changing your dialogue options or starting a quest. Even the UI could be tied to this system. Maybe the UI displays increasingly more detailed information when you hover your mouse over a slime as you hit different thresholds of slime kills.
-
-
I'm not kidding when I say everything is an achievement, though. When a skill is used, each stage of skill progression is doled out by the achievement system. It will prepare the skill for action, exact any skill costs, listen for required conditions to be met, and apply skill effects on behalf of the skill. Basically, skill use and the completion of each phase is an event, and triggering the next phase of skill progression is the achievement. The skill itself barely does anything besides provide information to the achievement system.
-
-
The more systems mediated by the achievement system, the better, I say! Letting systems run amok and modify each other directly causes unexpected problems all the time, and bringing in a middleman is such a reliable solution.
-
-
stay tuned
-
So a working definition of an achievement is something awarded in response to a player action or game event. Those actions or events could be related to any game mechanic or game system, be it combat, exploration, trading, racing, etc, so the achievement system needs to be linked to all of them. How can you possibly design a system that is distinct from yet deeply intricated in every other system? In part 2, we'll do just that! Keep reading.
Designing an achievement system without any octopus tangles.
-
-
a trusty mailman
-
Octopus-tangling is a major design concern for a system that is so interconnected with every other system. I could scatter achievement code through every other system, but that would be a problem if I ever need to make a fundamental change to the achievement system. Also, tacking achievement code everywhere will make the other systems cluttered.
-
-
Instead, Blessfrey's achievement system is broken into three main, self-contained pieces: event handlers, the Knowledge Base, and the MessageBus.
-
-
Let's define the terms:
-
-
-
knowledge: each granular action or world event that contributes to earning an achievement
-
key: an id number that identifies a piece of knowledge
-
topic: just arrays of keys; used to categorize knowledge into groups
-
event handlers: they subscribe to topics, waiting for news that a specific piece of knowledge has been encountered
-
Knowledge Base: a singleton that stores all knowledge and facilitates the learning and forgetting of pieces of knowledge.
MessageBus: a singleton that acts as a mailman; receives information about encountered knowledge and passes it off to all event handlers subscribed to that topic.
-
-
Essentially, there is a database that stores all the achievements in the game, alongside a boolean value for locked or unlocked and some contextual information such as when they were unlocked. There are event handlers that wait for events to happen to unlock achievements and event handlers that wait for unlocked achievements to pay out rewards. Every event is filtered through the MessageBus and sent out to the relevant entities. This way, the only achievement code scattered everywhere are single MessageBus.subscribe("topic") lines.
-
-
an example
-
Let's say you get an achievement for finding the Nurse's Office. The moment the player loads into the Nurse's Office, data will zip back and forth between the MessageBus and the nurse's office object, different event handlers and the Knowledge Base.
(Event Handler) At ready, event handlers call the MessageBus and subscribe to topics.
-
(Nurse's Office) The player enters the Nurse's Office. The room object sends itself to the MessageBus.
-
(MessageBus) Receives room object + sends it to all event handlers subscribed to the "place_entered" topic.
-
(Event Handler) NursesOfficeEntered receives room object. If the room is the Nurse's Office, send its corresponding knowledge key to the MessageBus. It can also verify pre-requisites and gather additional data for the Knowledge Base. This way, the system supports anything I'd like to track about when or how knowledge was learned.
-
(MessageBus) Receives the knowledge key + sends it to the Knowledge Base.
-
(Knowledge Base) Finds the knowledge identified by the incoming key. "Learns" by setting that knowledge to true and filling in additional fields if extra data was sent. Sends the knowledge key to the MessageBus.
-
(MessageBus) Receives the knowledge key + sends it to all "learned" event handlers.
-
(Event Handler) KnowledgeLearned receives the knowledge key + calls code for any changes resulting from learning this knowledge. Maybe you'll get a Steam achievement, but if the Knowledge Base was being to facilitate game progression, a quest could update, the dialog system could unlock the option to ask about the Nurse's Office, or you could gain a Codex entry about the new location. The changes can be conditional, too, so the handler can track whether all necessary keys have been received before enacting the change.
-
-
-
To use the achievement system for cyclical world events, you could trigger knowledge to be "forgotten" or ultimately set back to false in the Knowledge Base. This way, the phases of an event could begin anew.
-
-
-
summary
-
Achievements can come from any combination of in-game actions, so an achievement system should be designed separately from the rest of the game. I achieve this through a couple of separate objects.
-
-
-
Event Handlers: The tracking, verifying, and reward payout should be contained within event handlers, which can be generated and freed as needed. They subscribe to general topics and wait for their specific event to occur.
-
The Knowledge Base tracks the status of all knowledge in the game and can be used to understand how far the player and world have progressed.
-
The MessageBus is very light and only allows event handlers to subscribe to topics and for incoming message to be transmitted through that topic. It has absolutely no unique checks or code to execute, impartially delivering mail to the address on the envelope.
-
Another set of event handlers is concerned about the outcome of encountering and learning knowledge and can prompt changes or directly impact other systems, depending on pre-requisites met.
Designing an achievement system without any octopus tangles.
-
-
a trusty mailman
-
Octopus-tangling is a major design concern for a system that is so interconnected with every other system. I could scatter achievement code through every other system, but that would be a problem if I ever need to make a fundamental change to the achievement system. Also, tacking achievement code everywhere will make the other systems cluttered.
-
-
Instead, Blessfrey's achievement system is broken into three main, self-contained pieces: event handlers, the Knowledge Base, and the MessageBus.
-
-
Let's define the terms:
-
-
-
knowledge: each granular action or world event that contributes to earning an achievement
-
key: an id number that identifies a piece of knowledge
-
topic: just arrays of keys; used to categorize knowledge into groups
-
event handlers: they subscribe to topics, waiting for news that a specific piece of knowledge has been encountered
-
Knowledge Base: a singleton that stores all knowledge and facilitates the learning and forgetting of pieces of knowledge.
MessageBus: a singleton that acts as a mailman; receives information about encountered knowledge and passes it off to all event handlers subscribed to that topic.
-
-
Essentially, there is a database that stores all the achievements in the game, alongside a boolean value for locked or unlocked and some contextual information such as when they were unlocked. There are event handlers that wait for events to happen to unlock achievements and event handlers that wait for unlocked achievements to pay out rewards. Every event is filtered through the MessageBus and sent out to the relevant entities. This way, the only achievement code scattered everywhere are single MessageBus.subscribe("topic") lines.
-
-
an example
-
Let's say you get an achievement for finding the Nurse's Office. The moment the player loads into the Nurse's Office, data will zip back and forth between the MessageBus and the nurse's office object, different event handlers and the Knowledge Base.
(Event Handler) At ready, event handlers call the MessageBus and subscribe to topics.
-
(Nurse's Office) The player enters the Nurse's Office. The room object sends itself to the MessageBus.
-
(MessageBus) Receives room object + sends it to all event handlers subscribed to the "place_entered" topic.
-
(Event Handler) NursesOfficeEntered receives room object. If the room is the Nurse's Office, send its corresponding knowledge key to the MessageBus. It can also verify pre-requisites and gather additional data for the Knowledge Base. This way, the system supports anything I'd like to track about when or how knowledge was learned.
-
(MessageBus) Receives the knowledge key + sends it to the Knowledge Base.
-
(Knowledge Base) Finds the knowledge identified by the incoming key. "Learns" by setting that knowledge to true and filling in additional fields if extra data was sent. Sends the knowledge key to the MessageBus.
-
(MessageBus) Receives the knowledge key + sends it to all "learned" event handlers.
-
(Event Handler) KnowledgeLearned receives the knowledge key + calls code for any changes resulting from learning this knowledge. Maybe you'll get a Steam achievement, but if the Knowledge Base was being to facilitate game progression, a quest could update, the dialog system could unlock the option to ask about the Nurse's Office, or you could gain a Codex entry about the new location. The changes can be conditional, too, so the handler can track whether all necessary keys have been received before enacting the change.
-
-
-
To use the achievement system for cyclical world events, you could trigger knowledge to be "forgotten" or ultimately set back to false in the Knowledge Base. This way, the phases of an event could begin anew.
-
-
-
summary
-
Achievements can come from any combination of in-game actions, so an achievement system should be designed separately from the rest of the game. I achieve this through a couple of separate objects.
-
-
-
Event Handlers: The tracking, verifying, and reward payout should be contained within event handlers, which can be generated and freed as needed. They subscribe to general topics and wait for their specific event to occur.
-
The Knowledge Base tracks the status of all knowledge in the game and can be used to understand how far the player and world have progressed.
-
The MessageBus is very light and only allows event handlers to subscribe to topics and for incoming message to be transmitted through that topic. It has absolutely no unique checks or code to execute, impartially delivering mail to the address on the envelope.
-
Another set of event handlers is concerned about the outcome of encountering and learning knowledge and can prompt changes or directly impact other systems, depending on pre-requisites met.
-Artfight is an online art game every July. You post profiles for your original characters then go off browsing to find someone else's character to draw. Everyone's sorted into teams and each "attack" or drawing is valued for a certain number of points, so one side wins at the end of the event. You don't get anything for winning, and people game the system so bad that it's hard to even care about the competitive side of the site.
-
-
It's more fun to approach the game with your own personal challenge. I know a lot of people try a new style or technique during this month, like my friend trying single-layer digital paintings. My personal approach this year is thematic. I'm drawing cute couples! I don't usually draw boys, so it's a good compromise if his girlfriend will be in the frame, too. Also, more characters per attack = more points!
-
-It's a huge community, so at least a few people are bound to draw your characters, which is such a fun surprise when it happens. Some people like to make art in return for people who attack them, too, as thanks. Their discord is probably the best place to get attention, but it's intimidatingly fast for me.
-
-
my attacks
-
These are the characters I drew.
-
-
-My pixelart of Lune_Archon's Sano Amaterasu, a horned goddess with her harp. (75x75px, 45 colors)
-
-
-
-My pixelart of Skye_0723's Aisu and Luna Starleaf, a winged warrior and his druid wife who can turn into a pink unicorn. (163x157px, 79 colors)
-
-
-
-My pixelart of EmmArrGus's fisherman Brody and his shark girlfriend Char. (150x123px, 54 colors)
-
-
-
-My pixelart of BlackReshiram's Lilac, a fluffy pink dragon girl. (51 colors)
-
-
my defenses
-
These are my characters, drawn by other people.
-
-CawfeeCakes's bust of Rune. He's so sad, he's droopy!
-
-
-Lune_Archon's bust of Tessa with a vampy lip!
-
-
-BlackReshiram's illustration of Abbey in an adorable style!
-
-
-
do you recommend this game?
-
It's one of the more fun art communities these days. A lot of communities have turned completely business-minded or are littered with off-topic content. Artfight, however, is necessarily interactive and collaborative, more like how art communities felt in the 10s. I try to play every year to motivate myself to draw more, especially things outside my comfort zone of cute girls.
-
-
This community has a lot of overlap with Toyhouse and Tumblr, though, so don't be surprised if you keep running into massive text walls of character permissions and "original character donut steal" warnings. There's also a wide range of ability. I see everything from grainy photos of lined paper to Tearzah copycat artists to university illustration students. It feels like old DeviantART in that respect.
-
-
You should know that the servers reliably crash during the first week of July every year, so if you do want to play, prepare during June. Upload a few characters and their reference pictures, find targets you'd like to draw, and save their usernames and reference pictures. Even if the servers crash, you've got everything you need for a few days.
-Artfight is an online art game every July. You post profiles for your original characters then go off browsing to find someone else's character to draw. Everyone's sorted into teams and each "attack" or drawing is valued for a certain number of points, so one side wins at the end of the event. You don't get anything for winning, and people game the system so bad that it's hard to even care about the competitive side of the site.
-
-
It's more fun to approach the game with your own personal challenge. I know a lot of people try a new style or technique during this month, like my friend trying single-layer digital paintings. My personal approach this year is thematic. I'm drawing cute couples! I don't usually draw boys, so it's a good compromise if his girlfriend will be in the frame, too. Also, more characters per attack = more points!
-
-It's a huge community, so at least a few people are bound to draw your characters, which is such a fun surprise when it happens. Some people like to make art in return for people who attack them, too, as thanks. Their discord is probably the best place to get attention, but it's intimidatingly fast for me.
-
-
my attacks
-
These are the characters I drew.
-
-
-My pixelart of Lune_Archon's Sano Amaterasu, a horned goddess with her harp. (75x75px, 45 colors)
-
-
-
-My pixelart of Skye_0723's Aisu and Luna Starleaf, a winged warrior and his druid wife who can turn into a pink unicorn. (163x157px, 79 colors)
-
-
-
-My pixelart of EmmArrGus's fisherman Brody and his shark girlfriend Char. (150x123px, 54 colors)
-
-
-
-My pixelart of BlackReshiram's Lilac, a fluffy pink dragon girl. (51 colors)
-
-
my defenses
-
These are my characters, drawn by other people.
-
-CawfeeCakes's bust of Rune. He's so sad, he's droopy!
-
-
-Lune_Archon's bust of Tessa with a vampy lip!
-
-
-BlackReshiram's illustration of Abbey in an adorable style!
-
-
-
do you recommend this game?
-
It's one of the more fun art communities these days. A lot of communities have turned completely business-minded or are littered with off-topic content. Artfight, however, is necessarily interactive and collaborative, more like how art communities felt in the 10s. I try to play every year to motivate myself to draw more, especially things outside my comfort zone of cute girls.
-
-
This community has a lot of overlap with Toyhouse and Tumblr, though, so don't be surprised if you keep running into massive text walls of character permissions and "original character donut steal" warnings. There's also a wide range of ability. I see everything from grainy photos of lined paper to Tearzah copycat artists to university illustration students. It feels like old DeviantART in that respect.
-
-
You should know that the servers reliably crash during the first week of July every year, so if you do want to play, prepare during June. Upload a few characters and their reference pictures, find targets you'd like to draw, and save their usernames and reference pictures. Even if the servers crash, you've got everything you need for a few days.
-april 29, 2021
-#ai #knowledgebase
-
-My patrol routes look like a series of waypoints (Position2Ds) which are the children of a patrol (Node2D). The patrol node is in a group named after the patrol route. Whenever the enemy decides to patrol, adds all the waypoints into an array. The nearest waypoint is set as the enemy's next point. The enemy then pathfinds by building a constellation of dots leading to that next point and moves fowards. To determine whether it is successfully moving towards or has reached the next point, the Knowledge Base is called in to help.
-
-The Knowledge Base is a system of event handlers and a message bus used originally to accomodate achievements. Since it is a clean, self-contained system that is aware of and can respond toevery event that happens in the game, it has grown to be the driving force behind dynamic events and game progression.
-
-
fast explanation of the knowledge base
-
-Essentially, individual, granular events are assigned a knowledge key. The Knowledge Base stores all knowledge in the game. Upon the encounter of a key in the wild, the key is used to "learn" a piece of knowledge by the Knowledge Base. Event Handlers are subscribed to the MessageBus, and once certain pieces knowledge are learned, they can generate an outcome.
-
-So let's say every tea has a unique knowledge key. Upon drinking mint tea, the "item_used" event is passed to the MessageBus, the Knowledge Base learns the "mint_tea" knowledge, and the tea achievement event handler takes note. The Knowledge Base groups all the tea knowledge arrays into the tea category. Once the tea category is complete, the tea drinker achievement is awarded to the player.
-
-I discuss its design and use more in other articles.
-
-
why involve the achievement system?
-
-The character or its AI could track its own proximity and vectors, but tying character movement into this achievement system allows more creativity in how the game world can respond to patrols. When event handlers can listen for certain characters to reach certain points, events like having guards switch shifts or get suspicious of missing buddies can happen naturally instead of being hard-coded. I could even do silly things like have an "Arbiter of Left" who censures any character who moves left within his zone. At the very least, I could do what many games do and include a step counter somewhere in a statistics menu.
-
-
getting back into the patrol flow
-
-So, to determine the enemy's progress towards reaching the next point, the enemy's going to generate an event handler for the "moved" event upon entering the patrol state. This event handler is going to be subscribed to "moved." Every time the enemy moves, it's going to publish "moved" and itself to the MessageBus, so the event handler can be notified. The event handler is going to take the enemy and evaluate whether it's reached the next point or an intermediary dot yet. The handler can also evaluate whether it's on course. Once the event handler knows how the enemy's doing, it will shoot off the appropriate signal.
-
-The enemy's AI will receive the signal and respond. If it's arrived at the next point, it will get the index of the current next point (the child order of the patrol node) and set the waypoint at the following index as the new next point. Then it can repeat the process of moving to this next point. If the AI finds out the enemy isn't on course, if can check to see if it's stuck on the terrain, affected by a paralysis status effect, or being pushed around by other characters, then respond appropriately.
-
-
pathfinding and moving
-Pathfinding is mostly handled by the Godot Engine, but there's an important distinction to maintain between the waypoints that form a patrol route and intermediary pathfinding points between a character and a waypoint. Lack of clarity in my design led to a few weeks of confusion.
-
-The "path_to_object" method handles finding a path between the character and goal point. It sets the given object as the next point and sets the character's "dots" as the discrete line between itself and the next point. These dots are determined by the zone's Navigation2D's built-in get_simple_path method. The dots are stored in the state machine. Upon getting new dots, it sets its current dot by popping the front dot off the array. The patrol state, every time Execute is called, sets the enemy's velocity as the current dot - the character's global position. It also published "moved" to the MessageBus for the event handler to handler. To actually move, the enemy's KinematicBody2D calls move_and_collide from its _process method with the parameter get_velocity() * get_speed() * delta.
-
-
cleaning up
-
-Since the enemy might switch out of the patrol state at any moment, the setup and teardown are important. I also was sure to use signals when communicating to the patrol state instead of direct calls.
-
-Every state in Blessfrey is structured into an Enter, Execute, and Exit method. Enter is called once upon state transition, Execute is called every time the AI's timer ticks, and Exit is called once upon transitioning out of the state. The Enter and Exit are where setup and teardown are called respectively.
-
-The setup instances the moved handler, subscribes it to "moved" through the message bus, and connects all the necessary signals between the event handler + patrol state and the patrol state + state machine. The teardown disconnects all these signals and unsubscribes + queue_frees the event handler. That way, all loose ends are tied up.
-
-
finally - the enemy patrol!
-Finally got the enemy patrol into the game. It required a redesign of the character movement system, the development of new features for the Knowledge Base, and tons of debugging, but I'm pretty happy with my little enemies. Next, I'll refactor movement, since there's still some fragments of the old movement system cluttering my AI scripts, but after that, I'll try publishing a release version for HTML5 to put up on my website. Looking forward to it!
-
-
-Last updated April 30, 2021
-
diff --git a/src/diary/hold/attackmovingtarget b/src/diary/hold/attackmovingtarget
deleted file mode 100644
index 3e6b5c5..0000000
--- a/src/diary/hold/attackmovingtarget
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
how to attack a moving target
-july 8, 2021
-#ai #character #combat #design #movement
-
-I'll share my tentative design for the attack-movement loop.
-
-The attack-movement loop needs to allow the character maintain attack range while attacking. The flow is complicated to follow, but this is how it works for now:
-
-The code is color-coded by object. Warm gray is input, orange is the character's action module, yellow is the character, yellow-green is the character's equipment module, blue-green is the attack handler, blue is the AI's attack module, purple is the AI's movement module, pink is the AI, brown is the KnowledgeBase's MessageBus, and cool gray is the character's kinematic body.
-
-
the loop explained
-Upon attack input, the character sets up for attacking and creates an attack timer. On timeout, the character's weapon swings. If the character is out of range, the "out_of_range" signal is emitted. Otherwise, the weapon successfully swings, either emitting "target_dead" or "hit."
-
-The AI receives these signals. If the target was out of range, it sets up to follow attack target.
-
-Every AI tick, it prompts the character to pathfind to the target then sets the character's velocity to the current_dot (the first node the character is trying to reach in path) minus the character's global_position.
-
-Every frame, the character's _process(delta) method calls move_and_collide with velocity * speed * delta. If the character's velocity isn't 0,0, the "moved" event is published to the Knowledge Base's MessageBus.
-
-The movement handlers are subscribed to "moved," and will emit signals if the character reached either the next waypoint (the target or the chosen goal point at the end of the path) or the current dot (the first point along the pathfinding between the character and the goal point).
-
-The AI receives these signals. If the next waypoint is reached, it's removed from the list of waypoints, the "arrived_at_attack_target" signal is emitted, and movement is cleared.
-
-Then the AI receives the "arrived_at_attack_target" signal and prompts the character to begin the attack all over again.
-
-
in-game
-It works in-game, too, but it's pretty janky, especially without animations. If the slime is slow enough, the player character attacks until it gets too far away, moves back in range, and continues attacking. If it's too fast, though, she never gets to attack and jitters constantly after the slime.
-
-Too fast:
-
-
-I'll work it out sooner or later, dependent on how hectic moving turns out to be.
-
-(By the way, that's my first gif recorded and edited entirely in ffmpeg. It's not pretty, but at least I could write my own bash script without relying on copypasta forum code this time. I was trying to follow the documentation website before, but it's arcane. The man page is much easier to understand and search through.)
-
-
-Last Updated November 13, 2021
-
diff --git a/src/diary/hold/blessfrey b/src/diary/hold/blessfrey
deleted file mode 100644
index 50d9c94..0000000
--- a/src/diary/hold/blessfrey
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
what is blessfrey?
-august 6, 2020
-#game
-
-Blessfrey is a 2D action RPG developed for PC by Chimchooree.
-
-
a Godot Engine action rpg inspired by Guild Wars 1's class and skill systems, which were in turn inspired by Magic: The Gathering. You will amass a large library of skills through exploration and practice, but you may only take 8 with you into combat. You will also befriend AI companions and manage the skillbars of your team. Plan synergies and team strategies to overcome each challenge. Enemies will be have skillbars of their own, so the same skillbar won't work everywhere! No decision is permanent, so experiment to your heart's content.
-
-
Okay, I lied. Blessfrey also has a dual job system. The job you pick at character creation is permanent, but you can take a second as a side gig. Change your side gig frequently to find the best combinations!
-
-
Blessfrey is a dungeoncrawler, so you will find some shops and quests in the hub town, but the local dungeon is deep and full of mysteries to uncover. I started working on it to learn a wide range of programming concepts (games are very complex software) but also to realize my dream game (because what gamer doesn't have a dream game?).
-
-
I'll put an HTML5 demo up here soon-ish. Keep checking! Learn more on the Blessfrey page.
-
-
-
-
-
-
-The game is designed to pit your skill and creativity against a series of combat and puzzle challenges while exploring the depths of the downtown dungeon.
-
-Class progression is free-form, and virtually no decision is permanent. At character creation, you will choose a permanent First Class, but you can unlock new classes for multiclassing during gameplay. Swap out Second Classes to find a combination to overcome challenges and express your playstyle.
-
-Each class has its own style of skills associated with it. Skills are individual powers gained through gameplay which give specific effects. Your skillbar only has 8 skill slots and can only be edited in safe areas. The challenge comes from discovering effective strategies and synergies against the next area.
-
-Skills are gained during exploration. As you find new areas, encounter enemies, and interact with your surroundings, you will internalize those experiences as new skills. There are multiple paths to learning, so you are free to focus on your favorite parts of the game.
-
-Blessfrey has been lots of fun to work on. I hope you enjoy it once a demo and eventually a game drops.
-
-Last updated June 8, 2021
-
diff --git a/src/diary/hold/blessfreyscreenshots b/src/diary/hold/blessfreyscreenshots
deleted file mode 100644
index 70a6565..0000000
--- a/src/diary/hold/blessfreyscreenshots
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
blessfrey graphic updates + mockups
-december 24, 2020
-#mockups #screenshots
-
-I iterate over the graphics periodically, so I can practice without worrying about polish. Here's some screenshots of different styles I've tried. (Though April 23, 2019's is actually a mockup, that style did run in-engine for a few weeks.)
-
-
-
-
-
-August 15, 2018 - Early experimenting with Godot Engine. Collision was just added for sprites and walls. The buttons to the right are for switching between characters (who each have different skillbars).
-
-
-
-
-January 13, 2019 - Videogame perspective is so different from perspective in illustration. Scale of characters vs environment is another quirk of games I had 0 experience with. I was vaguely going for an old Western RPG style with tall, somewhat realistic sprites with non-distinct faces. Something like Divine Divinity.
-
-
-
-
-April 23, 2019 - This is a mockup, but the game did look like this for a while. The fireball projectile didn't come until later, though. Here, I was trying to get a little more of a top-down view but not really. Instead of cats, Angel's fighting with a coyote. The government stopped removing coyotes from my old neighborhood, so they killed all the neighborhood cats except one and I saw him running away from a big coyote during a storm, so maybe he's gone now, too. It's just not right.
-
-
-
-
-May 25, 2019 - The slanted edition was so annoying. It's not isometric, it's just at an obscure angle because I drew these assets more for fun than to actually be practical. I do reuse the tree + bushes a lot, though. I also tried a more chibi sprite because they are soo common, might as well try it out.
-
-
-
-
-June 29, 2019 - Trying a shopping center level now. It's reeally spaced apart. It's inspired by a real shopping center;;
-
-
-
-
-July 25, 2020 - There's some missing in this gap, so I'll add in more pics if I find any. This is the first version of a cavern level for the blessfrey demo. It's inspired by local caves.
-
-
-
you're up to date.
-
-Hope you enjoyed seeing the different art I've used for blessfrey over the years. Even if I never really polish anything, it's nice to iterate to get a sense of game art and blessfrey's personal style. Hopefully it ends up looking okay okay when I do start polishing. But until then, in the words of YandereDev, "All art is placeholder."
-
diff --git a/src/diary/hold/churchgirlsanimalparade b/src/diary/hold/churchgirlsanimalparade
deleted file mode 100644
index cfdd4ff..0000000
--- a/src/diary/hold/churchgirlsanimalparade
+++ /dev/null
@@ -1,117 +0,0 @@
-
-
church girls + animal parade: a collection in two parts
The pandemic drags everything out, so these two collections run together.
-
-
-
two in one
-
I need new clothes for myself.
-he two themes belong together. Meditating over the introspective and the expressive, hiding away and being open, the old and the new. They come bundled with transformational passages of Scripture.
-he two themes belong together. Meditating over the introspective and the expressive, hiding away and being open, the old and the new. They come bundled with transformational passages of Scripture.
-The pandemic drags everything out, so these two run together.
-
-
church girls
-
Church girls comes from my personal apparel history. Growing up, most of my clothes were the older girls from church's castaways. I retained a majority hand-me-down wardrobe through my post-graduation internship. I never felt embarrassed about it. Actually, I enjoyed looking unique, wearing nothing you could buy in a store. One lady told me I looked like I was from a different era. (Insult maybe, but I loved that.) Other hand-me-downs became so old they were once again on the cusp of a trend.
-
-
Many of my hand-me-downs were banished to the back of the closet as I got to buy my own clothes and participate in street fashion for the first time on a college campus. My outfits got very dainty with sheer and uncomfortable fabrics, complex layering, and a general lack of practicality. The pandemic knocked that out of me quickly, and I retreated back into my old, floppy, cotton hand-me-downs and stolen t-shirts from my husband. This time with the clothes, I was older and more aware of things. They became a symbol of neglect and pity. None of them were chosen by me or my parents, and many were from people I barely knew. I was well-dressed for the depressive, disassociative state of the world.
-
-
When the town began to open back up, I had a reason to dress up again but saw nothing both exciting and comfortable. Most of the clothes I made had been given away or broken down into scraps. I hadn't sewn for myself in ages anyway. My last set of hand-me-downs were starting to deteriorate beyond repair. Left with some chiffon blouses and rayon skirts, it was finally time to sew and dress for me again.
-
-
Church girls's theme is finding appreciation again for the anachronistic, cultural melting pot of my old hand-me-down wardrobe. There are clothes from the 00s, 90s, and proper vintage eras; from American families but also Mexican and Panaman families; and from mass retail, luxury, and home seamstresses. Also, they aren't just stuff that looked good in a store - they are care items that were set aside for me by people in my community.
-
- For the capsule collection, I immortalized my favorite old clothes as reverse-engineered patterns. With the original garments, I am creating clothes that are finally me but flavoring them with discordant sources of inspiration and sentimentality. I take each design's name from scattered memories.
-
-
I wasn't prepared to unlock a 00s fashion time capsule when I found a copy of Animal Parade. It's not like Hikari epitomizes the era and I never liked that style back then, but her cami layered over a basic tee and bulky cargo pockets has a hold over me. It's a mix of fresh and nostalgic. It brought to mind some of the silly and hyper-girly outfits Hillary Duff wore. She wore layers and comfy cottons all the time, too. Maybe people would cringe at her old outfits, but they were undeniably fun.
-
-
Pre-AP, I wore camis and biker shorts for modesty under fussy chiffons. My foundation was decidedly neutral. There's something expressive and carefree about wearing these purely functional elements on top and in cute colors. Even these 'boring' garments can be special. It was a line I needed to be led across in my life. This speaks to me in several different directions. Rejoice always. It's okay to be playful. Whatever you do, work heartily, as for the Lord. Even drudgery is an area for personal growth and exploration. I was sad for a long time, but seamstress's block has finally lifted.
-
-
The animal parade capsule collection is what Hikari is to me: individualism in each layer, joy in adding details, and amiable natural fibers. I name each design after significant animals in my life.
-
-
-
-
-
let's appreciate what we have!
-
Don't go through the motions. If you have anything super cool like a website, don't just use it how you're "supposed" to use it. Put your stuff to work and have fun!
-
-
-Last updated July 28, 2022
-
-
-
-
-
-
-
-
The two themes belong together. Meditating over the introspective and the expressive, hiding away and being open, the old and the new. They come bundled with transformational passages of Scripture.
-
-
I will extol you, O Lord, for you have drawn me up
- and have not let my foes rejoice over me.
-O Lord my God, I cried to you for help,
- and you have healed me.
-O Lord, you have brought up my soul from Sheol;
- you restored me to life from among those who go down to the pit.
-Sing praises to the Lord, O you his saints,
- and give thanks to his holy name.
-For his anger is but for a moment,
- and his favor is for a lifetime.
-Weeping may tarry for the night,
- but joy comes with the morning.
- (Psalm 30:1-5)
-
-
My beloved speaks and says to me: "Arise, my love, my beautiful one, and come away, for behold, the winter is past; the rain is over and gone. The flowers appear on the earth, the time of singing has come, and the voice of the turtledove is heard in our land.
- (Song of Solomon 2:10-12)
- >
-
-
-Bomber: I've had a favorite light rayon bomber jacket for 10 years, but it's wearing out and has some weird bleach stains. This is basically a knockoff of a BB Dakota design. This one is a shiny pink polyester (a lustrous exception to my natural fiber rule) with multicolored lace trim, a metal zipper, and a beige drawstring. I think I can keep the old BBD jacket, too, but it needs embroidery or appliques over the stains.
-
-Bodice: This is a light layering top made from batiste. It will have ruffles at the shoulders and long straps from the waist to wrap around and tie in a bow.
-
-Kimono: I have a favorite purple floral chiffon kimono that has a fraying seam. After three repairs, it needs a semi-retirement. This design but with rayon batiste and a dark inky print...if Mood ever restocks the Penitentiary Block print!
-
-泣き虫 (Cry Bug): An oversized poplin button-down with short sleeves and an oversized beetle print. It has black piping along seams, a pocket, and black glass shank buttons. The fit is meant to resemble your dad's shirt where the short sleeves come down too far, the armholes are too deep, and the pocket is too big, but the collar and length will be appropriately proportioned for me. It's white with an oversized print that visually plays up the unusually large proportions of the shirt. The piping and glass shank buttons remain the correct proportions, though.
-
-Mock Turtle: There's three light mock turtlenecks. This is my favorite staple, but I lost my charcoal gray one 2 moves ago. (RIP) One will be a foil knit with thumbholes, one is a striped knit, and one is a 4x2 rib knit.
-
-
-
-
-
-Pants: Straight-legged plaid linen pants with a fly-front closure, belt loops, side pockets, and blind hems. Linen feels great in the summer and lends itself to a well-tailored staple.
-
-Shorts: Two pairs of linen shorts, one with stripes and striped fringe ribbon trim and the other with a dragon fruit print and cuffs and a bow belt.
-
-
-
-
-Swimsuit: The one piece swimsuit is made out of pastel seafoam and pink neoprene with pops of sulfurous yellow in an abstract swampy design. I actually lived around wetlands for most of my life, so it's cool to see a wetlands design instead of another tropical beach or flowering meadow print. It has long sleeves, a mock turtleneck, and an invisible zipper at the center back. The focus is the obi belt made from a contrasting black neoprene. There are three panel-and-tier ruffles over the bottom to give some illusion of volume against the closely-fitted belt and top without adding more unnecessary bulk. I'm not 100% on materials yet and may need to bring in a thinner swimwear tricot for the layers.
-
-Pajama sets: The pajamas are not my design. They are basically knock-offs from Yahoo! Japan shopping, since I don't feel like importing mall-tier pajamas. (The originals are Japanese-style yukata-style long sleeve pajama set for spring and fall from OPEN-CLOTHES and summer pajama set for ladies in their 20s with flared collar and cute short sleeves from kittyshop.) The only real design change is using oversized rick rack instead of ruffles on that second set. Pajamas are the most pressing sartorial area in my life in which I need a self-assertion. People like to gift me pajamas, but they always ask me my size then buy a size or two down. Why won't anyone believe I'm not an XS! The one time I got something that fit, it was unwearably heavy fleece for my year-round hot climate. I don't want to be ungrateful or wasteful, though, so I've either crammed myself into tiny pajamas or sweated since I was little. That's so silly, especially now that I'm an adult. There's beautiful but unused jacquard fabric hanging in my closet. There's nothing stopping me from turning it into cute Japanese jacquard pajamas that actually fit.
-
-
pattern-making and sewing so far
-I'm working on the 泣き虫 button-down shirt first, but while waiting for the buttons to arrive, I went ahead and got one version of the mock turtleneck pattern done.
-
-
-
-
-
-
-
-I'm in the middle of sewing the button-down. The sleeves are cuffed and reinforced with interfacing (finally available again after the early pandemic mask-making frenzy) and decorated with the piping. Next, I'll set the sleeves in and work on the button placard.
-
-
-
-
-
designer
-
I'm chimchooree! I love the full process of apparel construction, but pattern-making has always been my favorite. Like any designer, I view fashion in terms of defining the problem and solving it. The creative side of my designs are led by meaningful themes, selecting for having relevance to both the temporal and metaphoric season I'm in, diverse concepts to draw from, and a consistent core to tie everything together.
-
-
design statement
-
The best clothes might very well be the ones you already own. We are called to be good stewards of the earth, so I encourage you to have your clothes repaired, altered, or customized whenever possible.
-
-
But if I'm going to make new clothes, I'm going to design them to be irreplaceable. They will be thoughtfully designed and made with professionalism, personality, comfort, and durability in mind. I shoot for daywear that handles being thrown in a washing machine no problem, and try to keep my designs easy to alter.
Demonstrating coroutines in Godot Engine with a simple application.
-
-
-
defining coroutines
-
Coroutines are functions that, instead of running to completion, yield until certain criteria are met. Godot Engine supports coroutines through yield(), resume(), and the GDScriptFunctionState object.
-
-
why use a coroutine?
-
Coroutines allow for scripted game scenarios that respond dynamically to the player and the changing game world. They let you bounce between functions, step-by-step, and respond to interruptions. This means functions can be automatically called at the completion of other functions, animations, player actions, in-game events, or timers. Add in interruptions and conditionals, and you have a tool for building a responsive game world.
-
-
stoplight example
-
As a simple demonstration, I made a stoplight. Follow along with my code on GitLab.
-
-
The light changes every few seconds, going from green, yellow, then red. The light changes immediately if the walk button is pressed. This demonstrates that methods can wait for criteria (a timed duration in this case) to be met before resuming, and they can be influenced by player action.
I have a TextureRect background, an AnimatedSprite stoplight, a Sprite walk button with a TextureButton, and a label for displaying a timer. Most of the code is attached to the root. It's better to have code closer to where it's being used and to mind your separation of concerns in real projects, though.
-
-
animation
-
-
The light is changed by setting its animation to one of these options. Each is one-frame - just the stoplight with the one or none of the lights colored in.
-
the code
-This project has two scripts: Main.gd, which is attached to the root node, and Label.gd, which is attached to the Label.
-
-
At _ready(), wait() is assigned to the GDScriptFunctionState result and is called for the first color, green. _ready() yields until wait() is completed.
-
-
The wait method yields for the given amount of seconds then sets the stoplight to the given color.
-
-
At wait()'s completion, _ready() calls wait() for yellow, then red. Each is called one at a time, waiting for the color to complete before moving on.
-
-
interrupting the stoplight
-
The Wait Button interrupts the wait times between colors. Before _ready() yields, it connects the 'pressed' signal on the Wait Button.
-
-
If the Wait Button is clicked during wait()'s yield, the GDScriptFunctionState result resumes immediately, ignoring wait()'s yield timer. This time, result has a string arg "interrupted on green," so it will print the result, change the stoplight's color, then print "done: green." The wait method is complete, so _ready() resumes and calls wait() for the next color.
-
-
play it yourself
-
-
-
applications
-
The outcomes in this example can be swapped out with anything. I use coroutines in Blessfrey's skills to manage the flow of phases from activation, different phases of effects, cooldown, and interactions with any counters. I also use it in the basic weapon attack so the character continuously swings at the rate of his attack speed until he cancels, uses a skill, or moves. It could also be used for something like cars that stop and honk when the player walks in front of them then drive off once the path is clear. Anything influenced by other entities is a good coroutine candidate.
-
-
Coroutines enable practical ways to improve the flow and interactivity of games, so practice the concept a lot!
-
-Filling out Iciaa's questionnaire for Dia because I'm feeling nostalgic for these overly long questionnaires. Also, Dia isn't that detailed of a character yet.
-
-1. What is your character's name? Do they have a nickname?
-Diana "Dia." She may be mayor, but Lucrest is so small and Dia is so young that she had no hope of expectation of getting all the boomers to address her by her title and surname.
-
-2. Is your character male or female? What is their sexuality? What role does it play in your story?
-Female, straight. She isn't above manipulating guys' feelings to get what she wants.
-
-3. How old is your character? Does their age matter to them emotionally or socially?
-28. It's the age my old guild leader was. Seemed like a good year between young and old, inexperienced and wise to me as a high schooler. Dia is the youngest of her highly accomplished family, so she always feels like her progress to too slow or insignificant. She is also younger than the seniors and boomers and older than the kids and looks young for her age, so she never really finds a peer in Lucrest.
-
-4. How tall is your character? Does it affect them negatively, positively, or neutrally?
-She is pretty sure her short stature prevents her from being taken seriously in some circles.
-
-5. What is your character's body shape? Are they physically fit? What challenges or advantages does this present?
-She is fit but too petite for physical combat. Her magic isn't really combat-oriented either. Her henchies have to do the heavy-lifting.
-
-6. Describe your character's facial features. What color are their eyes and hair? Be specific!
-She has refined aristocratic features. Her Mexican heritage falls more on the Polish side than the Aztec side, so she's very fair. She has natural black hair dyed with streaks of navy and silver. Her eyes are dark brown, nearly black.
-
-7. Do other people find your character physically attractive? Why or why not?
-Yes. She is conventionally cute, polite, and knows how to push people's buttons.
-
-8. What sort of clothing does your character wear? What colors are common? What does this style reflect?
-Light, elegant colors, professional but feminine styles, propensity for sparkly or metallic fabrics like lurex or lame.
-
-9. Does your character have any physical or mental disabilities? How does this affect your story? Is it a main point of your plot?
-I'm not going to armchair diagnose her with anything, but she's a jerk.
-
-10. What does your character do for money? If they are unemployed, how do they live? Does money matter to your character?
-She owns 90% of the commercial properties in Lucrest in addition to several miscellaneous small businesses. She's pathetic by her family's standards, but she's plenty wealthy.
-
-11. Does your character have specified family members? Describe their relationship with their family.
-Her father is the vice president of the Confederate States of America. Her older brothers and sisters are tycoons and elite politicians. Her father treats her like the baby of the family, so he never sets the same expectations for her nor shows her the same respect. She's not particularly accomplished anyway. She has a rivalry with her siblings and takes every one-up personally.
-
-12. What is your character's marital status? Are they involved in a relationship? How is this emotional taxation present in your story?
-She actually does have a secret boyfriend, Koda, but he isn't really involved in the story. He's her confidant and very supportive of her behind the scenes.
-
-13. Who are your character's closest friends? How do they know each other? How do they act around each other?
-She doesn't really have close friends besides Koda. Even when she's chummy with someone, she privately views them cynically, either as a tool or an enemy.
-
-14. Who are your character's minor enemies? Why do they not get along?
-I'm fleshing out this part of the story right now. Dia bought a lengthy section of land over Abyssal Cave, which just happened to be an unincorporated community to simultaneously takeover politically as a cover. There are other figures who are trying to control the cave for their own purposes, though. Later, the National Park Service is going to get involved, too.
-
-15. Who are your character's major enemies? How does this affect your plot? What began the animosity of their relationship? How, if at all, is it resolved?
-Helia and her friends. Although secrecy is part of the deal with the "minor enemies," Helia is set to blow everyone's cover. Before she even set foot in the caves, Dia was suspicious the moment she realized she was related to Chuck, a Union vet.
-
-16. How does your character speak, and what does their voice sound like? How does this reflect their personality, if at all?
-Her voice is sweet and high-pitched like a bell. She took speech classes as a child, and it shows in her deliberate articulation.
-
-17. Is there anything significant about your character's movement? Is it important?
-She has perfect posture; she's good at walking silently and sneaking around; I don't know lol no.
-
-18. Who does your character live with, or do they live alone? How does this arrangement affect your character's lifestyle?
-This changes a lot. She's lived with Rune's older sister, her paramour, Angel's dad, and probably others in the future. Get out of her business.
-
-19. What traits does your character value in their friends?
-Someone intelligent, someone who gets where she comes from, someone who respects her.
-
-20. What are your character's main pet peeves? Does this play a role in your story?
-Being belittled, being called cute, being carded for things. It's part of her impetus for purchasing a section of the Abyssal Cave.
-
-21. Where does your character live? Are they happy? Describe the scenery. How does this affect your story?
-She lives in the Mayor's Mansion in Lucrest, Nickajack. It's devastatingly rural and slow compared to the capital, even after she's populated with lots of fake businesses and tourists.
-
-22. What is your character's opinion of the society they live in?
-She's too impatient to worry about the consequences of her actions, especially when they apply to people far beneath her, both in birth and intellect.
-
-23. Briefly summarize your character's childhood.
-She is much younger than her siblings, so she didn't see them much. Unlike a lot of rich kids, her parents actually raised her themselves without a nanny or boarding school. She roamed the National Archives and other legal and political centers growing up. She also had all the fancy private tutoring, social outings, and world travel expected of the daughter of an elite family.
-
-24. What are your character's darkest secrets?
-Hahaha...It wouldn't be murder or plague or blackmail. It'd be that the GDP of her town is falsified, and nearly all the businesses there operate at a substantial loss.
-
-25. Has anyone close to your character died in the past? How did your character deal with this? Did it have a lasting impact?
-Haven't thought about it.
-
-26. What is your character's social status? Are they happy with it?
-She's the daughter of the vice president and the mayor of a nowhere town. No, she's miserable because she could do so much better.
-
-27. Is your character a hero, a villain, or neither? How do they see themselves, as opposed to how others see them?
-Villain for sure. She knows it, but others wouldn't understand how hard it is for her to compete. Others think she's weird but effective.
-
-28. Is your character conservative and disapproving of change, or liberal and willing to accept?
-I don't think this is a very fair definition of conservative and liberal. She's a Democrat, just like her father. She doesn't necessarily carry her views out in Lucrest because she is seeking wealth and power over a career in local politics, but she's a supporter of states' rights.
-
-29. It is said that every character has a fatal flaw. What is your character's?
-She's impatient. She could be every bit as rich and powerful as her siblings if she put in real work, accepted that failures are inevitable, and relied on family and friends more.
-
-30. What are your character's special talents? Are they supernatural, or normal? Can few other people do them?
-She is the only one with the GDP wand, stolen from the magic caves. She can control the hand of the market.
-
-31. What specific activities does your character lack skill for? What challenges does this present?
-Keeping secrets. Competitors and worse had an eye on Lucrest before she did.
-
-32. What are your character's major wishes in life? These are not goals, simply things they wish would happen without work.
-Her dad would approve of her relationship with Koda.
-
-33. When your character looks in the mirror, what do they think of themselves? Is it positive or negative?
-She's definitely nitpicking, rearranging her hair, touching up her makeup, but she's ultimately confident in her appearance.
-
-34. What is your character's most precious material object? What would happen if they lost it? Why is it so important?
-Her magic wand. Unthinkable. Without it, she'd actually have to formulate her own effective economic policies, and she's never tried that before.
-
-35. Is your character more creative, or more logical?
-Maybe creative?
-
-36. What are your character's small flaws? Do they cause annoyance or disdain for your character? What are your character's opinions about them?
-I feel like all her flaws are major.
-I guess she's never real, so she has trouble relating to others. Some people can tell and don't jive with her. Even those who think she's nice or supportive don't feel like friends to her. It's lonely, but she could never be that vulnerable with other people. And besides, she has Koda.
-She also has maturity issues. If someone gets under her skin, she'll hold the pettiest
-
-37. Is your character envied? By whom? Who does your character envy?
-Sure. The older women wish they had her figure, the younger girls wish they had her cool car and stuff, and other mayors can't find a legitimate reason for her success. She envies her siblings and every girl who has something she doesn't.
-
-38. Does your character deceive others often? Do they attempt to deceive themselves? How and why?
-Always. She knows just who will let her get away with stronger coersion, too. She doesn't really lie to herself, though. She knows she isn't a real politician and is afraid of being exposed someday.
-
-39. What is your character's faith? Briefly describe their religion, if it exists. Are they polytheistic or monotheistic? Do they see God(s) as all-powerful, or helpers in the course of fate?
-She's Episcopalian on the Sabbath but lacks a deep belief in God.
-
-40. Describe your character's uncommon beliefs. Do they believe in fate? Karma? Multiple heavens and hells?
-She believes she has a superior genetic background and class and consequently feels entitled to success in life. It's deeply troubling that she's almost 30 and can't find it for herself, even with wild crutches. She also believes in the opposite of soul-mates - soul-enemies and enemies at first sight.
-
-41. Is your character well known or little known? Why?
-She's as well-known as any random daughter of a high-ranking politician who has served in the government for 40 years.
-
-42. Is your character more optimistic, or more pessimistic?
-Aggressively pessimistic. So much so that she rarely relies on others or luck.
-
-43. Does your character have a lot of hope? Are there points in your story in which they lose hope?
-She feels like she's getting away with it. Cracks start to show over time.
-
-44. What traits make your character unique? Do they have special abilities, or a unique facial feature? Be specific.
-Streaked hair, though most of the cast has that. A ridiculous economics-based RPG class. I don't know; I should probably come up with a catch phrase or something.
-
-45. Is your character moody or even? Is there a cause? What are the consequences?
-She keeps it together most of the time, but she gets into slapfights with her predestined enemies.
-
-46. What is your character's mental capacity? Are they brilliant, or slow to learn?
-She's very bright and quick on her feet, but she doesn't trust herself enough to actually use her brain.
-
-47. Does your character sport charisma to influence others? How do they use this? If not, how does it affect them?
-Not really lol. She relies on emotional manipulation. She scopes out weaknesses in those with something that can benefit her by acting like a supportive friend or therapist. She can sniff out troubled families, victims of abuse, orphans, etc, and sink her claws in.
-
-48. What is your character's first memory? Why? What was its impact? Was it good or bad? Describe it in detail.
-Uhhh, I don't know. She remembers her childhood mostly as being alone in archives, reading random meeting minutes and journals; exploring legal offices like mazes; charming government workers with her quiet and studious demeanor into being allowed places other kids were banned from.
-
-49. Are first impressions important to your character? How does your character judge by them? Does your character go out of their way to make a good first impression on others?
-Definitely. She tries to foresee how people will fit into Lucrest. She always does her professional best to make a good impression on everyone.
-
-50. How does your character view authorities? How do they react to taking orders?
-She's scared sick of the ones who work with her dad, and she is cynical of anyone who could view a professional relationship with her as stepping up in the world.
-
-51. What are your character's goals? Long term? Short term?
-Definitely CEO business magnate over an empire. Or something. Just so long as her father's finally proud.
-
-52. What does your character do when they need to relax? Does it work? Does it affect those around them?
-Secret retreat with Koda. Long walks along the scenic avenues of Abyssal Cave. Push the shopkeepers around.
-
-53. What events in your character's past have left major effects? Why and how? Are they good impacts, or bad?
-
-54. What major changes has your character gone through recently? How do the people around them react to this?
-
-55. What are your character's bad habits? Are they major, like smoking and drinking, or minor, like chewing their nails?
-
-56. What is your character a perfectionist about?
-
-57. Who are your character's distant family? Does this play a role in your story?
-
-58. What recent events have strengthened or weakened your character? What do they think of their changes?
-
-59. Who were your character's childhood friends? Do they play a role in your story? How?
-
-60. What major things does your character ignore? Purposefully? Or are they simply ignorant?
-
-61. What are your character's major fears? How does this challenge them?
-
-62. What does your character want that is unusual?
-
-63. What does your character like that is unusual?
-
-64. What is your character's favorite color? Does this reflect their personality? How?
-
-65. Is your character ahead of their time? Behind? At the correct pace?
-
-66. Does your character have much free time? What do they do with it?
-
-67. Does your character have goals that are unattainable?
-
-68. How does your character dream while they are asleep? Vividly? Rarely? Do they frequently have nightmares? Describe some of their dreams.
-
-69. Does your character have health problems? Do they need medication or medical care? How does this challenge them?
-
-70. What are your character's inner fears? Do they tell people about them? Why or why not?
-
-71. What is your character's taste in food? Is this specific to the setting of your story? How does it affect your story?
-
-72. Is your character more selfish, or more generous?
-
-73. What is your character's stress level? Why? What do they do to resolve it?
-
-74. What effects do social pressures, like money and the media, have on your character?
-
-75. Is your character interested in a more lavish lifestyle, or simple?
-
-76. What weather does your character prefer? Why? How do they react when that weather is not present?
-
-77. What is your character's favorite time of day? Why?
-
-78. Of what importance are holidays to your character? Which holidays?
-
-79. What odd traits belonging to your character tend to drive people away? Why?
-
-80. What "walls" are built by your character to accommodate the common phrase, "sometimes you build walls not to keep people away, but to see who cares enough to tear them down," and what effect does this have?
-
-81. Does your character place significant value in common sense? Does your character have a lot of common sense?
-
-82. What is your character's taste in music? Why? Do they make music?
-
-83. Is your character satisfied with their life? Why or why not?
-
-84. What motivates your character to make changes and move forward in life?
-
-85. What are your character's least favorite activities?
-
-86. List several activities that your character will refuse to do and explain.
-
-87. What does your character do to relieve boredom?
-
-88. Is your character more lazy, or more studious?
-
-89. Is your character more athletic and active, or more lazy?
-
-90. Is your character social, or a loner?
-
-91. Does your character attempt to hide their emotion? If yes, how well do they execute their goal? If not, why? What do other people think of your character because of this?
-
-92. What does your character find beautiful? What does your character find ugly?
-
-93. What are your character's redeeming traits?
-
-94. Is your character easily distracted? If so, why, and what challenges does this present? If not, how does this help them?
-
-95. How does your character interact with nature? Why?
-
-96. What are the major lasting effects that your character will tend to have on other people, if any?
-
-97. How self-centered is your character? Why? What do other people think of this?
-
-98. Does your character judge people, and on what premises? Race? Gender? Age?
-
-99. Briefly summarize the major events in the time line of your character's life.
-
-100. Finally, and perhaps most importantly, what is your character's role in the story?
-
-
-Last updated August 31, 2022
-
diff --git a/src/diary/hold/fall22custompalettes b/src/diary/hold/fall22custompalettes
deleted file mode 100644
index cda05af..0000000
--- a/src/diary/hold/fall22custompalettes
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
eyeshadow singles heading into Fall '22
-july 28, 2022
-#offtopic #makeup
-
-
Fall colors and blue.
-
-
my fall
-
The weather may be staying hot through the day, but every morning dip has me feeling this is the day fall finally begins. Eventually. Maybe. Okay, probably not for another month. But at least I have power to choose which colors I wear.
-
-
This is my interpretation moving into fall '22. Initially, I was feeling bronzes. I wanted summer to be the season of bronze, but it never really happened. Bronze is a good seasonal transition (an all-around good color), but I keep neglecting it. Even with this palette, I don't quite have a bronze. What I ended up with is an orange + brown quad and a red + green quad, each with plenty of shifting shadows and shimmers. Not my first plan, but I've loved the unexpected synergies in here. (Is building an 8-pan palette like building a skillbar?)
-
-
-
-
discoveries
-
I use the browns for deepening, the orange as a transition, the multichrome as an eyeliner, and the white for inner corner, halo eyes, or adding an aegyo-sal highlight to the center of my lower lashline. The olive works well for lining under my aegyo-sal (the little bit of fat under my eye), since it's close to a brown already and neutralizes against the many reds and oranges. Red Chameleon pairs with the reds or the greens or buffed into a one-shadow look. I used to use red (Urban Decay Gash) for years in igari-style makeup (think drunk, sleepy, or angry), but intentionally looking ill during a plague just feels socially irresponsible and lost its luster. It's fun to find a new way to work red into looks again. Also, just chocolate and nothing else eyes is pure comfort food.
-
-
Black-based multichromes can look very harsh, but I'm finding using Sundazed over an olive eyeliner base softens it up while retaining the dramatic shift.
Sydney Grace - Chocolate Bar (shimmery dark brown)
-
ColourPop - Limoncello (matte butterscotch orange from the Lil Ray of Sunshine palette)
-
Terra Moons - Sundazed (black-based multichrome that shifts to every color between coppery red to burnished green)
-
Sydney Grace - Queen of Hearts (shimmery red)
-
Sydney Grace - Ivy League (matte olive)
-
Sydney Grace - Red Chameleon (duochrome that shifts green but buffs out brick red)
-
Sydney Grace - Green Mist (white shimmer that shifts green)
-
-
-
blue indulgence
-
This is based on the blue eyeshadow rolling in for fall - any blue, any finish, any style. This one keeps getting suggested season after season by analysts, but Hannah Louise Poston's video has me convinced this time for no reason in particular. Blue is my f-a-v-o-r-i-t-e eyeshadow color (favorite color in general?), particularly a deep but not blackened true navy. My eyes are a relatively vibrant orangy brown, so deep blue makes them pop more than the traditional purple. Since I love blue so much, I have a few different variations of it. Why not put them all into a monochromatic palette and try the other blues more?
-
-
-
-
discoveries
-
Super Star and Below Zero are just as incredible as the navy shadows! Super Star is almost too gorgeous to be comfortably wearable - it catches a lot of attention and compliments. Luna pairs perfectly on the browbone with any of these. In general, it's been fun giving the non-navy blues a shot.
-
-
Eyeshadows in the Sydney Grace 9-pan palette
-
-
Sydney Grace - Super Star (shimmery silvery blue)
-
Sydney Grace - Boy Crazy (satiny cobalt blue)
-
Sydney Grace - Indiana Love (matte navy)
-
Sydney Grace - Below Zero (shimmery indigo with a purple shift)
-
Sydney Grace - Perfect Storm (matte pastel blue)
-
Sydney Grace - Deep Waters (shimmery navy)
-
Looxi Beauty - Luna (not an eyeshadow but an icy blue highlighter)
-
-
-
custom palettes over premade any day!
-
I absolutely adore my palettes this go-around. The fall palette supports my vibe lately - neutral looks, color grounded in neutrals, and aegyo-sal. The blue supports the rest - colorful eyeliners and unstructured swarths of bold color. They're also a mix of favorites, reliables, and colors I never get around to wearing but totally should. Despite all that, I'm pretty sure if I saw an ad for these things, I wouldn't be that interested. No idea what that says about me.
-
-
disclaimer
-
I buy my own makeup and don't have any affiliation with the brands mentioned.
-june 10, 2021
-#ai #character #movement
-
-After redesigning the movement system to support patrols, I realized the path remains static even if the target moves. Time to tweak the design again.
-
-
what must be done
-Autopathing to attack targets, skill targets, and item targets still partially relies on an old version of the movement system. Also, characters never update their pathfinding, so they cannot pursue moving targets. With some changes, the movement system can officially support following any of these targets, no matter where they go.
-
-For now, I'll update the movement system so the character can autopath after a moving item then pick it up once within reach. Since autopathing to items works identically to the others, the fix will be the same, too.
-
-
upgrading the movement system
-I can keep the same system more or less, but one function is going to have to be rewritten: the character's path_to_object method.
-
-Before, it only set the next waypoint and built a path between the character and the waypoint.
-
-
old path_to_object
-# Set Dots Between Character + Given Object
-func path_to_object(goal):
- if goal.is_in_group("waypoint"):
- set_next(goal)
- else:
- room.add_waypoint(goal.get_gpos())
- path_to_position(goal.get_gpos())
-
-# Set Dots Between Character + Given Position
-func path_to_position(goal_pos):
- set_dots(find_dots_pos(goal_pos))
-
-In order to follow moving targets, it needs to use the goal object itself. Also, it needs to be know when to only rebuild part of the path.
-
-
the character receives a waypoint instead of the target, so he is unaware of his target's movement
-It took waypoints instead of the goal in the first place for consistency's sake. Since a target can either be a position (as with click-to-move) or an object (as with autopath-to-item) and the movement system only has one entry point, the old system only accepted objects. So when clicking-to-move, a Position2D waypoint is generated at the global mouse position.
-
-I took the consistency a step further and also generated waypoints at the position of object targets. If the character only has a waypoint, though, he cannot know whether the target is moving. Fortunately, the system only requires an object with a global position, not a waypoint in particular. Providing the goal directly to the character not only resolved issues but also simplified my code.
-
-
constantly updating the path overwhelms the character
-If the target is moving, pathfinding needs to be reassessed periodically. However, it isn't as simple as calling the pathfinding method every tick.
-
-For one, the first point in the path will always be the character's starting position. If pathfinding is performed more quickly than the character can register arriving at the first point, he will either be frozen in place or jittering wildly.
-
-For two, it's bad for performance. Generally, the efficiency of a lightweight Godot game on modern hardware is not a critical concern, but it's not like I've never managed to bog down the performance through lazy pathfinding. Probably best to avoid extra pathfinding operations when possible. If the target hasn't moved at all, no need to recalculate anything. If the target has moved closer to the character, maybe only the farthest points need to be reconsidered.
-
-The next playable release after the bingo version will have a teleporting boss, so I'll probably need to be more thoughtful about pathfinding then. For now, though, these two fixes should do it...
-
-
new path_to_object
-# Set Dots Between Character + Given Object
-func path_to_object(goal):
- # Next Waypoint
- set_next(goal)
- var goal_pos = goal.get_gpos()
- var dots = get_dots()
- var cd = get_current_dot()
- # If no current dot, set dots between user and goal
- if cd == null:
- set_dots(find_dots_pos(get_gpos(), goal_pos))
- MessageBus.publish("moved", self)
- return
- var last_dot = cd if len(dots) == 0 else dots.back()
- # Make sure goal has moved significantly
- if goal_pos.distance_to(last_dot) <= get_intimate_space():
- return
- # If goal moved further away
- if get_gpos().distance_to(last_dot) > find_distance(goal):
- # If no dots, generate new ones
- if len(dots) == 0:
- set_dots(find_dots_pos(get_gpos(), goal_pos))
- MessageBus.publish("moved", self)
- return
- # If dots, only recalculate part of the path
- var near = get_dots()[0]
- for dot in get_dots():
- if dot.distance_to(goal_pos) < near.distance_to(goal_pos):
- near = dot
- var i = get_dots().find(near)
- set_dots(get_dots().slice(0, i - 1) + find_dots_pos(get_dots()[i-1], goal_pos))
- # If goal moved closer
- else:
- set_dots(find_dots_pos(last_dot, goal_pos))
- MessageBus.publish("moved", self)
-
-
testing
-Now let's test it. I don't have any items that move around, so I'll quickly throw that in. I'll add some movement based on a sine wave into the _process method.
-
-var time = 0
-
-func _process(delta):
- time += delta
- var mod = Vector2(delta, cos(time) * 2)
- set_gpos(get_gpos() + mod)
-
-
-
the character never stops autopathing, even after picking up the item
-
-Okay, one more fix, then I'll have it.
-
-Previously, the movement AI relied on conditional statements in its process to detemine arrival at the goal. Instead, the achievement system handles arrival for the new movement system. Since the process is called faster than the event handlers can function, the old AI system picked up and queue_free'd the floor item before the new system could recognize it had arrived at the goal. This meant the character never truly arrived and never knew to halt the movement process or clear movement variables.
-
-Moving the conditional statements from _process to the function that handles the outcome of movement events.
-
-
new result code
-#enum MOVED {ARRIVED, NOT_MOVING, TOO_SLOW, WRONG_DIRECTION}
-func handle_moved_result(result, new_user):
- if result == 0:
- new_user.think("UserMove/Arrived")
- if get_user().get_target() != null:
- if track:
- if get_user().find_distance_to_target() <= get_user().get_intimate_space():
- emit_signal('item_arrived')
- get_waypoints().pop_front()
- new_user.clear_movement()
- return
-
-
just a few changes makes a big difference
-
-
-
-To test, I made some moving items for the player to try to pick up. Now instead of bee-lining for the last known location of an item, she constantly readjusts her path towards the current location of the item. Looks good to me!
-
-(I haven't considered moving items before. They're pretty cool. It's like catching butterflies in Skyrim.)
-
-Last Updated October 29, 2021
-
diff --git a/src/diary/hold/frspreadsheet b/src/diary/hold/frspreadsheet
deleted file mode 100644
index b47f8d1..0000000
--- a/src/diary/hold/frspreadsheet
+++ /dev/null
@@ -1,102 +0,0 @@
-
-
playing FlightRising with spreadsheets
-may 13, 2021
-#offtopic #spreadsheets #petsites
-My dragon breeding spreadsheet is really coming together, so I thought sharing it would be a fun break from AI.
-
-FlightRising is a petsite where you can breed and raise pet dragons. The dragons' appearances are determined by the breeds, genes, and colors of their parents, which have varying levels of dominance. So if you want a dragon that looks a certain way, you'll probably have to find the closest available matches and carefully breed them. There's a lot of factors to keep up with, so spreadsheets work better than keeping it all in my head.
-
spreadsheets
-
-There's sheets for an overview of breeding pairs, individual parents, each breeding project, and calculators and data. If you want the spreadsheet, too, you can download my template for Calc or Excel. I use LibreOffice Calc for the spreadsheets, but it should work the same as Excel. I'll go over how everything works, so you can modify it to suit your own projects.
-
individual dragons
-The Singles sheet has a row for each parent and a field for sex, breeding status, breed, breed's cooldown, date bred, nest ready, date ready to breed again, and a cooldown countdown. I'm not usually interested in this information by itself, but it's used by the Pairs sheet.
-
-
sex
-The sex field is limited to ♂ or ♀ and can be selected using a dropdown menu. The content will color the cell blue or pink.
-
-I made the dropdown menu through Data Validity (Data > Validity...).
-
-The possibilities are in a column in the Calculator sheet and set the criteria to allow that cell range as the source. The color is dictated by Conditional Formatting (Format > Conditional Formatting).
-
-There's one condition for boys and one for girls. I set the condition to look for 'cell value is' 'equal to' then either "♂" or "♀" with the quotes. For Apply Style, I made a new style with a blue background for ♂ cells and a pink one for ♀s.
-
-
breeding status
-Depending on the breed's cooldown and date of last breeding, the cell will say "Ready" or "Cooldown" in green or red.
-
-The formula is =IF(H2<=TODAY(),"Ready","Cooldown"). IF takes three parameters here: the condition (if the date ready is today or earlier), the text to display if the condition's true, and the text for false. The colors come from Conditional Formatting again.
-
breed
-The breed, like the sex, is a Data Validity-determined dropdown menu. The list of breeds is sourced from a column in Calculator.
-
-
breed's cooldown
-Each breed has a different cooldown duration. The field uses a formula to refer to the Breed field and search in Calculator for the corresponding cooldown information. The formula is =VLOOKUP($D2,$Calculator.$G$3:$H$18,2,0). Here, I take the breed, take it to the breed + cooldown columns in the Calculator sheet, and return with the data from the 2nd column in that group.
-
-
date bred
-Every time I breed a dragon, I type the date in its Date Bred field. If the dragon is unbred, I use its birthday instead.
-
nest ready
-This is a simple formula - the date bred + 6 days. It's 6 because 6 days is amount of time it takes for an egg to hatch.
-
-
date ready to breed again
-This is another simple formula - the date bred + the cooldown.
-
-
cooldown countdown
-This one is relatively simple. It's just today minus the cooldown, but I added some steps to add " days" after the number. If there are 0 or less days, I opted for it to say nothing because the default "#N/A" is annoying to look at. The formula is =IF($H2-TODAY()>0,CONCAT($H2-TODAY()," days"),""). You can see IF's three parameters: (condition) there's more than 0 days until cooldown ends, (if true) return that number + " days", (if false), return nothing. CONCAT concatenates the two parameters it's given, so it finds the number of days and adds " days". That means it'll use the plural even for 1. I could use another IF to fix that, but I barely refer to this sheet myself anyways.
-
-
dragon pairs
-The Pairs sheet is the sheet I check every time a nest opens. At a glance, it tells me which pairs are ready and which ones will be soon. It also lets me check whether my goal is within range of the pair and which of their offspring most closely resembles my goal. The fields are Project, Male, Female, Status, Date Ready, Countdown, Colors, Genes, Best Son, and Best Daughter.
-
-
project
-I add the project, so I know my goal for the pair. It's helpful when prioritizing or sorting.
-
male + female
-I add the dragon pair's names here. Data validity makes sure the name corresponds to a dragon from the Singles sheet.
-
-
status
-Both members of the pair must be ready before the pair is ready. =IF(AND((VLOOKUP($B2,$Singles.$A:$C,3,)="Ready"),(VLOOKUP(C2,$Singles.A:C,3,)="Ready")),"Ready","Cooldown"). There's a new function AND, which just takes its parameters and considers them together. All together, the formula wants to take each name in the pair, hunt down that dragon's row in the Singles sheet, and check its status. I use AND so that the condition won't be true unless both dragons are ready.
-
-
date ready
-I find the date for when the pair is ready with =MAX(VLOOKUP($B2,$Singles.$A:$H,8,),VLOOKUP($C2,$Singles.$A:$H,8,)). MAX takes its parameters and returns the larger value. Basically, it wants to use each dragon's name to check when their cooldown will be ready on the Singles sheet. I use MAX because the pair isn't ready until the parent with the longest cooldown is ready.
-
-
countdown
-The formula =IF($E2-TODAY()>0,CONCAT($E2-TODAY(), " days"),"") is similar to the one from Singles, but this time, I used Conditional Formatting to make countdowns of 1-5 days an eye-catching yellow.
-
-
colors + genes
-I can't always find parents that are in range of my goal, so noting the range helps me prioritize. PST stands for Primary, Secondary, and Tertiary, since each dragon's appearance is determined by three colors and three genes.
-
-I really only track cash shop genes, since they can only be obtained through breeding or real world money. If I want an in-game cash gene, it's a lot easier to earn money than to gamble with RNG.
-
best son + best daughter
-Space is limited, so I want to know which dragons contribute the most to their projects. It can take several generations of dragons to get the desired offspring, so I want to make sure I'm narrowing the color and gene range with each generation.
-
calculator + data
-The Calculator sheet is a catch-all for data and extra formulas. I have everything needed for Data Validity on other sheets here, and I keep calculators to help know what to write on other sheets.
-
-
colors
-FlightRising's dragon colors exist in a color wheel. If one dragon has a Cream primary color and mates with an Antique dragon, the offspring can have a primary in Cream, Antique, or White. Since the colors were arbitrarily chosen by the developers, you won't know what to expect without referring to a color chart. The one below was made by Rauxel and also contains the original, much smaller color range.
-
-When going for a particular color, the parents should be as close to that color as possible. I could manually count the colors in-between, but that's unreasonable when there's almost 200 colors. Instead, I have all the colors in a column and a little calculator to tell me how far over or under the parent's colors are. I enter primary, secondary, and tertiary colors of the goal dragon and dream dragon. The distance's magnitude and direction from the goal are calculated automatically.
-
-The formula for magnitude is =ABS(MATCH($C3,$F$2:$F$178, )-MATCH($B3,$F$2:$F$178, )). MATCH takes the color and returns the position within the color chart. ABS gives the absolute value of its parameter. In other words, I subtract the parent's colors from the goal's colors and get the absolute value.
-
-The formula for direction is =IF((MATCH($C3,$F$2:$F$178,)-MATCH($B3,$F$2:$F$178,))>0,"↓","↑"). Here, it displays ↓ if the parent's colors are below the goal's, and ↑ if otherwise.
-
-The calculator ignores the fact that the color chart is a circle. Honestly, I don't breed along the extremes (white and pink), so I haven't fixed this yet. If you need to, you can find the distance between the parent color and the distance the nearest extreme (either Maize or Pearl), the distance between that extreme and the goal color, then add them together. If you're not sure which extreme is nearer, complete the process for both then take the smaller number - that's what the final formula's going to do anyways.
-
breeding info
-These are the columns used by the breeding pages for validity and VLOOKUP.
-
breeding day calculator
-If I need to know how long ago a dragon was bred, I can use today's date and the cooldown to find it out. The formula is very simple, just the given date minus the cooldown.
-
project sheets
-Here I list the dragons by project, tracking their genealogy, sex, colors, genes, and average distance from goal colors.
-
-
father + mother
-Dragons cannot breed with relatives within 5 generations. To ensure I'm keeping bloodlines separate, I plan a family tree separately from my spreadsheets. Using the father and mother's names, I can remember which family the dragon's in or if it's related to the other dragons at all.
-
sex
-Male or female, with colored conditional formatting so I can scan by sex more easily.
-
primary, secondary, + tertiary colors
-I usually need to use the color calculator on Calculators for this information. I list the parent's distance from the goal color in each field. In the first row, I list my goal colors for reference.
-
gene 1, 2, + 3
-If the parent has one of the goal genes, I list it here. That way, I can prioritize by gene. I keep the other fields empty. For expensive genes, I only allow parents with genes of equal rarity, so the chance of passing down the goal gene is always 50/50. If my goal is a gene I can just buy, I don't care to track it since buying is easier than breeding.
-
average
-Genes are 50/50, but my goal colors are usually around a 1/20 chance. Consequently, I'm much more concerned about the color of a dragon than his genes. To give me a general evaluation of how close a dragon is to the goal colors, I use =AVERAGE(E3,G3,I3). The AVERAGE function adds its parameters and divides by the quantity of parameters given. If I had a parent with perfect colors, it would have an average of 0, so ideally, dragons with the lowest average are my most valuable for breeding. Genes usually factor in as well.
-
that's all~
-In closing, I'll share a few of my cutest dragons (all of which are obviously using official FlightRising assets). See you two Thursdays from now!
-
Gator is part of Animal Parade, a collection that emphasizes the individualism of clothing. Every garment deserves special consideration, even basic undershirts, sleep masks, etc.
-
-
All the designs are named after important animals in my life. The swimsuit is named Gator because of the gator who lives in my swampy subdivision. I've seen him during walks. Absolutely unnerving.
-
-
design process
-
I haven't had a swimsuit for years and never like any in the store anyway. I browsed online catalogs in English and 日本語 and window-shopped everywhere in town, searching for both style and technical inspiration. I've never worked with active wear garments, so I studied the inside of nearly everything at Dick's Sporting Goods to understand the style elements, seams, and findings typical of swimsuits and active wear in general.
-
-
one-and-a-half-piece
-
The swimsuits that stood out to me were blurring the line between one-piece and two-piece. I can't find my old collage, but here's a quick one. Sorry for not remembering the source of the images.
This is where the one-and-a-half-piece idea led. I like the sheer fabric in the central examples from the collage. I love texture, so all the ruching and gathers really stand out to me, too. I wonder how feasible it would be to make two "two-pieces" - one relatively basic bikini with a loop in the center front of the swim bottoms, and another sheer, pintucked overlay with a tricot panel peek-a-boo skirt that fastens onto the loop. The overlay is tiered in the back then parts around the sides until it fully exposes the midriff in the front.
-
-
I'm not sure tricot or mesh would be sturdy enough for pintucks, so I checked if chiffon swimwear is even a thing. It actually is! Plenty of chiffon sleeves and panels floating around out there.
-
-
I really like this design. The central fastener on the swim bottoms isn't like anything I've seen in stores. The suit's connected in enough places that it shouldn't become a shapeless bubble underwater. I bet it'd be gorgeous to watch float and flow in the waves.
-
-
Unfortunately, pretty or not, I don't think it's practical. Chiffon is a dainty fabric, and swimming is not a dainty activity. There's plenty of brick and concrete around and roughhousing with friends. Besides, chiffon isn't that comfortable to wear dry, and I cringe imagining chlorine-soaked chiffon Saran-wrapped over my torso. Not to mention, I don't know how comfortable I am with a two-piece anyway. Body insecurities! (Who doesn't have them?)
-
-
Back to the drawing board!
-
-
made for me
-
Instead of synthesizing the prettiest elements into one swimsuit, I should be synthesizing the most practical elements into one swimsuit. People who feel confident and comfortable in their clothes are the prettiest! Also, ruffled chiffon is the definition of my comfort zone. Active wear is an opportune time to try new designs.
-
-
-
I want less skin showing, but I want to feel the water on some part of my body.
-
I prefer the collage swimsuits with tiered swim skirts. Many "modest" swimsuits look like short bodycon dresses. I'm not insecure about the length of my swimsuit; I'm insecure about nothing covering my abdomen but spandex! If the tiers are detached and start high, it obscures this area without looking frumpy.
-
Virtually every well-made sporting goods swimsuit (and every piece of male active wear for that matter) had raglan sleeves. This makes sense, since it's a style that doesn't impede rotation of the shoulder, but I'm surprised it's raglan or bust for athletes. Guess I'll take note.
-
Mock turtlenecks are just the best. I have a long neck, so they look good on me.
I drew and drew over the same croquis, so the process was lost apart from long raglan sleeves, a mock turtleneck, and tiered layers around the lower body. I went back and forth between full-coverage bikini bottoms and shorts. I also had an idea for a swim obi belt. Obi belts were all over the runway a few years ago. I couldn't find anything quite like it on a swimsuit, but it seems like such a cool idea. Maybe not practical, but I'd go for it if it didn't require so much fabric.
-
-
-
- Zuhair Murad presented some of my favorite obi belt looks during the Pre-Fall 2019 show. Photo credit to Emmanuel Giraud. (Wait, a design like this wouldn't take as much fabric...Hmmm.)
-
-
-
-
Anyway, this is close to what I made. I moved the zipper to the center back to avoid breaking up my beautiful fabric. I didn't care to insert piping into active wear seams. (yes, those aren't thick seams - that is piping.) I didn't make the obi belt either, but I might. I have long strips of fabric left over, and it might be enough to do something cool.
I chose neoprene because it's flatteringly thick, durable, and still relatively trendy in fashion after years of being delegated to seat covers and boring functional garments. I've never sewn with it before and heard terrible things, but I'll try it.
-
-
This print in particular is so unique. In a sea of tropical island palm tree, this is a swamp! I grew up in swamps and live in a swamp, and I never see our biome fantasized like this. It's also bright and pastel without entering some generic rainbow or pastel goth palette. It even includes that incredible glowing sulfur color from PANTONE's 2021 Color of the Year. I adore this fabric.
This is my only picture of my pattern for now. I make them out of thick paper and store them by piercing each set with a safety pin then hanging them from yarn bows.
-
-
I've never made a raglan sleeve and don't even own any, so this was a real challenge. I started with a regular sloper, taped them together, cut them along the "raglan line," used that to sew a knit bodysuit, then fitted and seam-ripped and resewed until it was spot-on.
-
-
I've never designed a mock turtleneck either, even though I really ought to have by now. For some reason, I imagining it should be more tapered, but the neck is relatively tubular. The triangular muscles connecting the neck to the shoulders aren't as important, especially with my placement of the scoop "neckline." However, starting the collar that far out adds inches to the height requirement. It took several iterations before it was long enough to actually look like a turtleneck.
-
-
Sleeves are sleeves. Princess lines and tiers-and-panels are my specialty, so no problem there. Then I traced my comfiest pair of full-coverage underwear for the leg openings.
-
-
As with most of my tiered designs, the tiers of the skirt only start an inch or so from beneath the previous tier. That bottom tier isn't much longer than the tier on the top. This reduces bulk and fabric consumption, which is 100x more important on a swimsuit made of pricy fabric. The length of the tiers took a lot of experimentation. They need to be balanced, fall at flattering points of my body, begin at comfortable points on my body, and work with the print. I played in front of a mirror in loops of measuring tape all day.
I was very conscious of the print while cutting. I used the stark white sky as an anchor and draped a few different placements - across the collarbone, across the bustline, and my chosen placement, atop the chest. The print has dense dark areas and light fluffy areas, and this placement emphasized femininity. The grays and trees are at my chest, emphasizing them while still looking painterly and abstract enough to not be garish. The blacks and voids are at my waist, neck, upper arms, and lap. Then the dense, difficult-to-read green foliage obscures my lower body. Perfect! I matched the arms, which puts the placid blue water on my forearms, so the part I see the most is my favorite part of the print. Overall, great luck with the vertical repeat on this fabric.
-
-
As for sewing, these are all serged seams using pastel rainbow thread. The edges are finished with gray serging. The tiers were basted and gathered by hand before being sewn into the skirt. It was very, very easy. The girls who told me neoprene doesn't hold stitches must have had finicky machines.
-
-
The top is supported by underwire and thin cups. I cut up an old bra and attached it to the lining by hand. It was nerve-wracking doing the fittings because they were done with the garment inside-out and any markings involving stretchy material around curves are difficult to achieve accuracy with. The final fit is perfect, though.
I've taken it to the beach and the pool and feel so special. No one has a swimsuit like this. The colors are adorable and unique. The print and colors are so intricate compared to the rest of the market. The design is relatively modest but still youthful. I get so many compliments. I'm also glad I pushed myself away from making yet another ruffled chiffon gown. Even within the realm of activewear neoprene, my design aesthetic is still obvious, and that's cool to see.
-
-
It's very comfortable to wear, too, which was my number one design goal here. The skirt isn't too bulky, so I can get away with oversized jeans as my coverup. I feel confident under the thick fabric and tiered skirt, and the long sleeves and tall neck protect me from the full blast of the sun. My thighs do show, but whatever. They're usually underwater anyway. The swimsuit maintains its shape well underwater, too.
-
-
When I was done, I immediately sewed four mock turtleneck undershirts based off this pattern and love them, too! When I have more time, I'll share the rest of my garments in another diary entry. Until then, enjoy the rest of summer.
Gator is part of Animal Parade, a collection that emphasizes the individualism of clothing. Every garment should be valued and individualized, even basic undershirts, sleep masks, etc.
-
-
All the designs are named after important animals in my life. The swimsuit is named Gator because of the gator who lives in my subdivision. I've seen him during walks. Absolutely unnerving.
-
-
design process
-
I haven't had a swimsuit for years and never like any anyway. I browsed online catalogs in English and 日本語 and window-shopped everywhere in town, searching for both style and technical inspiration. I've never worked with active wear garments, so I studied the inside of nearly everything at Dick's Sporting Goods to understand the style elements, seams, and findings typical of swimsuits and active wear in general. I learned a lot but liked virtually nothing.
-
-
1.5 piece
-
The swimsuits that stood out to me were treading the line between one piece and two-piece. I can't find my old collage, but here's a quick one. Sorry for not remembering the source of the images. I iterated over the concept in sketches a little.
This is where the two-piece idea led. I like the sheer fabric in the central examples from the collage. I love texture, so all the ruching and gathers really stand out to me, too. I wonder how feasible it would be to make two "two-pieces" - one relatively basic bikini with a loop in the center front of the swim bottoms, and another sheer, pintucked overlay with a tricot panel peek-a-boo skirt that fastens onto the loop. The overlay is tiered in the back then parts around the sides until it fully exposes the midriff in the front.
-
-
I'm not sure tricot or mesh would be sturdy enough for pintucks, so I checked if chiffon swimwear is even a thing. It actually is! Plenty of chiffon sleeves and panels floating around out there.
-
-
I really like this design. The central fastener on the swim bottoms isn't like anything I've seen in stores. The suit's connected in enough places that it shouldn't become a shapeless bubble nor flap up and show too much skin underwater. I bet it'd be gorgeous to watch float and flow in the waves.
-
-
Unfortunately, pretty or not, I don't think it's practical. Chiffon is a dainty fabric, and swimming is not a dainty activity. I lean against brick and against concrete without babying my clothes. Chiffon isn't that comfortable to wear dry, and I cringe imagining soaking wet chlorine chiffon Saran-wrapped over my torso. Not to mention, I don't know how comfortable I am with a two-piece anyway? Body insecurities!
-
Back to the drawing board!
-
-
made for me
-
Instead of synthesizing the prettiest elements into one swimsuit, I should be synthesizing the most practical elements into one swimsuit. People who feel confident and comfortable in their clothes are the prettiest!
-
-
-
I want less skin showing, but I want to feel the water on some part of my body.
-
I prefer the collage swimsuits with tiered swim skirts. Many "modest" swimsuits look like short bodycon dresses. I'm not insecure about my swimsuit being too short; I'm insecure about showing the world my lower abdomen! If the tiers are detached and start high, it obscures this area without looking frumpy.
-
Virtually every well-made sporting goods swimsuit (and almost every piece of male active wear for that matter) had raglan sleeves. This makes sense, since it's a sleeve that doesn't impede rotation of the shoulder, but I'm surprised it's raglan or bust for athletes. Guess I'll take note.
-
Mock turtlenecks are just the best. I have a long neck, so they look good on me.
I drew and drew over the same croquis, but the big idea is a long-sleeved raglan with a mock turtleneck and tiered layers around the lower body. I facilitated between full-coverage bikini bottoms and shorts. I also had an idea for a swim obi belt. Obi belts were all over the runway a few years ago. I couldn't find anything quite like it on a swimsuit, but it seems like such a cool idea. Maybe not practical, but I'd go for it if it didn't require so much fabric.
-
-
-
- Zuhair Murad presented some of my favorite obi belt looks during the Pre-Fall 2019 show. Photo credit to Emmanuel Giraud.
-
-
-
-
Anyway, this is close to what I made. I moved the zipper to the center back to avoid breaking up my beautiful fabric. I didn't care to insert piping into active wear seams. (yes, those aren't thick seams - that is piping.) I didn't make the obi belt either, but I might. I have long strips of fabric left over, and it might be enough to do something cool.
I chose neoprene because it's luxuriously, flatteringly thick, durable, and still relatively trendy in fashion after years of being delegated to seat covers and boring functional garments. I've never sewn with it before and heard terrible things, but I'll try it.
-
-
This print in particular is so unique. In a sea of tropical island palm tree prints, this one has swamps! I grew up in swamps and live in a swamp, and I never see our biome fantasized into artwork like this. It's also bright and pastel without entering some generic rainbow or pastel goth palette. It even includes that incredible glowing sulfur color from PANTONE's 2021 Color of the Year. I adore this fabric.
This is my only picture of my pattern for now. I make them out of thick paper and hang them by piercing a full set with a safety pin then hanging them from yarn bows.
-
-
I've never made a raglan sleeve and don't even own any, so this was a real challenge. I started with a regular sloper, taped them together, cut them along the "raglan line," used that to sew a knit bodysuit, then fitted and seam-ripped and resewed until it was spot-on.
-
-
I've never designed a mock turtleneck either, even though I really ought to have by now. For some reason, I imagining it should be more tapered, but the neck is relatively tubular. The triangular muscles connecting the neck to the shoulders aren't as important, especially with my placement of the scoop "neckline." It also took several iterations before it was long enough to actually look like a turtleneck.
-
-
Sleeves are sleeves. Princess lines and tiers-and-panels are practically my specialty, so no problem there. Then I traced my comfiest pair of full-coverage underwear for the leg openings. As with most of my tiered designs, the tiers of the skirt only start an inch or so from under the previous tier. That bottom tier isn't much longer than the tier on the top. This reduces bulk and fabric consumption, which is 100x more important on a swimsuit made of pricy fabric. The length of the tiers took a lot of experimentation. They need to be balanced, fall at flattering points of my body, begin at comfortable points on my body, and work with the print.
I was very conscious of the print while cutting. I used the white sky as an anchor and draped a few different placements - across the collarbone, across the bustline, and my chosen placement, atop the chest. The print has dense dark areas and light fluffy areas, and this placement emphasized femininity. The grays and trees are at my breasts, emphasizing them while still looking painterly and abstract enough to not be garish. The blacks and voids are at my waist, neck, upper arms, and crotch. Then the dense, difficult-to-read green foliage obscures my lower body. Perfect! I matched the arms, which puts the placid blue water on my forearms, so the part I see the most is my favorite part of the print. Overall, perfect sizing and placement in my eyes.
-
-
As for sewing, these are all serged seams using pastel rainbow thread. The edges are serged with gray. The tiered were basted and gathered by hand. It was very, very easy. Whoever told me neoprene doesn't hold stitches must have had a very finicky machine.
-
-
The top is supported by underwire and thin cups. I cut up an old bra and attached it to the lining by hand. It was kind of nerve-wracking doing the fittings because any markings or fittings involving stretchy material around the breasts are difficult to achieve accuracy with, but the final fit is perfect.
I've taken it to the beach and the pool and feel so special. No one has a swimsuit like this. The colors are adorable and unique. The print is so intricate compared to the rest of the market. The design is relatively modest but still youthful. I get so many compliments.
-
-
It's very comfortable to wear, too, which was my number one design goal here. The skirt isn't too bulky, so I can get away with oversized jeans as my coverup. I feel confident under the thick fabric and tiered skirt, and the long sleeves and tall neck protect me from the full blast of the sun. My thighs do show, but whatever. They're usually underwater anyway. The swimsuit maintains its shape well underwater, too.
-
-
Then when I was done, I immediately sewed four mock turtleneck undershirts based off this pattern and love them, too!
-may 27, 2021
-#gamedesign #gdd #worldbuilding
-
-A game design document (GDD) is a detailed document used to communicate the vision for a videogame. They are used internally by AAA game developers to keep hundreds of people on the same page, but it's worth considering keeping one as a small team or individual. I'll share how I organize mine.
-
-
why keep a GDD if everyone's already on the same page?
-Even small games are complex pieces of software requiring a broad skillset spanning computer science, design, art, music, creative writing, and marketing. The development process can take years, too. A GDD can serve as a single place to collect your thoughts and document the evolution of your design over time. Even as a single person, it's been helpful to give every aspect a little thought as I fill it out. Also, whenever I need to refer back to something, it's a boon to have an organized GDD instead of random notebooks and files.
-
-Of course, writing a GDD isn't developing a game. Barely anyone shares their GDD outside of their team, so unless your team or publisher has extra requirements, they only exist to facilitate game development. If you can't keep the document up-to-date with development or it would never be referenced by anyone, consider alternative forms of documentation. Sometimes a GDD is more effective as a game prototype, a mood board, or merely a thought in your head. If you're keeping scattered notes like I did, though, consider compiling them into a single word document or keeping them all in a binder.
-
-
download the GDD template
-Download my GDD template and make a copy every time you have a new game idea so you never forget any! Obviously, it's just a template. If some parts aren't suitable for your genre or development process, swap them out for something better.
-
-
worldbuilding bible
-I feel it's easier to keep some parts in a different format from my GDD. For worldbuilding, I use a modified version of Ellen Brock's worldbuilding questionnaire. I keep her headings and delete the detailed bullet prompts for less clutter. In general, I try to write my own prompts so they are closely tailored to my fantasy world. If I don't even know where to begin, though, her prompts are a great starting point.
-
-
-
-Every nation in my game gets their own copy that's written from their perspective, since different people groups can have different experiences or explanations regarding the same world.
-
-
story + dialog
-The pacing and direction of game narratives are dependent on the player's actions, so the stories are less like monolithic pages of text and more like a series of events strung together. For that reason, I don't keep the story or major events in my GDD. I keep an outline of the story and each scene in individual flowchart documents instead, so I can move the pieces around and connect them freely.
-
-
-
-To make my flowcharts, I open diagramming software like Dia and make a box for the title and one for the goals of the scene. Then, using color coding to separate character dialog, conditional statements, stage directions, and emotes, I write the event box-by-arrow-by-box.
-
-Every time I have an idea for a scene, I scribble it in a flowchart to keep with my GDD. Some of them are dumb, but it's never bad to have a giant pile of potential game events.
-
-
backing up your GDD
-Finally, there's no point to keeping everything together in one place if the hard drive loses them. Try to keep a current copy in about 3 places. I have a GDD folder that contains an individual folder for each game. That way, it's easy to push all my GDDs to git at once. Better safe than sorry!
-
-Last updated May 26, 2021
-
diff --git a/src/diary/hold/godotplugin b/src/diary/hold/godotplugin
deleted file mode 100644
index 8534830..0000000
--- a/src/diary/hold/godotplugin
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
how to make a plugin for godot engine
-april 15, 2021
-#godotengine
-
-If Godot Engine doesn't have the functionality you need, you can extend it with your own plugins. You can also use it to make specialized nodes to suit your project.
-
-
how to make a plugin
-
-Navigate to your project folder. Within it, make a folder called addons. Within the addons folder, make a folder and name it after your plugin. Within the plugin folder, you will need a few files: plugin.cfg, custom_node.gd, a .gd file for each custom node your plugin will add, and a .png icon for your custom nodes.
-
-
plugin.cfg
-Within the plugin file, make a file called plugin.cfg. Open it in a simple text editor like Notepad and use this template to make your config:
-
-[plugin]
-name="World"
-description="A world system."
-author="chimchooree"
-version="0.4"
-script="custom_node.gd"
-
-Obviously, fill the space within the quotation marks with your own information. The script's value should be kept the same, though. Once you have these six lines in your file, save and close. Avoid writing these files in a full word processor like Microsoft Word because they tend to fill your documents with extra characters. Even if they aren't displayed in the word processor, they will make your file unreadable to Godot.
-
-
-
custom_node.gd
-Within the plugin file, make another file called custom_node.gd. The contents of this node should look like this:
-
-tool
-extends EditorPlugin
-
-func _enter_tree():
- add_custom_type("Room", "Node2D", preload("room.gd"), preload("World.png"))
-
-func _exit_tree():
- remove_custom_type("Room")
-
-To add a type, supply the add_custom_type method with 4 parameters: the name of your custom node, the node type (Node2D, AnimatedSprite, etc), your custom node's preloaded script, and a preloaded icon. Every type you add must also be removed. Use this process to add as many custom nodes as you need.
-
-
-
.gd files
-For each custom node you declare in the custom_node.gd file, you'll need to supply a .gd script. These are going to look just like your other scripts in the editor. You can write them in full now or leave them relatively blank, but at least declare the type at the top.
-
-Since my example calls for a Node2D with a "room.gd", I can make a file within the plugins folder called room.gd. I'll keep the contents extremely simple for now:
-
-extends Node2D
-
-
-
icon
-Icon must be .png files with the dimensions of 16x16 pixels. They are just for you to see within the editor's node tree, so you can draw something fancy or just squish down the same Godot head everyone uses. You can also make a unique icon for each node or just use the same one across all nodes. Just make sure the file name matches what's used in custom_node.gd.
-
-If you want to use my squished icon, that's 100% fine with me. If you need to check the license for the original Godot head, though, it's on their git repo.
-
-When choosing whether to make something beautiful or lazy, let Colossians 3:23 echo in your head: "And whatever you do, do it heartily, as to the Lord and not to men."
-
-
-
how to add a plugin
-Now, inside Godot Engine's editor, go to the top-left menu and select Project>Project Settings and go to the Plugins tab. If your files came out okay, your new plugin should appear in the listing with all the data from your plugin.cfg file. Under the Status heading, make sure the plugin is set to "Enable" or "Active". To check whether your plugin's working, try to add a new node to a scene and search for your custom type. It should pop up with your custom icon in the search. If you add it, it will already have its custom script attached and ready to go.
-
-Happy coding!
-
-
-Last updated April 30, 2021
-
diff --git a/src/diary/hold/hostility b/src/diary/hold/hostility
deleted file mode 100644
index 81d7137..0000000
--- a/src/diary/hold/hostility
+++ /dev/null
@@ -1,91 +0,0 @@
-
-
hostility
-january 27, 2022
-#design #mechanic
-
-
-
what is hostility?
-Hostility is a state that a character's AI state machine can enter. More specific states will inherit from the hostile state to prompt targeting, aggressive, and defensive behavior. It's a very similar concept to aggro in Guild Wars because weaving through patrol patterns and balling mobs is one of my favorite things from any game.
-
-
when does a character become hostile?
-NPCs generally will not seek out the player for combat. They will either stand stationary or follow their patrol route, oblivious of the player until becoming hostile.
-
-Usually, if an NPC is hostile, that means a threat got too close. Currently, proximities in Blessfrey mirror Edward T. Hall's zoning for interpersonal distances. Intimate distance is the range for physical interaction and melee attacks and social distance is the range for assessing hostility and ranged attacks.
-
An enemy faction member enters its social distance. Every character has a RangeBubble (Area2D) representing its social space. When a character enters range, its AI will assess both set of factions and change states upon finding a conflict. If there is a significant level disparity in the opponent's favor, though, the character will remain idle.
-
Someone attacked it or dealt damage to it. If their opponent isn't in range, they will become hostile and begin searching or ambushing. (There is no friendly fire, so teams aren't going to implode.)
-
Someone was damaged or attacked by it. Once again, if their opponent isn't in range, they will begin the hunt.
-
When the majority of a team is hostile towards an opponent, any team of the same faction or type entering the social space of the hostile team will also become hostile towards it.
-
When one member of a team becomes hostile, the others remain idle until aggravated. This allows skilled players to pull individual opponents away at a time without alerting the others and divide and conquer. This also prevents one foolhardy teammate from programmatically pulling aggro onto its entire team.
-
-
-
what changes when a character is hostile?
-A hostile NPC will enter a combative AI state, usually with the goal of pursuing its opponent until either is killed or out of range. During combat, its passive health regeneration will slow, while energy regeneration will remain constant. Maybe certain skills and items can't be used during combat. If it has hostility towards multiple targets, it will prioritize targets according to its targeting AI state, probably favoring the nearest and weakest opponents.
-
-Each NPC will express hostility differently. Broadly, hostile behavior falls into 3 groups: offensive, defensive, and targeting. Offensive states may involve melee or ranged attacks, weapon attacks or offensive skill usage, single-target attacks or AoE, frontlining or backlining, and so on. Defensive states may involve buffing or healing, fleeing or kiting, protecting themselves or their teammates, and so on. The targeting state will allow the character to have unique opinions on who is most deserving of its attention.
-
-When a character becomes hostile toward the player, there will be feedback, such as battle music playing, the opponent's name turning red, or a sound effect playing. (Now I have the Aion aggro sound effect in my head.)
-
-
when is a character no longer hostile?
-An NPC will lose hostility under a few conditions:
-
-
Enough distance has spread between the NPC and its opponent. Usually, an NPC will not pursue an opponent very far. The farther the NPC is led from its idle route, the less tolerance it has to pursue its opponent. However, if pulled slowly, a few steps at a time, it can be led almost anywhere.
-
Its opponent exits the NPC's territory. Some NPCs have lines they will not cross.
-
Its opponent or itself dies.
-
The opponent no longer belongs to a conflicting faction.
-
-
-
what happens after a character is no longer hostile?
-The character will return to its idle position or the nearest waypoint of its patrol route. Its passive health regeneration returns to its usual rate. Possibly some skills and items will be combat-only and will become disabled.
-
-
hostility in action
-This next section is mostly for me. Let's run through some faction clash examples after illustrating the relationship of teammates and allies.
-
-
-
team hierarchy
-Teams have a leader. If there are additional teammates, they will be followers of the leader. Teams can be allied with other teams. Generally, the leader of the ally team will become a follower of the main team's leader, while its teammates will be followers of their local leader. If a teammate has a pet, raises a minion, casts a summon, or triggers an event that grants it an ally, that character will be the leader of its own group, allied with the responsible teammate. Alliances can be gained or broken.
-
-Teams will be more or less oblivious to their allies' position and lose them if they aren't keeping up. They will support allies in combat, but they characters usually prioritize teammates over allies.
-
-
-
-
scenarios
-
-
-A, B, and C are in team 1. D is allied with them. They are preparing to attack the idle team 2 (V, W, and X with ally Y). Both teams will be spotted by the patrolling team 3 (M, N, and O with ally P) in a minute. Team 2 and 3 are members of the same faction, while Team 1 is of an opposing faction. A, B, and D are within range of either other, while C is investigating something just out of range. V, W, and X are within range, while Y is stuck behind a rock just out of range. M, N, and O are patrolling, while P walks too slowly to be in immediate range of the others. A, V, and M are leaders of their teams. They lead, while their teammates flock with them. Allies are members of their own team(s). Ally team leaders will follow the team leader of the main team, while their teammates flock with them. Allies can have their own allies, resulting in large trails of allied groups. Allies will not engage against allies or support direct enemies of their allies. Allies may engage against allies removed or support direct enemies of allies twice removed, though.
-
-Technically, allies are in their own team by themselves. Allies will flock within their own team and follow the general position of the main team or the individual teammate they are allied with. The main team will flock within their own team and ignore the positions of their allies. Allies will only share hostility with the main team through the coincidental case of being the same faction or type.
-
-
-
A attacked V. V and A are hostile towards each other. B and D gain hostility towards V from being in range of A. W and Y gain hostility towards A from V. Now A, B, and D are opposed to V, W, and Y and vice versa and begin fighting. C and X are bound to cluster closer or be approached by opponents and join in soon.
-
A lays a trap. V walks into the trap and takes damage. A and V are now hostile towards each other. A and V will prepare for battle and begin hunting for each other. Their RangeBubbles will extend farther during this time. If they search for too long or travel too many steps without finding an opponent, they will resume their idle positions. If A finds an opponent, any teammates or allies within their RangeBubble will gain hostility towards the opponent and move within range. Combat will ensue. If very few or no members were in range of A, its team will idle on without it. If most members were in range, the remaining members will flock to their team and inevitably gain hostility and enter combat.
-
A one-hit-kills V from a safe distance. A becomes hostile and searches for an opponent. Team 2 is oblivious.
-
Teams 1 and 2 are hostile towards each other. Team 1 changes to the same faction. Teams 1 and 2 lose hostility. They will now consider each other friendly and possibly support each other. If one team gains hostility towards another team, the other will share hostility if still in range.
-
Teams 1 and 2 are friendly with each other and following each other. Team 1's faction changes to an adversarial one. They are all so close, they all gain hostility towards the other team's members immediately.
-
All of team 1 is hostile towards all of team 2. Team 3 enters range of team 2. All of team 3 gains hostility towards team 1 the moment a member of team 2 enters range of a single member of team 3.
-
Team 1 and team 2 are hostile towards each other with team 3 approaching. Ally P intersects with ally Y, triggering hostility between them. Teams 1 and 2 remain oblivious towards Team 3 and vice-versa. If team 3 starts going somewhere else, P will be left behind. Members of team 3 will gain hostility on a case by case basis as they flock nearby and inevitably get too close.
-
Team 1 and team 2 are hostile towards each other with team 3 approaching. Teammate M intersects with ally Y, triggering hostility between all of team 3 and ally Y. Team 2 will eventually enter the fray coincidentally.
-
-
-
ally chains
-
-
-
-If a necromancer is allied with a team of paladins, they will only enter hostility through their own terms. For instance, the paladins may attack a bear, but the necromancer will ignore it until the bear is a direct threat to itself. If the paladins attack another necromancer, the enemy necromancers will likely ignore the paladin-allied necromancer and never pose a direct threat. The allied necromancer may express idle supportive behavior like buffing the paladins, but it will remain idle. The politics of the main team trump that of other roaming teams. The allied necromancer will not enter combat with the paladins merely because it is the same type as the necromancers. It will also not idly heal the team that is currently directly opposed to its paladin allies. If the enemy necromancers were fighting a team of merchants, and the paladins completely ignore both groups, the necromancer ally will enter the fray in support of the necromancers and against the merchants. This may draw the paladins in, who will support the merchants and fight the necromancers. The allied necromancer will immediately lose hostility towards anyone directly opposed to the main team's leader.
-
-If the necromancer raises 2 liches, each lich is the leader of its own team, and each team is allied with the necromancer. Let's say the liches summon vampiric minions, one of which converts someone to an allied ghoul whose alliance remains constant with its chaos dwarf buddy who in turn is allied with its war golem. The paladin will respect the necromancer and liches but become hostile towards the vampires and all other evil monsters and vice-versa. In the case all these groups were factionless, the paladin would be neutral towards the vampires and everything else down the chain. Neutral characters are generally low priority in combat, but AoE attacks can easily whip up hostility.
-
-If the necromancer dies, the lich and paladins will no longer restrain themselves from becoming hostility towards each other.
-
-
-
what I learned
-Before, I was trying to force the combat state into flat booleans, but clearly there is more nuance to the issue. A character can be hostile but not in active combat. A character can be in combat but not hostile. Also, hostility is more of a product of a character's surroundings, actions, and actions inflicted on it. Structurally, it needs to resemble (extremely obviously) an AI state rather than any kind of variable.
-
-The characters' state machines now behave more like the above scenarios, and I'd love to make a cutscene-like demo for Blessfrey's second demo that sets differently factioned groups on clashing patrols to make sure it all works. Look forward to it!
-
-Last updated January 31, 2022
-
diff --git a/src/diary/hold/invsystemdiagram b/src/diary/hold/invsystemdiagram
deleted file mode 100644
index 9c73ad3..0000000
--- a/src/diary/hold/invsystemdiagram
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
inventory as a system diagram
-january 7, 2021
-#design #systemdiagram #gamemechanics
-
-System diagrams illustrate how components interact within a system. It saves so much headache to step back and plan with a system diagram before jumping into code.
-
-
-
stop + plan before coding
-I want to move blessfrey's inventory into an app on the player character's smartphone. Before, it was displayed in a random pop-up window. It was poorly planned, so the programmatic inventory and the UI were too tightly coupled to easily pop into the phone screen. Instead of wrestling, it's easier to start over and actually plan before I code this time.
-
-
-
list out your nouns
-A simple way to start thinking about a system is to list out its nouns + verbs. Jot down the entities that interact with your system.
-
-
-
-For blessfrey's inventory, that's the inventory (programmatic), the player character, the inventory app (UI), and base items. The inventory app is related to the smartphone and inventory items. Items are related to floor items, which are related to rooms.
-
-(blessfrey has three different kinds of items.
-
-
Base Item: holds all the data regardless of how the item is currently expressed
-
Floor Item: sits on the ground and gets picked up by characters.
-
Inventory Item: displayed in inventories, store windows, containers, etc
-
-Floor + Inventory Items hold a base item inside them that gets popped out and traded around as the item gets expressed in different forms.)
-
-
connect your nouns with verbs
-I wrote the entities in pink and moved them around until the placement was decently readable. Then I connected the concepts with arrows. These arrows represent the verbs, which I explicitly labeled in yellow.
-
-The flow of these arrows can be very important. If you are modeling AI, for instance, no matter what path the program takes, there shouldn't be dead-ends. Seeing mistakes like that is easier with a diagram than lines of code. Otherwise, the flow is always generally useful for figuring out which methods are needed for each class and how they connect.
-
-
-
write the code
-At this point, coding is a bit easier now that it's in some ways a transcription of the diagram. The entities are data (classes or objects), and the arrows are logic (methods).
-
-
-
conclusion
-Your diagram doesn't have to be fancy or formal to get the point across to yourself, and it just takes a minute to save all the headache later. Don't skip this step or you'll have to rewrite the inventory system just to display it in a different window.
-
diff --git a/src/diary/hold/lemonland-cssgrid b/src/diary/hold/lemonland-cssgrid
deleted file mode 100644
index 956693a..0000000
--- a/src/diary/hold/lemonland-cssgrid
+++ /dev/null
@@ -1,140 +0,0 @@
-
-
css grid with angular (break into 2?)
-may 5, 2022
-#angular #css #webdev
-
-
start from the beginning
-Angular's documentation shares the process for beginning a new project, but I'll explain it, too.
-
-
-
Installation process will differ depending on your operating system. These commands are for Linux Mint, downstream from Ubuntu and Debian.
sudo npm install -g @angular/cli (you can decide whether to share analytics)
-
-
-
grab the template
-Now you're ready to start an Angular project. Begin in the folder you'd like your project folder to be. Instructions and files are also available on Angular's github.
-
-
-
ng new Example (accept Angular routing and CSS) Change out the name 'Example' with your project name.
-
Now you'll have a folder named 'Example,' containing your skeleton. If you didn't already have git initialized in the folder, it'll automatically do so for you.
-
-
test run
-Now you can run your example project in the browser.
-
-
-
cd Example/
-
npm start
-
Now you can browse to your project. By default, it used port 4200, so it's viewable @ http://localhost:4200/
-
When you're done, stop the script by entering ctrl + c into the terminal.
-
-
-If you see the page below, you have everything you need to get started on your own project.
-
-With a basic HTML/CSS website (like blessfrey.me), the CSS Grid allows you to align its nested divs into rows and columns. Angular allows you to break each area into a component to be styled by the grid.
-
-I'll use the petsite browser game I'm making as an example:
-
-These two contain all the subcomponents generated earlier.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Then the CSS grid takes place in the CSS file.
-
-
-Last updated April 12, 2022
-
diff --git a/src/diary/hold/localization b/src/diary/hold/localization
deleted file mode 100644
index 30d43cc..0000000
--- a/src/diary/hold/localization
+++ /dev/null
@@ -1,90 +0,0 @@
-
-
blessfrey in japanese
-october 29, 2020
-#godot #internationalization #localization #translation
-
-Instead of hard-coding text, keep it in a spreadsheet instead. It's easier to organize, edit, and it also makes possible future translations a much smoother process.
-
-I followed along with GoTut's "Localisation in Godot" guide, but the process is pretty simple. It's a great guide, so honestly just follow theirs instead. I'll echo the process here in case it's taken down, though.
-
-
-
-Instead of writing your text directly into Godot, refer to the text by ids instead. These ids will be kept in the first column of your spreadsheet. Don't use spaces.
-
-The rest of the columns will hold the corresponding text in different languages. Name these columns after the language's locale code. English's is en, and Japanese's is ja. You can find the more codes in the Godot Docs.
-It works just fine if you're only using one language. If you have multiple languages but don't provide a translation for a specific id, whenever your game is set to that language, references to that script will show blank text.
-
-Save your spreadsheet as a .CSV file.
-
-
-
step 2 - import your spreadsheet
-
-Make sure your .CSV spreadsheet is in your game folder, so Godot can automatically import files. Wherever you import your text, make sure you check 'Comma' for the delimiter or separator options. You'll get a few .TRANSLATION files.
-
-
-
-
-
-From Godot's top menu, go to Project>Project Settings...>Localization>Translations and add all your .TRANSLATION files. They'll be right next to wherever you saved your .CSV.
-
-
-
step 3 - refer to your ids in your scripts
-
-
-
-
-
-It's really simple stuff. Anywhere you would have written a string, like "quit", you instead use its id wrapped in tr(). So instead of label.set_text("quit"), you'd write label.set_text(tr("quit_game")). In this example, the id is "quit_game" and its corresponding text in English is "quit."
-
-
-
step 4 - set the game's language
-
-
-
-
-
-Set the locale in your script, somewhere like _ready() or on a 'change language' button. Here's the line for setting the locale: TranslationServer.set_locale("ja")
-
-
-
step 5 - continue adding to your spreadsheet
-
-Now that everything's in place, you can keep adding new ids and translations, and Godot will automatically use your changes in-game.
-
-
-
step 6 - insert values into text
-
-Languages differ in syntax, so use format strings.
-
-In your spreadsheet, write %s where your inserted text will go.
-
-
-
-
-
-Then in your script, write tr("key") % inserted_val in place of the formatted string.
-
-
-
-
-
-Now the formatted string will appear in-game.
-
-
-
-
-
-
that's the basics
-
-
-
-
-It all comes together for an old screenshot of Blessfrey's main menu in my broken Japanese. やべーな!
-
-Last updated June 8, 2021
-
diff --git a/src/diary/hold/makeup-opinions b/src/diary/hold/makeup-opinions
deleted file mode 100644
index ecdc028..0000000
--- a/src/diary/hold/makeup-opinions
+++ /dev/null
@@ -1,29 +0,0 @@
-Let's chat about makeup again! Phyrra, cruelty-free and gothic beauty blogger, answered a
-
-
So please bookmark and visit every other Thursday (US time) for new articles! Also, message me wherever. I don't mind chatting.
-
-
reassessing things
-
I never really had a plan for how to use this site and was generally copying other portfolios and blogs. Having your own website is really cool, though. Unless I'm somewhere else for a community, there's no reason for me to still be fussing with image hosting services or any kind of content management tool. My server, domain, and custom code should cover everything. It should be the easiest thing in the world to show people what I've been working on, too - just show them my website, duh.
-
-
So what should I do with my website? Whatever I want. It should be obvious, but the drive to copy others and meet standard expectations is so hard to break.
-
-
First, I'm going to have embedded HTML5 applications. I'm not waiting for Blessfrey's first demo to do that, either. I'm making gamejam projects, prototypes, anything interesting, and slapping them right on the website. After all, a gamedev website should have games!
-
-
Second, I'm going to share programming and fashion projects. I used to have a separate fashion portfolio and a few blogs, but I was always struggling to match the guidelines for online content. It's more freeing to give myself a blank section of my general portfolio and a tenth of the blog to fill however I want. Some fashion designers like Kenneth D. King don't even organize their ideas into seasonal collections. The industry as a whole is reconsidering rigid expectations, replacing in-person runway shows with alternatives like direct press meetings, fashion photography lookbooks, and short art films. Why shouldn't a fashion blogger re-evaluate her portfolio?
-
-
-
Best practice says to be an SEO zombie laser-focused on a niche, but that doesn't make sense for me. I develop websites, games, programming projects, fashion projects, interior design projects, pixelart, writing, and more, and people in my life ask to see them. I want to work for actual people, not an algorithm.
-
-
technical journey
-
Blessfrey.me's needs are fairly simple - some static pages and a blog page. Blogging platforms are overkill for my purposes, and all those unused features would bog down the website at best and contribute to security vulnerabilities at worst. Also, they tend to collect private user information, and I'd rather not be responsible for that right now. So I write and maintain this site from scratch. It's plain fun to write my own platform. Besides, it just makes sense for my programming portfolio to be something I programmed.
-
-
I always thought PHP developers were so cool as a kid, so Blessfrey.me was originally written in PHP. That didn't last long. I could compare pros and cons, but PHP was too unenjoyable to maintain. Its documentation is crazy, though. Each page has a comment section with 19-year-old posts criticising the language. So bizarrely negative and old!
-
-
Now I use Bottle, a Python micro web-framework, its built-in template engine SimpleTemplate, and HTML and CSS. It's deployed using Docker. Any embedded applications are probably HTML5 written in Godot Engine.
-
-
plans for the future
-
The website has plenty of room for improvement. It looks pretty wonky on mobile and tablets, and I've only been testing in Firefox and Chrome-based browsers. It's functional and has a decent amount of content, though, so I'd say it's a-okay to take out of maintenance mode for now.
-
-
Next I'm going to work with every resolution I can get my hands on and iron out the code. Each page is wordy and unstructured, but I'll rein them in soon. I'll also properly implement my character database, so I don't have to use clunky Toyhouse anymore.
-
-
let's appreciate what we have!
-
Don't go through the motions. If you have anything super cool like a website, don't just use it how you're "supposed" to use it. Put your possessions to work and have fun with them!
Everything's coming together. I've been learning a lot and think I'm finally ready to start sharing my work.
-
-
-
up and up
-
I've had a mostly solid horizontal slice of Blessfrey ready for a while, and this cycle of system revamps is finally able to support the sophistication of content I want. When I finish this iteration of skill systems and AI, I will be ready to make a real demo release of Blessfrey!
-
-
I don't know why it never occurred to me that I don't have to hold back my website waiting on that demo, though. Releasing and publishing is an important skill in itself. I threw together No-Legs the Cat in a few hours, exported it, hosted it on itch.io, and embedded what is currently the crown jewels of my website. Finally! I have a gamedev website with a playable game on it.
-
-
All this time, my website maintenance skills have been getting stronger. I have a years' worth of content as a buffer. My artist's block has dissipated for the first time in years, and I actually enjoy drawing concept art and character designs again. I've also spent a year trying different languages and frameworks and improving across the board. The website's already a night and day difference from old versions, and I finally feel comfortable with where it's at.
-
-
changes
-
This is my website, so I might as well use it however I want. If I have a website, I shouldn't have to rely on anyone else for image hosting or digital content presentation. There's no reason for me to have to pull up my phone all the time to show people what I'm working on. Blessfrey.me can take care of all of that for me.
-
-
From now on, I'll post fashion content here. I used to have a separate online portfolio for it and tried a separate blog from that once, but I was always struggling to fit into standard formats. Giving myself a blank section of my general portfolio to structure however I want is freeing. Some fashion designers like Kenneth D. King don't even organize their ideas into seasonal collections. The industry as a whole is moving away from the rigid structure of in-person runway shows in lieu of directly meeting with the press, releasing lookbooks of fashion photography, and shooting short art films. Why shouldn't a fashion blogger re-evaluate her portfolio, too? Maybe I'll add a section for general art here, too, someday. Who knows?
-
-Maybe best practice is to stay laser-focused on a content niche, but I'm not an SEO zombie. I develop websites, games, programming projects, fashion projects, interior design projects, pixelart, writing, and more, and they all deserve some web real estate. Maybe later, I can work with clients through here, too, but that is a dream for the future. For now, I'm keeping everything Web 1.0. The security is so much easier that way.
-
-
plans for the future
-
That isn't to say the website's perfect as it! It looks pretty wonky on mobile and tablets, and I've only been testing in Firefox and Chrome-based browsers. It's functional and has a decent amount of content, though, so I'd say it's a-okay to take out of maintenance mode for now.
-
-
Next I'm going to work with every resolution I can get my hands on and refactor my code a little. Also, I have a different vision for the formatting of most pages. The demo and fashion pages could definitely be broken into pieces. There should probably ultimately be a separate, permanent page for each HTML5 application. I also like having not just my Blessfrey characters but all my ocs here. It's like Toyhouse, but the price of custom CSS is already included in server costs. If nothing else, it'll be nice for when Artfight's sputtering.
-
-
let's appreciate what we have!
-Don't go through the motions. If you have anything super cool like a website, don't just use it how you're "supposed" to use it. Put your stuff to work and have fun!
-
-
-Last updated July 28, 2022
-
diff --git a/src/diary/hold/nolegsthecat b/src/diary/hold/nolegsthecat
deleted file mode 100644
index a4373a4..0000000
--- a/src/diary/hold/nolegsthecat
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
No-Legs the Cat is a 2D maze game featuring Poltics Cat! Help him find his legs! He can't move by himself, so scoot him around with the arrow keys. Don't forget to feed him all three breakfasts or he'll starve!! Go play it here or on itch.io.
-
-
-
It's not much - just a demonstration to myself that I can export a game and embed HTML5 applications here. It runs pretty well locally, so we'll see how well it runs on the live server in my playtesters' browsers. I'm getting close to releasing the first minor demo for Blessfrey, so I'd really rather iron out all the kinks with a short and simple project first, you know? Dreading the day I have to handle serialization in the browser.
-
-
Have fun! More games coming soon.
-
-
faq
-
who is poltics cat?
-
-
My kitty!
-
-
It's just an inside joke. There was a guy who kept interrupting the political discussion channel by posting his pet, so I tried to imitate him with my own politics cat. Only I made a typo, and it stuck.
-
-
where'd his legs go?
-
Aren't cats cute when they sit like that? It's called "loafing." Kitty's so fluffy that his legs become totally hidden when he does that, and he just stares helplessly at us when we start heckling him.
-
-
It looks like his legs are missing for real this time, though. He couldn't have gotten far without them, so they have to be somewhere in the maze.
-
-
isn't one breakfast enough?
-
I dunno, my cat is weird. He wants us to give him breakfast first thing in the morning, then again when we eat our own breakfast. It's still so early, it's like he eats two breakfasts. He doesn't care about food for the rest of the day. It's like the concept of lunch and dinner are completely foreign to him. He's a dishonest little guy, though, so he'll come to both my husband and me separately to beg for "second" breakfast. We're usually too smart for him, but I'd be lying if he hasn't bamboozled us into three whole breakfasts before.
-
-
when are godot devs going to stop making everything out of the godot head?
No-Legs the Cat is a 2D maze game featuring Poltics Cat! Help him find his legs! He can't move by himself, so scoot him around with the arrow keys. Don't forget to feed him all three breakfasts or he'll starve!! Go play it here or on itch.io.
-
-
-
It's not much - just a demonstration to myself that I can export a game and embed HTML5 applications here. It runs pretty well locally, so we'll see how well it runs on the live server in my playtesters' browsers. I'm getting close to releasing the first minor demo for Blessfrey, so I'd really rather iron out all the kinks with a short and simple project first, you know? Dreading the day I have to handle serialization in the browser.
-
-
Have fun! More games coming soon.
-
-
faq
-
who is poltics cat?
-
-
My kitty!
-
-
It's just an inside joke. There was a guy who kept interrupting the political discussion channel by posting his pet, so I tried to imitate him with my own politics cat. Only I made a typo, and it stuck.
-
-
where'd his legs go?
-
Aren't cats cute when they sit like that? It's called "loafing." Kitty's so fluffy that his legs become totally hidden when he does that, and he just stares helplessly at us when we start heckling him.
-
-
It looks like his legs are missing for real this time, though. He couldn't have gotten far without them, so they have to be somewhere in the maze.
-
-
isn't one breakfast enough?
-
I dunno, my cat is weird. He wants us to give him breakfast first thing in the morning, then again when we eat our own breakfast. It's still so early, it's like he eats two breakfasts. He doesn't care about food for the rest of the day. It's like the concept of lunch and dinner are completely foreign to him. He's a dishonest little guy, though, so he'll come to both my husband and me separately to beg for "second" breakfast. We're usually too smart for him, but I'd be lying if he hasn't bamboozled us into three whole breakfasts before.
-
-
when are godot devs going to stop making everything out of the godot head?
Some gamedev advice I've heard is to actively journal while gaming. Try to see from gamedev and player eyes simultaneously and learn from the risks taken, get inspired by different genres, and generally increase your exposure to the medium. I might as well try it.
-
-
I haven't written about games outside of Steam reviews, so maybe it's easiest to start with a favorite: Oblivion. I've been going through an Oblivion phase again lately anyway. In the Gaming Diary series, I'll give a description of the featured game then paint in broad strokes what's fun and what holds it back. It'll be like a game review but for game designers. I'll keep a nitpicky journal privately.
-
-
the best sandbox
-
The Elder Scrolls IV: Oblivion is a 2006 action/adventure game by Bethesda, sandwiched between Morrowind and Skyrim. You play as a
-
-
I've spent thousands of hours easily in Oblivion, but I don't have a normal relationship with it. I've only finished the main quest once and still haven't completed all the quests after all these years. The bulk of my gameplay has been spent roleplaying in Anvil or making mods. Judging from my backup folder, I've been making significant edits to the game every few months since high school. So for me, Oblivion is a sandbox, or maybe even just a level editor with a lot of premade content.
-
-
So what are the issues keeping me from playing the game as a game?
-
problems with the game
-
Obviously, the combat and level scaling is bad, but every reviewer in the world has torn into those topics already. Honestly, The Elder Scrolls is strong in adventure, not combat, so I'm not miffed by it. Few modern games (post-2005) are compelling by that metric alone. Morrowind is propped up as so much better, but the RPG aspects are barebones and won't punish you much at all for neglecting to plan your class. The So long as you are willing to pour a few hours into missing with your weapon or lockpick or spell or whatever, you'll start hitting and hard. (well, Morrowind DOES has cool spells like levitation that tie into levitation dungeon puzzles..so it's an awesome RPG in some ways.) It's like offering high praise to Planescape Torment then extending that praise to Planescape Torment's combat. So long as the combat doesn't detract too much from the game's high points, that's okay with me.
-
-
I sink into Daggerfall and Morrowind when I play, but I'm not sure I felt that way even when first started Oblivion. The art direction never looked good to me, unlike Morrowind's intriguing alienscape. The level design is overwhelmingly bland (overworld, dungeons, cities, houses). They haven't aged well, either. After seeing Witcher 3's massive and believable cities overflowing with workers and pedestrians, the Imperial City is a ghost town.
-Oblivion has a particularly pleasant soundtrack, so it's not bad to walk around town or the forest. Daggerfall has incredible dungeons that, combined with some random quest objective, are strong enough to stand on their own. Plenty of Morrowind's dungeons stand out to me, too, with their levitation and waterbreathing puzzles, strong aesthetic differences between caves and Dwemer underground cities. I'm not sure any really stand out to me in Oblivion. The puzzles in Ayleid dungeons are pretty basic and easy to just run through, heal up, and move on. There's nothing to really learn about the Ayleids, despite game taking place in their old capital. Very shallow inclusion.
-
-
Part of the problem I mentioned is that I'm forcing myself 10 years later into trying a significant amount of the content. Especially back when I was in high school, I was the kind of person who 100%'ed every game I touched. Oblivion makes it very unrewarding, very tedious, and too obscure to dig into the game. I slept in an inn maybe once. I stopped walking on foot unless I forced myself, opting to map travel, missing out on the opportunity to find small quests in the wild.
-
-(screenshot of witcher 3 city vs imperial city)
-(screenshot of meme dialogue)
-(screenshot of cool morrowind dungeons and interiors)
-(screenshot of daggerfall dungeon)
-(screenshot of Planescape torment combat)
-
so what carries the game?
-
That would be the writing. It's not surprising in the slightest that every time a 'best quests ever' article or thread pops up online, the And Then There Were None quest, the painting quest, Glarthir's quest, and other Oblivion quests. It's creative and cool, but I think there's more to its lasting popularity. I think Oblivion was emulating a memetic quality before memes had the importance they do together. The dialogue is editted and tight. Each screenshot of text can stand on its own, and is often hilarious on its own. It's only boosted with the uncanny Bethesda freeze and zoom onto the ridiculously ugly potato faces that change tone and expression line by line.
-
-
The part that kept the game running at all times for me was the music. The music is particularly pleasant. I've heard Jeremy Soule was inspired for at least some tracks by a car accident and his new appreciation for life, but I haven't verified that. Morrowind's doesn't have enough variety, so the big movie adventurer score plays when I'm just reorganizing my crates at home, so though nice, it can be inappropriate at times. Skyrim's has almost too much variety and seems more complicated, so it's more difficult for my untrained ear to pick out particular tracks to tie to memories in-game. Oblivion's is the sweet spot in the middle. Simple, pleasant, and always ties into what my character is currently doing. I spent so much time studying or doing homework, using the game as a 12 hour oblivion study and chill video running in the background. If I went a long time without playing then heard the soundtrack, it pulled on my heart. I don't feel this way about many games, but a huge portion of Oblivion is the soundtrack to me, and I wouldn't be surprised if others feel this level of connection between the two.
-
-
I feel like it was their last artistic, vulnerable endeavor that was trying to be more than a commercial project. The radiant AI has some wild stories. Only Bethesda would surrender their control over the player's experience and hand it over to not only the player but the NPCs. Even if the radiant AI is shackled in its current state, I still can seldom visit Olaf's inn in Bruma without witnessing a town-wide brawl. It makes the game unplayable to a degree. There were plenty of interesting NPCs I only learned about on my second playthrough because so many died off-screen during my first. It gives the game the same unpredictability that old Sims games had, but the simulation was obviously the point of those games. There's something raw about putting that into an RPG. Despite being a quest marker game, it is also comfortable about filling the world with content on well-traveled paths. There are still quests I am discovering for the first time, albeit it small ones in remote inns. Most games these days try as hard as possible to put the player on rails. If they make a good quest, they force the start point into you hand.
-
-
Most people wouldn't say it's the writing and music and certainly not the art, though. They'd say it's the modding community. They'd probably be right, but there's probably plenty of highly moddable games out there that never gain any traction. I don't think Fallout's is nearly as impressive, despite the games being very similar. Oblivion is just particularly inspiring to mess around with! The community surely would have never come without the name recognition and actual merits of the game. Oblivion has an awesome modding community, though, that still is active even today. I'm not sure if Bethesda manages it well, with all the attempts to monetize, control the platform on which mods can be published, and incompatible rereleases of theirs games, but once they put the construction kit out there, people are going to publish mods.
-
-
I'm happy with the game as is, so I'm not motivated to do much more than disable cliff racers and make a few houses. Oblivion is so simple, though, (it's not too far from a walking in a fantasy forest emulator) that I don't feel as bad about drastic modding. The graphics are right on that line of modern 3D graphics but still within grasp for amateur modelers to create nonclashing models for, too. With localization mods making the game accessible to new communities at staggered times, there were several waves of new cultures making mods. Japan's in particular stand out, with all their Japanese-influenced Akavir mods and cute clothes and character models.
-
-
gallery
-
I'll share some of my personal screenshots.
-
-
-
-
-
-
-
-
-
Don't ask me all the mods...
-
-
what would I like to emulate from Oblivion?
-
I can't say anything 100%, only point out things I admire.
-
-
Maybe it's a bad thing for a dev to say, but it's comforting that a game with such awkward graphics and objectively poor and unfun gameplay mechanics and systems (imo lol) can be held up so well by creative quests and NPC dialogue, music, willingness to try some unusual wacky mechanic.
-
-
Definitely going to take notes from the writing. The memetic, screenshottable quality is a very smart guideline to shoot for while writing. Avoiding awkward breaks between screens is less shareable. Screenshots are more attractive when they have complete sentences or at least complete ideas on them.
-
-
The cities have a lot of detail and environmental storytelling to appreciate, but they come across as so lifeless and dead to me today. After all the time I've spent redesigning Chorrol and the Imperial City to have more character and life.
-
-
I love that they didn't give us a simple level editor - they gave us tools capable of creating most of the content in the game. If I could make the content with tools that I could release alongside the game, that would be really cool. I'm already designing skills with this mindset. I think most devs make tools to develop their game with, so I'm not really sure why most of those tools are never released. It'd take some effort to polish them and make them more usable by amateurs, but practically no one releases them. You'd think the Construction Set and GECK wouldn't be so special, but they really are.
-
-
Then, the most important part, the aesthetic of a couple of Oblivion mods was the direct push that spurred me to start writing Blessfrey. I don't still have them, but it was like a motorcycle mod, some streetwear mods, etc. That idea of going to a relatively believable modern day relatable setting and going shopping and hanging out with your cute elf boyfriend and having a greatsword and cute clothes was extremely lore-breaking (though probably not to Kierkegaardists) but enthralling. I had a few more ideas for mods, like a Spider Daedra themed fast food joint in the Market District, but the level of modding I was looking at was so much that I halted and started making my own game instead with that aethetic instead. I'm not sure Blessfrey really resembles those original mods, but that was the impetus, the spark. So...honestly, all of Blessfrey is an attempt to emulate Oblivion at least in some small part.
-october 15, 2020
-#bottle #css #html #simpletemplate #webdesign #webdevelopment
-
-Blessfrey.me is a personal website I use to showcase projects and blog my process. It was originally written in PHP, but now it uses Bottle, a Python web framework.
-
-
why not use a premade blogging platform like WordPress?
-Blessfrey.me's needs are fairly simple - some static pages and a blog page. Generalized blogging platforms are overkill for my purposes. I don't need support for multiple authors, comments, localization, e-commerce, and so on. Unused features bog down the website at best and contribute to security vulnerabilities at worst.
-
-Also, it's fun to write my own platform. I'm learning a lot as I take my website from initial sketches, to Hello World, to various prototypes, to something polished enough to show my friends. Regardless, since it can be considered my programming portfolio, it makes sense that it itself should be something I programmed.
-
-
why Bottle?
-I originally wrote Blessfrey.me in PHP. I switched to Bottle after looking for a templating engine. Bottle comes with SimpleTemplate and can do everything PHP can do but faster and with less verbosity. Plus, I get to write in Python, a much more enjoyable language.
-
-
how does blessfrey.me work?
-
SimpleTemplate
-Instead of existing as a static collection of HTML pages on my server, Blessfrey.me's pages are constructed upon request by the website's Bottle script from SimpleTemplate templates.
-
-Every page uses the frame template pictured below, so the basic skeleton is consistent without requiring copy-pasted code. Each page is individualize through bringing in a new template within {{!base}}. (Double curly brackets refer to variables, and exclamation marks disable escaping.)
-
-
-
-(The code can be found on Pastebin.)
-
-The header template below (brought in at % include('header.tpl')) has some variables, too, which are supplied by the Bottle script. If Bottle doesn't provide a title, it defaults to 'blessfrey.me.' Variables can also be used in paths and URLs.
-
-
-
-(The code can be found on Pastebin.)
-
-You can insert Python code into the templates for dynamic pages. Below is an excerpt of the template for the diary page. This code fills the page with diary entry previews using a for loop. Not shown is the first line % rebase('frame.tpl'), which tells SimpleTemplate to insert this content at the {{!base}} variable in the frame template.
-
-
-
-(The code can be found on Pastebin.)
-
-The Bottle script sends the max number of snippets per page (the limit) and a list of lists containing all the diary snippets. It receives the page number from the URL. For the snippets that will appear on the given page, it converts the list data into HTML code to be displayed in the browser.
-
-
-
Bottle
-Bottle takes URLs and generates the corresponding web page upon request. Each URL is tied to a method, which returns a template and a dictionary of data to be used in the template. Since Bottle is a Python framework, you have access to all the Python libraries you need.
-
-
-
-(The code can be found on Pastebin.)
-
-This is what the methods for specific routes look like. So every time you go to Blessfrey.me/diary, one of the above methods is called, depending on whether also you supplied an integer. To generate the page content, it calls a lot of Python functions to find my diary entries, convert them into previews for the snippets section and headlines for the sidebar, and get the current time for the footer.
-
-
-
-
CSS
-The website is styled using CSS, heavily relying on the CSS Grid and a bit of Flexbox. CSS Grids can be used inside CSS Grids, so my pages are generally blocked out, with smaller internal grids managing specific content.
-
-
-
-
-The projects page is an example of nested grids. Almost every page uses the yellow general layout. The content unique to the projects page is mapped out in green, with a section for the header, featured projects, and other projects. The other projects use a 2-column grid in blue to evenly space out all the little thumbnails.
-
-The CSS code for project's general grid and the nested unfeatured grid are shown below.
-
-
-
-(The code can be found on Pastebin, but you can always see a web page's CSS by right-clicking and viewing the source.)
-
-Last updated June 8, 2021
-
diff --git a/src/diary/hold/ootd1 b/src/diary/hold/ootd1
deleted file mode 100644
index 4f4b9a3..0000000
--- a/src/diary/hold/ootd1
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
outfit of the day
-august 11, 2022
-#fashion #ootd
-
-
Sometimes, I feel like remembering what I wore.
-
-
lazy tiger
-
Don't feel like wearing pants or a blouse. Can never go wrong with my favorite skirt and a t-shirt. Today, I went with a black souveneir t-shirt with a vibrant orange tiger on the front. I think the colors look okay with my fall coat & hat combo. There was a simple moonstone teardrop pendant on a gold-colored chain, but I took it off before picture time. Oops.
-
-
I wore makeup to match - red eyeshadow as eyeliner with mauve-purple shimmer blush and a purple-plum lip water stain.
-
-
-
-
Clothes:
-
-
Hat: C&C (ebay repurchase of a wholesale hat from an Atlanta Apparel at AmericasMart tradeshow)
-
Coat: Avec Les Filles's Longline Plaid Blazer in RED MOTIF (Anthropologie)
-
Pendant: (TJ Maxx)
-
T-shirt: Cincinnati Zoo gift shop
-
Skirt: Free People (bought in 2011 and has never had a break)
-
Socks: some pack from Target
-
-
-
lazy
-
Don't feel like wearing pants or a blouse. Can never go wrong with my favorite skirt and a t-shirt. Today, I went with a black souveneir t-shirt with a vibrant orange tiger on the front. I think the colors look okay with my fall coat & hat combo. There was a simple moonstone teardrop pendant on a gold-colored chain, but I took it off before picture time. Oops.
-
-
I wore makeup to match - red eyeshadow as eyeliner with mauve-purple shimmer blush and a purple-plum lip water stain.
-
-
-
-
Clothes:
-
-
Hat: C&C (ebay repurchase of a wholesale hat from an Atlanta Apparel at AmericasMart tradeshow)
-
Coat: Avec Les Filles's Longline Plaid Blazer in RED MOTIF (Anthropologie)
-
Pendant: (TJ Maxx)
-
T-shirt: Cincinnati Zoo gift shop
-
Skirt: Free People (bought in 2011 and has never had a break)
-february 18, 2021
-#character #refactor
-
-The character script was one of blessfrey's first scripts. Since it's never seen a serious refactor, it has retained its clueless beginner style to this day. Every single line of code related to characters was buried somewhere in this unmanageable monolith. The time has finally come for refactoring.
-
-The two biggest problems with my character script were the lack of structure + encapsulation.
-
-
adding structure
-An entire game can fit in one mega script, but an object-oriented approach is more manageable. It's good to keep your code close to where it is implemented.
-
-First, I expanded the character's node hierarchy. I combed through the code, forming abstract categories for each section. These categories became my subnodes. (Nodes are objects in Godot, by the way.) If a subnode was too complex, it was broken into another level of subnodes. Then, I cut+pasted as much code as I could into these subscripts. My tree now looks like this, when before, it just had the AI, Body, and UI nodes:
-
-
-
-
-
-
adding encapsulation
-Within the monolith, every part of the character had direct access to every other part. A major step towards getting everything running again was adding encapsulation, or grouping related logic + data into objects then restricting direct access of its internal components from other objects. I did this through designating entrypoints as the only way of performing actions or accessing data. These entrypoints are the character's verbs and setters + getters.
-
-
verbs
-Verbs are what the object does. Some of them are obvious, like "use skill," "be damaged," and "pick up item," but some of them are more abstract, like "calculate level."
-
-The character script should act as a central hub, executing verbs by contacting subnodes for the actual logic and passing back the output. These subnodes should act as black boxes, so the character script only worries about input + output, not how the request is performed.
-
-
-
-Before, I didn't apply this concept to the character at all. Outside objects would travel all over the tree to pick out specific methods. That resulted in code like body.get_parent().UI.skillbar.healthbar.label.set_value("100") instead of something like character.set_health(100). As I modified systems, all the outside references made it difficult to remove old versions. Since everything didn't necessarily use the entrypoint, there was a lot of redundant code + unexpected behavior.
-
-
-Another closely related concept is setters + getters. If you tack a setget followed by method names onto a variable, those methods will be called whenever you access that variable. The first method is the setter and is conventionally prefixed with "set_", while the second is the getter. If you don't want a setter, don't write anything before the comma: setget , get_whatever. If you don't want a getter, don't even add the comma: setget set_whatever.
-
-
-
-Setters + getters are related because they increase consistency. If something needs to happen every time a variable is changed, the setter is a good entrypoint. If a variable needs to be obtained in a specific way, that process can be taken care of inside a get_thing(). This way, your variable-specific code is encapsulated, and you are no longer encouraged to manipulate them outside of their little box.
-
-Unsurprisingly, using verbs, black boxes, and setters + getters fixed a lot of long-running bugs.
-
-
controlling flow
-Another problem popped up concerning when the tree's nodes initialize. Now that everything isn't in the same script, everything isn't ready at the same time. To see the initialization order, I made a small project. Each node prints its name when at ready, and, as you see, it works from lowest level to highest level, top node to bottom node.
-
-
-
-To have more control over the flow of my character, dependency-sensitive nodes rely more on a setup method than the _ready method. Also, characters who inherit from the base script use a super _setup method called from the setup method for their own specialized needs. (Super methods are discussed in tidying up my skill phases.) This way, I can ensure a node is ready and has all its properties set at the moment it's needed.
-
-
-
-
-
happy script
-The refactor paid off immediately. So many "known issues" were immediately resolved. The character scripts are way easier to maintain now. The main script's halved in size. And I feel like I've improved a lot since I first started working on blessfrey. I wanted to go through the rest of the program and apply these concepts throughout, but it turned out I was already using them. It was just this ancient mess of a script that was left behind.
-
-I'll finish with a before + after of the base character script.
-
-
-august 20, 2020
-#assets
-
-pixel joy is a small, round sans-serif pixel font, made using FontStruct's FontStructor for an old version of Blessfrey. Freely use and edit for your personal and commercial projects. No credit needed.
-
-Download it from FontStruct.
-
-
-
-Font released under public domain. Sample text in the preview image is from Imogen Heap's "Pocket Sun," and the colors are from Adigun Polack's AAP-64 palette. :)
-
-Last updated June 8, 2021
-
diff --git a/src/diary/hold/reject/201112 b/src/diary/hold/reject/201112
deleted file mode 100644
index 1fbff4f..0000000
--- a/src/diary/hold/reject/201112
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
tidying up my skill phases
-november 12, 2020
-#programming #skills
-
-In Godot Engine, you can call methods from a parent class by prefixing it with a period (.). So to access the move() method from a parent, call .move(). This is called a super method.
-
-Being called super doesn't mean there isn't a better way, though. I used to use super methods to build customs skills in blessfrey, but subfunctions is tidier.
-
-(Just so you know, blessfrey's skills have a number of phases of effects that must happen in order: skill press > activation > initial phase > main phase > end phase > cooldown.)
-
-
-
the old way
-Initially, I used super methods to give each phase custom effects and call the next phase. This was messy. If I ever redesigned the flow of the skill phases, I'd have to edit every single skill script. It also causes a lot of repetitive code in the individual skill scripts while the base script is tiny. The one-time script being the small one is no fair.
-
-
-
-(You can see the old method's code on Pastebin.)
-
-
-
the new way
-
-Instead, I can bring all the repetitive steps into the base class, sandwiching in a subfunction where the custom effects would take place. Now I only need to add what makes my skill unique inside the subfunction.
-
-I named the subfunction after its main function and added an underscore to the front. So in the base script, I fit _functionality(user, action_target) into functionality(user, action_target). Then the individual skill scripts only need the subfunction, none of the other repetitive code from before. The subfunction is empty in the base class and filled with unique code in the child classes. Since skills inherit, the unique _functionality subfunction will be called automatically from the base script's functionality.
-
-
-(You can see the new method's code on Pastebin.)
-
-
-
problem solved!
-
-The base script holds all the lengthy code in one place, while I only need to write the unique effects in all the hundreds of skill scripts. That saves me time making, refactoring, and maintaining skills. Yay.
-
-
diff --git a/src/diary/hold/reject/201126 b/src/diary/hold/reject/201126
deleted file mode 100644
index 53738ee..0000000
--- a/src/diary/hold/reject/201126
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
pretendOS - a game inspired by windows XP
-november 26, 2020
-#sideproject
-
-Getting started with blessfrey's AI was overwhelming, so I took a break and worked on a new game. I didn't get very far. It's not even on my hard drive anymore. It's cute, though.
-
-Unlike blessfrey, where coding takes up 90% of the effort, pretendOS is mostly graphical assets + sounds with barely any functionality. It's a UI game, after all. Since it's a game requiring a completely opposite skill-set, I was able to make progress on something while reading up on game AI. I also got to work on new things like particle effects.
-
-
-
Inspiration
-
-
Windows XP
-The game takes strong aesthetic inspiration from Windows XP. It almost fits the 90s vaporwave trend, but I'm too young to really remember Windows 95. I obviously have nostalgia for it as my first operating system (as far as I remember - I was a toddler then), but I mostly knew it as the Lego Island machine propped up in the dining room. As my family upgraded computers over the years, Windows never really impacted me as anything more than something that can run some videogames and whatever popular web browser of the time. That is, until Windows XP.
-
-XP really hooked me. It was the first operating system I spent as much time exploring as I spent using software. XP's edition of Paint was my favorite yet, I loved fiddling with the themes and accessibility options, especially Microsoft Sam, Rover, and Clippy. I started watching YouTube videos on how to use the Command Prompt. XP was just fun to use. I've found better desktop environments and operating systems since, but I never got over that aesthetic: smooth, blended graphics with hard pixel edges in 32-bit color with an alpha channel, right at the cusp between pixel art and vector graphics. Vaporwave for me is Luna olive green, or the "Fisher-Price interface" as Ars Technica users called it.
-
-
-(screenshot from Wikipedia - referencing articles from PCWorld and Ars Technica)
-
-
-There were a few other experiences behind the game, too.
-
-
Mother's Day E-Card
-I finally got my husband to try Godot Engine, and he used it to make a digital Mother's Day card for his mom. (Cute.) Opening the card displayed a 3D heart (a "cardioid") that bounced to the beat of a song while 2D cardioid particles rained down. It was all programmatically generated using geometry instead of 3D + 2D assets, so the application was very small. He made the graphics side of things look really interesting, and I wanted to play around with particles, too. Just...not as fancy;;
-
-
Secret Little Haven
-I also just played a cute pretend OS game on itch called Secret Little Haven It's quite short, very story-driven, and kind of buggy, telling Alex's struggle with gender identity through IMs. Honestly, pretend OS games and coming-of-age chat sims are nothing special, but Secret Little Haven's believability makes it really stand out. Instead of defending against cheesy + inaccurate deep web hacking attempts, you use an in-game terminal to get around child locks set by Alex's dad. Those terminal puzzles are the most realistic and relatable hacking I've seen in these games. SLH isn't super sophisticated or in-depth, but it shows how cute and believable a pretend OS game can be. I'd love to make a little environment like that, that's as fun to fiddle around with as XP.
-
-
-
pretendOS
-
-So what's pretendOS? Like I said, not much besides pictures. I only worked on it for a few days.
-
-What really bogged it down was Cat Chat. I wanted an AI chat personality that talked like a cat. I could do that, but that kind of thing takes a lot of time, when this project was really just procrastinating working on AI.
-
-The rest is cute, though. The icon winks when you click it, the cursor's kinda 2000s-free-animated-cursors, and it's got those Fisher-Price colors and bubbly sounds everywhere that I liked as a kid.
-
-
-
-It's cute. I'd like it to be finished in some way. I went ahead and cloned my old repo. Maybe I'll fill it out with more applications during a game jam or something or at least finally get that cool Secret Little Haven curved screen shader working.
-
diff --git a/src/diary/hold/reject/210121 b/src/diary/hold/reject/210121
deleted file mode 100644
index eb8738c..0000000
--- a/src/diary/hold/reject/210121
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
web development resources
-january 21, 2021
-#accessibility #color #css #html #webdesign
-
-I'll collect frequently used resources for web design here.
-
-
-
CSS Grid Generator - build a basic CSS Grid by changing the number of columns + rows, adjusting their dimensions, and adding containers.
WebAIM's Contrast Checker - check whether your font color contrasts well against your background color, at least in the eyes of a computer.
-
Coolors - select and lock colors then generate palettes by pressing space. Click on a color to view shades + tints, so you can tweak contrast without losing hues.
-february 4, 2021
-#offtopic
-
-2020 was unproductive for me to say the least. 2021 probably won't provide a better global backdrop, either. I know one thing for sure, though. From now on, when I pray, "Father, thank you for this day," I won't take a normal, healthy day for granted. This year, I want to make the most of what I've been given.
-
-
the way down
-As I watched the early stages of COVID, I began limiting outdoor activities in January, and social distancing was officially mandated months later. Being separated from people all year is draining. Even if I'm a quiet person, I get my energy from those around me. Obviously the global pandemic produced heart-wrenching footage and headlines from China, Italy, South America, and my local area, but 2020 threw another unrelated set of troubles at me, too. Going through everything without being able to go out and have fun left me beaten down and unfocused.
-
-
the way back up
-After an indoor year, going out became such a fantasy. Outside of work or special events, I viewed makeup as little more than complementary to my outfit. Now, a simple grocery trip feels so exciting that it feels worthy of my cutest clothes and makeup.
-
-I'm more of a lipstick and complexion products girl, so face masks forced me out of my comfort zone. I started watching >100K beauty youtubers like Lauren Mae Beauty, Hannah Louise Poston, and Angelica Nyqvist for eyeshadow tutorials. It turns out nobody makes tutorials anymore, but GRWMs and other modern equivalents incorporate self-reflection about makeup, particularly the wastefulness of large collections. (This is an aside, but this is a pocket of Youtube where girls act like it's normal to have a storeroom full of PR makeup and still buy makeup on a monthly basis. Then they constantly preach down at viewers for our consumerism, all while sharing affiliate links and hyping new releases lol. It's wild. Last time I watched makeup Youtube, no one knew what PR was. They just shared techniques and did skits.) It's bizarre what happened to makeup Youtube, but the new "minimalism" wave resonated with the wastefulness of my time and resources during 2020. It's silly, but it snapped me out of my funk.
-
-
panning
-Minimalist makeup youtubers value panning and product empties. When they continuously collect new releases, either through PR or compulsive shopping, they rarely use a product more than once. #Projectpan and #panporn criticize this behavior and are full of well-loved makeup, like this Instagram girl's powders.
-
-
-
-
-Panning obviously encourages you to buy less and all that, but the message that stands out to me is to use the things you love. Makeup gets discontinued all the time, so there's a natural tendency to save your favorites. That's wasteful, since makeup is more likely to expire than empty. If it's your favorite, you should use it every single day!
-
-
panning other areas of life
-I guess the concept is obvious, but panning spoke to me. The wisdom can be applied anywhere - unfinished projects, videogame backlogs, unread book collections, skipped Bible readings, stocked up baking ingredients, unused art supplies, ignored MOOCs, forgotten exercise equipment, and hoarded assets and libraries...For each item in those areas, I could have been developing skills, gaining new perspectives, and having fun. Otherwise, it's just junk taking up space and expiring.
-
-In 2021, I'm going to be more intentional about enjoying my time at home. It's February, and I already finished 2 books, made freezer cookie logs, and finally completed a playthrough of Planescape: Torment. This is coming from a girl who was too bummed out to finish a single game or read a single book all last year, too. The pandemic may have disrupted my life, but stifling myself isn't healthy.
-
-Happy (belated) New Year. Enjoy 2021 to the fullest. :)
-
-Last updated January 11, 2022
diff --git a/src/diary/hold/reject/220114 b/src/diary/hold/reject/220114
deleted file mode 100644
index 58884ca..0000000
--- a/src/diary/hold/reject/220114
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
goalless games
-january 14, 2022
-#game-design #philosophy
-
-
goalless games
-Some developers are happy to make loose, meandering sandbox games without no true win or fail state. The concept of goalless games is controversial among semantic people, but I feel that the genre with Garry's Mod and all the dressup games and physics simulators is enviably successful if not totally legitimate. It's not like the overwhelmingly popular Minecraft and old RuneScape don't share one foot in this genre, either, with their relative lack of direction and gameplay dominated by self-driven goals. I don't even feel like a central story or main objectives would improve these games (especially after watching Minecraft tack on some tedious hunger mechanic and an awkward final boss).
-
-
my need for structure
-I'm just not a goalless game designer myself.
-
-It sounds nice to provide an open world where the player can set out after his own goals without the dev placing horse blinders on his head. In reality, though, a game designer can't force a player to share the game's goals in the first place, so there's no need to purposefully design a game to be goalless. For me, I feel like neglecting to set a game's goal reflects a lack of a game development goal. A goal is helpful to not only the player but also to the developer. A central vision of the game's progression will imbue each piece of the game with more purpose and help them fit together more seamlessly as a whole. It's a safeguard against filling a game with pointless, incongruent clutter at whim. Obviously not every developer needs a goal-oriented approach, but I work better with one.
-
-No matter what philosophy the game designer has, though, a player will do what he wants to do, even if it has nothing to do with the goal of the game. For example, roleplayers are prominent members of MMO communities, and they might never max out a character or finish the main storyline. They throw out all the game designers' work and focus on finding the perfect backdrop and acting out their own scene instead. There are plenty of screensaver simulators and 3D chat servers out there for them, but they turn up in "real" goal-driven games, too. There are touches of this aberrant behavior in everyone who doodles with bullet holes, names their character something funny to harvest out-of-context dialog screenshots, or hoards a useless item.
-
-
players do whatever they want anyway
-So in a way, game designers really don't need to design a goalless game. They can trust players to forge their own fun from even the most rigid hallway simulator. In my opinion, deliberately not designing goals runs the greater risk of making players too lost, bored, or overwhelmed to find their own fun or not even finding incentive to try the game in the first place. A better approach is in the middle, building towards a purpose while taking a tip from goalless games by filling the world with choices, interesting tools, and interactibles that are fun for fun's sake. At the end of the day, though, obviously do what works for your players!
-
-Last updated January 12, 2022
-
diff --git a/src/diary/hold/reject/220120 b/src/diary/hold/reject/220120
deleted file mode 100644
index 53e44f5..0000000
--- a/src/diary/hold/reject/220120
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
designing blessfrey's first demo
-january 20, 2022
-#demo
-
-
my goals
-The systems and game mechanics in Blessfrey are mostly present and functional, so I feel like it's a good time to practice releasing, hosting, and supporting a game. The first release will just be a tech demo. I want it to showcase the features in the game, have structure and goals, and have some of the same gameplay feel of future releases. Hopefully it's fun, but we'll see when it's all bolted together.
-
-The core of the game is curating from a wide variety of skills and combining them into a viable skillbar. I'm going to try to get away with skimping on content to put more focus on the release process, but skill variety deserves the most attention. I'll shoot for 30 skills for now, or in other words, 3-4 skillbar's worth without repeats.
-
-
finding structure
-I could release a goalless demo, but I fear people wouldn't explore long enough to discover any depth. If I could rip a level from the finished game, structure and goals would already be built in, but this demo will be more or less original content. I'll have to build structure as I go along.
-
-This demo should showcase more gameplay than story and world, so it should probably have more in common structurally with a tutorial room. I'll just fallback on the tutorial bingo approach again and hope it never loses its luster. Bingo is a great excuse to list gameplay prompts for the player while giving them some choice on how to proceed. It's also a game in itself, so I don't need to take my game design much further: every full consecutive set of activities is a little win with a prize and a full board bingo is a big win with a big prize. I'm not going to worry about a fail state, so the demo can be more like a playground than a challenge.
-
-The demo shouldn't just resemble a tutorial - it should be a tutorial. It is the first time unguided players will be able to play, so there needs to be lots of in-game guidance. I'll test a stealth tutorial and see how it compares to a more conventional tutorial. Ideally, the tutorial should be easy enough for veterans to breeze through without noticing it's even there, but nudges and tips are given to those who need it. It'd be even cooler if the tutorial doesn't break immersion, coming from level design, believable dialog, or from passers-by setting an example. Maybe it's a terrible idea and there's a reason why all games start out feeling like post No Child Left Behind era public school, but I want to try it out. Since I have the event system, it's just a matter of listening for lack of movement, unnecessary key spamming, stalling in quest progress, or any other apparent failures and sending someone over to help out.
-
-
world and story
-I won't be taking an exerpt of the story or using fully realized locations, but the demos should at least conceivably fit within the full game. This time, I'm just going to use two of the major supporting characters, Chloe and Night, (both healers) and enough of the school to service a demo. The courtyard is a relatively safe area with some easier enemies to the far side of the map, guarding collectible items. If you die, the checkpoint is in this field, managed by Chloe. The nurse's office is an item shop, run by Night. The storage room is a maze full of monsters and treasure. The areas, monsters, and dialog will be more involved than anything I've ever tested before, and it'll include a stress test skill. Let's see how the engine handles it!
-
-
ugly
-Of course, it's going to be pretty rough overall. It's the first alpha build released to the public, so there are a few bugs I know are still in there, some capable of crashing the game. Also, there are no frills when it comes to the audiovisual side - barely any animations, all audio is from the public domain, effects are carelessly placed, and so on. Like Yandere Dev says, "all assets are placeholder." :)
-
-Anyway, back to working on the demo!
-
-
-Last updated January 20, 2022
-
diff --git a/src/diary/hold/reject/220324 b/src/diary/hold/reject/220324
deleted file mode 100644
index 087e04e..0000000
--- a/src/diary/hold/reject/220324
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
applied skills vs. applied keywords
-march 24, 2022
-#skill
-
-
monitoring skills
-In Blessfrey, entities like to know where effects come from.
-
-For one, knowing the source of a killing blow allows for cute little feedback like the Binding of Isaac's death screen.
-
-More importantly, it allows mechanics to interact more freely. If the bleeding status effect on a character is linked with the Cat Scratch skill, used by Bad Cat, that opens up possibilities. Maybe there could be a skill that reflects target's status effects back unto the original dealer. Maybe there could be an effect that negates skills from animal sources. Maybe a skill could heal an ally for even more you are both suffering from the same skill. The source is important if I want to do anything beyond the basic "cure bleeding."
-
-
-
how should the data be bundled?
-Skills themselves contain keywords, references to the user and target, and any data that could possibly be needed. It's immediately obvious to just directly tack the still onto the back of an array on the target. It can never be that easy, though. Skills contain keywords, all of which have different durations and aren't necessarily in the tree at the same time. Also, there's not a lot of applications for cycling through all the applied skills, besides making something like Guild Wars's effects monitor and damage monitor.
-
-
-
-There aren't a lot of cases where the game would be looking to remove any instances of "Cat Scratch." However, there would plenty of skills looking to remove bleeding or status effects.
-
-It's a more direct approach to treat keywords and skills separately in the code. Characters can keep an array with references to the applied keywords instead of applied skills. The other data can be bundled with it as an array: [keyword, source, [tags]].
-
-The keyword is the important part because, in bleeding's case, it's the main culprit for the actual health degeneration of the character. It also has its own duration, so there's no conflicts with holding onto bleeding even if all other keywords from its skill expiring. The source is just a noncommittal reference, so it and its data can be accessed as needed. Maybe the keyword and skill contain everything needed, but I'm going to pull out some frequently accessed attributes into tags to see if that helps with efficiency.
-
-
it'll be better this way
-It's always a good idea to separate keywords from their governing skill. When skills and keywords are decoupled, each can run their course without interference.
-
-
-Last updated April 7, 2022
-
diff --git a/src/diary/hold/rssfeed b/src/diary/hold/rssfeed
deleted file mode 100644
index ad68601..0000000
--- a/src/diary/hold/rssfeed
+++ /dev/null
@@ -1,161 +0,0 @@
-
-
generating an RSS feed with python bottle
-march 18, 2021
-#bottle #rss #webdev
-
-After a few months of quietly running my blog as practice, I want to start sharing my articles with other people. I looked over my favorite gamedev communities and saw that GameDev.net apparently allows you to syndicate a blog through RSS. I never thought about making an RSS feed, so why not?
-
-
what is RSS?
-Before the massive centralized content platforms came into the mainstream, the internet was more like a constellation of individual websites. In lieue of algorithm-driven feeds and push notifications from major social media, RSS was designed to bring content from scattered websites into one place.
-
-RSS and its predecessors have been around since the 90s. RSS 2.0 (what blessfrey.me uses) was published in 2002. Even through it's old and falling in popularity, it's still used by some large aggregators today like Google News and Spotify.
-
-Here's a few examples from around the internet, a mix of large + small news websites and forums:
-
-RSS files themselves are written in XML. They should contain the latest 10-15 entries along with things like their title, link, summary, date, and author.
-
-Blogging platforms like WordPress already take care of the RSS feed, but there's no shortage of third-party RSS creators on the internet. Since I have already written code to display + summarize my articles on the diary page, the 'latest' box in the diary's sidebar, and the 'news' box on the index page, I figure I can format the data one more time into an XML file.
-
-Here's truncated version of blessfrey.me's feed as an example (also available on Pastebin:
-
-<?xml version="1.0" encoding="utf-8"?>
-<rss version="2.0">
-<channel>
-<title>blessfrey.me</title>
-<link>https://www.blessfrey.me/</link>
-<description>chimchooree's dev space</description>
-<language>en-us</language>
-<webMaster>chimchooree@mail.com (chimchooree)</webMaster>
-<item>
-<title>making an rss feed</title>
-<link>https://www.blessfrey.me/diary/entries//diary/entries/210318</link>
-<description>After a few months of quietly running my blog as practice, I want to start sharing my articles with ... </description>
-<pubDate>Thu, 18 Mar 2021 8:05 CST</pubDate>
-<guid>https://www.blessfrey.me/diary/entries//diary/entries/210318</guid>
-</item>
-</channel>
-</rss>
-
-I'll explain each tag, but they are also described on the RSS Advisory Board's Best Practices Profile. There are more tags, too, so research documentation + examples to see what suits your website.
-
-
XML declaration
-Identifies the document as XML and defines the version + character encoding. It's required and must be the first line.
-
-
RSS
-The top-level element that defines version number. It's required.
-
-
channel
-Nested within the RSS tags and describes the RSS feed. It's required.
-
-There's some tags nested within the channel. Title, Link, and Description are required.
-
-
-
title - defines the title. Mine is just my website name, but large websites may have multiple feeds. It's required.
-
link - defines the link to the channel. So, either your website or a specific area of your website. It's required.
-
description - describe the channel in a few words. I used my website's tagline. It's required.
-
language - defines the language, using a RSS language code. It's optional.
-
webMaster - provide the contact email + name for technical issues regarding the feed. It should look something like example@example.com (Name McName). It's optional.
-
-
-
item
-Nested within the channel. Each article will be defined with the item.
-
-There's some tags nested within the item. Title, Link, and Description are required.
-
-
-
title - defines the title of the article. It's required.
-
link - defines the link to the article. It's required.
-
description - summarize the article in one or two sentences. It's required.
-
pubDate - indicates the date and time of publication, conforming to the RFC 822 Date and Time Specification. Follow a pattern like Mon, 15 Oct 2007 14:10:00 GMT.
-
guid - A unique identifying string, which helps aggregators detect duplicates. Aggregators may ignore this field or use it in combination with the title and link values.
-
-
-
how to make an RSS feed
-I'm generating the RSS every time I update my website. That way, it always exists on the server and can be served as a static file. If I used a template, the RSS file would not exist unless it was accessed. I'm not sure if that would be an issue and haven't experimented.
-
-Since Bottle is just Python, I can generate the file similar to how I format my articles into diary snippets, pages, and headlines.
-
-I'll share the main code, but the full code can be viewed on Pastebin.
-
-
-The RSS Advisory Board and W3C have feed validation services that can check the syntax of Atom or RSS feeds. It's nice to check but don't feel pressured to meet all the recommendations if they don't suit your needs.
-
-
double-check
-Now I have an RSS feed, available at https:/blessfrey.me/static/xml/blessfrey.xml. Feel free to use it if you prefer to read through an aggregator and contact me if there's technical problems.
-
-Last updated March 19, 2021
-
diff --git a/src/diary/hold/skilldmv b/src/diary/hold/skilldmv
deleted file mode 100644
index 1c4e58d..0000000
--- a/src/diary/hold/skilldmv
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
skills aren't a manor; they're the DMV
-april 7, 2022
-#gamedev #gamedesign #skill
-
-
designing on autopilot
-Phases are necessary for skills to be reactive. For instance, take Blessed Purity: Cure 2 poisons from target. Heal for 35 per poison removed. So the Cure keyword comes first, and Heal cannot activate until the Cure phase resolves. To lay out these phases, I partially copied Guild War's skill effects without much thought: initial effect -> main function (not sure if there's even a name for this) -> end effect. Most keywords are thrown into the main phase, anything that needs to happen immediately goes in initial, and anything that happens at the end goes in the end.
-
-Naturally, I had a lot of problems with flow. Some keywords (like Bleeding) can last up to half a minute, while others (like Attack) are executed instantly. When I let the skill run without breaks, the end effect executed long before earlier keywords finished up. When I forced keywords to execute one at a time, I had projectiles that awkwardly stuck around until an unrelated keyword timed out.
-
-It's time to actually turn my brain on and design with diagrams.
-
-
-
building the skill like a manor
-
-
-
-If a skill was a manor, phases would be wings, keywords would be rooms, and doors would represent conditional statements. There are three main sections to stand in for the beginning, middle, and end. It makes sense if you don't really think about it. After all, the flow looks so clean and linear.
-
-
-
-
criticism
-The concept of a phase brings nothing to skills. In Blessfrey and even Guild Wars, "initial effect" and "end effect" are used more like conditions than integral structure. The majority of skills don't operate in phases anyway.
-
-Worse, my careless implementation runs every keyword sequentially, undermining any distinction phases had. There's zero difference between putting Cure in initial or in the first line of main.
-
-Some keywords need to know what skill they belong to, what skill other keywords belong to, and who their user and target are. The poorly understood flow of skills sometimes causes this information to be freed with the skill before it's needed.
-
-
-It makes me wonder what a phase even is. I can't label the boundaries of the phase in the diagram because it's so arbitrary. Do skills need phases at all?
-
-Keywords already have all the structure they need built into them. Keywords lock their effect behind an entry condition (like curing a poison) and guard the exit with another condition (like a duration of 30 seconds). It would make more sense if end effect keywords instead listened for the resolution of given keywords, while all other keywords are free to fire off simultaneously.
-
-
-
skills should feel like going to the DMV
-DMVs in my life have been all-day affairs of standing in lines that stretch around the building through the bad part of town, attended by only one service desk. Honestly, that's not too far off from my original skill design. I'm not referring to those DMVs, though. The new DMV in town is much more efficient, lets you sit as you wait, and (novel concept) has multiple service windows. That's a much better model for my skills.
-
-
-
-Since my "DMV" will be a separate entity from the skill (basically an event handler), it can preserve its data as long as needed, even after the main skill script dies. Flow is also more controlled, since the skill cannot progress its own current state.
-
-As for flow, obviously, skills without triggers can fire off immediately. The DMV will connect to the KnowledgeBase and begin listening for any event topics that would trigger the keywords. Once a keyword's conditions are met, it will become active and be applied to the target. The DMV also sets up a timer for its duration or listens for exit cues to know when to remove the keyword. Some keywords will never activate, but they will be freed once they had their chance. If Blessed Purity cures 0 poisons, heal will receive a sad "0" and die quietly.
-
-Under the DMV model, the skill's flow becomes more circular.
-
-
-
-
superior design? hopefully
-Never thought I'd prefer the DMV, but you can learn design concepts from anywhere. This design is far more complex to implement, but it's the first design that allows me to build skills from conditional keywords that trigger simultaneously or in any particular order. I'll finally be able to add the skills I have in my head. It'll take a lot of time and work, but can't wait to get this up and running.
-
-Anyway, if you're doing anything on autopilot, especially designing the core mechanic of your game, stop immediately! A little foresight and I'd be leagues ahead by now. Or maybe not? Probably.
-
-
-Last updated April 7, 2022
-
diff --git a/src/diary/hold/skilldmv2 b/src/diary/hold/skilldmv2
deleted file mode 100644
index 1c4e58d..0000000
--- a/src/diary/hold/skilldmv2
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
skills aren't a manor; they're the DMV
-april 7, 2022
-#gamedev #gamedesign #skill
-
-
designing on autopilot
-Phases are necessary for skills to be reactive. For instance, take Blessed Purity: Cure 2 poisons from target. Heal for 35 per poison removed. So the Cure keyword comes first, and Heal cannot activate until the Cure phase resolves. To lay out these phases, I partially copied Guild War's skill effects without much thought: initial effect -> main function (not sure if there's even a name for this) -> end effect. Most keywords are thrown into the main phase, anything that needs to happen immediately goes in initial, and anything that happens at the end goes in the end.
-
-Naturally, I had a lot of problems with flow. Some keywords (like Bleeding) can last up to half a minute, while others (like Attack) are executed instantly. When I let the skill run without breaks, the end effect executed long before earlier keywords finished up. When I forced keywords to execute one at a time, I had projectiles that awkwardly stuck around until an unrelated keyword timed out.
-
-It's time to actually turn my brain on and design with diagrams.
-
-
-
building the skill like a manor
-
-
-
-If a skill was a manor, phases would be wings, keywords would be rooms, and doors would represent conditional statements. There are three main sections to stand in for the beginning, middle, and end. It makes sense if you don't really think about it. After all, the flow looks so clean and linear.
-
-
-
-
criticism
-The concept of a phase brings nothing to skills. In Blessfrey and even Guild Wars, "initial effect" and "end effect" are used more like conditions than integral structure. The majority of skills don't operate in phases anyway.
-
-Worse, my careless implementation runs every keyword sequentially, undermining any distinction phases had. There's zero difference between putting Cure in initial or in the first line of main.
-
-Some keywords need to know what skill they belong to, what skill other keywords belong to, and who their user and target are. The poorly understood flow of skills sometimes causes this information to be freed with the skill before it's needed.
-
-
-It makes me wonder what a phase even is. I can't label the boundaries of the phase in the diagram because it's so arbitrary. Do skills need phases at all?
-
-Keywords already have all the structure they need built into them. Keywords lock their effect behind an entry condition (like curing a poison) and guard the exit with another condition (like a duration of 30 seconds). It would make more sense if end effect keywords instead listened for the resolution of given keywords, while all other keywords are free to fire off simultaneously.
-
-
-
skills should feel like going to the DMV
-DMVs in my life have been all-day affairs of standing in lines that stretch around the building through the bad part of town, attended by only one service desk. Honestly, that's not too far off from my original skill design. I'm not referring to those DMVs, though. The new DMV in town is much more efficient, lets you sit as you wait, and (novel concept) has multiple service windows. That's a much better model for my skills.
-
-
-
-Since my "DMV" will be a separate entity from the skill (basically an event handler), it can preserve its data as long as needed, even after the main skill script dies. Flow is also more controlled, since the skill cannot progress its own current state.
-
-As for flow, obviously, skills without triggers can fire off immediately. The DMV will connect to the KnowledgeBase and begin listening for any event topics that would trigger the keywords. Once a keyword's conditions are met, it will become active and be applied to the target. The DMV also sets up a timer for its duration or listens for exit cues to know when to remove the keyword. Some keywords will never activate, but they will be freed once they had their chance. If Blessed Purity cures 0 poisons, heal will receive a sad "0" and die quietly.
-
-Under the DMV model, the skill's flow becomes more circular.
-
-
-
-
superior design? hopefully
-Never thought I'd prefer the DMV, but you can learn design concepts from anywhere. This design is far more complex to implement, but it's the first design that allows me to build skills from conditional keywords that trigger simultaneously or in any particular order. I'll finally be able to add the skills I have in my head. It'll take a lot of time and work, but can't wait to get this up and running.
-
-Anyway, if you're doing anything on autopilot, especially designing the core mechanic of your game, stop immediately! A little foresight and I'd be leagues ahead by now. Or maybe not? Probably.
-
-
-Last updated April 7, 2022
-
diff --git a/src/diary/hold/skillmaker b/src/diary/hold/skillmaker
deleted file mode 100644
index 56f379d..0000000
--- a/src/diary/hold/skillmaker
+++ /dev/null
@@ -1,141 +0,0 @@
-
-
python writes my skills for me
-march 4, 2021
-#godotengine #json #python
-
-Similar to Magic: The Gathering cards, the functionality of my skills is composed of keywords. For instance, a skill with the 'damage' keyword + 'bleeding' keyword will inflict pure damage + a bleeding status effect.
-
-Since skills derive their effects from existing keywords, each individual skill has very little to no unique code. Repetitive, formulaic tasks are better left to scripts, so I wrote a skillmaker to write skills for me.
-
-
what do blessfrey skills look like?
-
-(Click on the shrunk images for an expanded view.)
-
-They are Godot scenes composed of a single node with an attached script.
-
-
-
-The .TSCN and .GD files look like this in the engine.
-
-
-
-But Godot files are just simple text, so you can open them in any text editor. Really, you could write the bulk of a Godot game in Notepad, if you wanted to. That's perfect for me!
-
-The same files look like this in xed (similar program to Notepad):
-
-
-
-The .GD file is identical to what gets displayed in Godot Engine, but the .TSCN is a little cryptic. If I learn how the syntax, I can make a script to write it for me. I don't understand all of it, since I only deciphered what I need for making a skill.
-
-
-(You can also see the text @ Pastebin.)
-
-Since I designed Blessfrey skills to have a simple, consistent structure, the .TSCN for any two skills will be very similar.
-After experimenting in + out of Godot Engine, I've found that that first line is always the same.
-
-
red + yellow resources
-The red + yellow sections are the scene's resources. This includes any .GD files attached to nodes in the scene tree and any resources (textures, fonts, etc) you load as properties. Those are the properties that look like my icon:
-
-
-
-The script + the resources look so similar because they are both treated as properties of the node. The formula is...
-
-
-
[ext_resource path="
-
obviously followed by the path of the resource. If resources are kept in a predictable place, it's easier on the script.
-
" type="
-
whatever the resource type is (examples include Script, Texture, DynamicFontData)
-
" id=
-
a unique number (obviously used for referencing)
-
-
-
green groups
-Green marks the groups of each node in the scene. You can see the groups are just an array of strings.
-
-Broken into pieces, that looks like
-
-
-
[node
-
name="CuttheGuy" - the name of the node (node.name) goes between the quotation marks
-
type="Node" - the type of the node, so something like Node, Node2D, or Label
-
groups=[
-
"group_name", - each group name is wrapped in quotation marks and separated by commas + line-breaks.
-
]] - close all brackets
-
-
-Two interesting things about the group_name property. One, the engine adds a comma at the end of every line, even to last or only group of the node. Two, if your scene node has no groups, this property will be omitted from the node. If CuttheGuy belonged to no groups, it would just look like [node name="CuttheGuy" type="Node"].
-
-
blue properties
-The properties are inside blue. Since scripts are treated the same as any other resource property, the attached script is referenced in this section.
-
-Resources look like icon = ExtResource( 2 ).
-
-
-Icon is my variable. I declared it in a script that the skill inherits from as export(Texture) var icon = preload('res://res/art/skillIcons/EmptySkillSlot.png') setget , get_icon. The script variable was declared by the engine and isn't in my .GD files.
-
-The 2 is an id from the yellow section. It must match the resource's number from earlier.
-
-If I store all my skill icons in the skillIcons directory and give them the proper name, they'll be found when they're needed, no manually loading necessary. This is a test skill with a generic skill icon, but it would be named something like CuttheGuy.png.
-
-Other properties are more straight-forward. They are the same exported member variables declared in the node's attached .GD script, followed by an equal sign and the value.
-
-
-
overall
-They aren't so confusing when read as text files. The Godot team must have planned them to be human-readable. :)
-
-
altar of spellmaking
-So as you modify the groups and properties of a node, the engine is actually just formatting your input into text files. Since I have a functional understanding of how to manually format data, I can write a skill-formatting script to do it for me.
-
-The tool is named "Altar of Spellmaking" as an Oblivion reference and uses JSON + Python3. Godot can interpret JSON files on its own, so maybe someday the game will automatically generate skills from on the JSON file at load time. For now, though, I see a frivolous excuse to use Python, so the interpreter is going to be in Python. Its input shall be a JSON file, and its output shall be matching .TSCN + .GD files.
-
-
writing a skill with JSON
-JSON isn't a Turing complete language, just a notation. It looks like a dictionary and uses attribute-value relationships. It's good at storing nested groups of information and can be easily interpretted by other languages. Since my skills can be described as a collection of attributes + keyword effects, they can wrestled into the JSON format.
-
-
-(You can also see the text @ Pastebin.)
-
-All the repetitive, obvious, or derivative aspects of the skill do not need to appear in the JSON, since Python will be compensating.
-
-I identify the skill by its name in lower-case + underscores just for my sake. The program doesn't care what the skill's id is or if it has an id at all.
-
-Inside, I have some basic attributes like the id and associated class + stat. The tags will become some of the node's groups. The keywords take place in the skill's phases, which are lists of dictionaries. To build the skill phase, Python will interate over each item in the dictionary and use the internal data to supply the keyword's necessary input or conditions.
-
-Conditional effects look like the image below.
-
-
-(You can also see the text @ Pastebin.)
-
-The cond consists of the code (literal GDscript code) and desc (an English translation of that code). It's not perfect, but it's quicker for me to just write the code and write the skill description than try to have Python translate. This does mean my code has to be perfect, and I have pressure to adhere to the standard language of a skill description. That's a problem, but it is much smaller than the problem of not using JSON at all.
-
-Eventually, I would prefer the desc to be an id from the translation spreadsheet instead of hard-coded text. (I discussed translation in blessfrey in japanese.)
-
-
writing a Godot scene with Python3
-Using Python to format JSON values into a Godot scene + script is kind of ridiculous, so I have 168 lines of code and half of them start with f.write. Now that it's written, though, it's easy to maintain. Since the overall structure doesn't change, all I have to do is tweak a line here or there to reflect refactors. I'll include a picture of the main method, so you can get a sense of the flow of the program:
-
-
-(You can also see the text @ Pastebin.)
-
-The output is a nested directory of all the skills, so I can just copy + paste the skills folder over the one in the engine. And it works! The first skill image's code looks machine-generated because it was.
-
-
is it better than just making skills in the engine?
-
-If I only had ten or eleven skills, then probably not. I'm planning on having around 40 skills per class, though, and I'm only one person. Since the skills are very formulaic, I'd rather have Python do all the copying + pasting for me while I worry about what makes my skills unique!
-
-last updated March 6, 2021
-
diff --git a/src/diary/hold/smallthingthatmakesthings b/src/diary/hold/smallthingthatmakesthings
deleted file mode 100644
index 0932b9d..0000000
--- a/src/diary/hold/smallthingthatmakesthings
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
my first game jam - #weeklygamejam
-september 3, 2020
-#gamejam
-
-WeeklyGameJam is a weekly theme-based game jam hosted through itch.io. It's fairly laid-back for a jam, giving you a full week's time, allowing for premade/stock assets and code, and being understanding towards late submissions. Most people make videogames, but any kind of game is allowed. At the end of the week, streamers will play and critique the submissions while the developers hang out in their chatrooms.
-
-
-
-
small thing that makes things
-
-I participated in Week 85 under the theme Offspring, submitting my game on February 27, 2019. My game was Small Thing That Makes Things, an adventure platformer. You can play it on itch.io.
-
-You play as Hamish T. Elwell, the hero accountant of an overcrowded animal shelter, investigating the recent explosion of the local stray population. You can walk, jump on platforms, collect items, and chat with NPCs. There's multiple endings, depending on your choices.
-
-
positives
-
-For a week-made game, I think STTMT is pretty cute, and I'm pretty happy with it.
-
-I actually finished a game, and someone actually finished playing it on a stream. That's really cool, even if STTMT isn't all that good. The deadline forced me to make final decisions, complete features, and move on, and there's a lot of value in that.
-
-The short time-frame forced me to get around to every aspect of game development, many of which I had never done before. I had to learn how to export a Godot project, upload an HTML5 game to itch, and make sure the exported game was complete and playable. Lots of the features were first-times for me, too. I've never written code for platformer movements or moving cameras. This also was the first time I've really gotten branching and conditional dialog working in Godot, which was a skill I immediately applied to Blessfrey.
-
-
mistakes
-
-I recolored OPP's pixel art and lost the high contrast for the rock ledges. They blend into the rocky background, so you can't tell you can jump on them. I didn't even notice until Joshua McLean pointed this out during his stream. Having more eyes on your game is so important.
-
-Also the level design is just not interesting. I spent lots of time on the choices and adventure game aspects, while the platforming as an extreme afterthought. It's a game jam, though, what do you expect?
-
-I took the easy way out with animation. I might have learned more working from scratch, but modifying OPP's sprites to suit my character designs was way faster when I was already struggling to finish on time.
-
-
screenshots + progression
-
-
-
-
-Experimenting with Small Thing's summoning mechanic. In this version, the characters are just blocks with collision that can move around the flat, empty world with WASD.
-
-
-
-
-The dog spawning physics was (and still is) really broken, so dogs go flying pretty frequently. It was reliable enough in this version to be used as a moving platform.
-
-
-
-
-Dogs rain down upon Elwell's animal shelter in the finished version.
-
-
-If you're looking for a jam to jump into, WeeklyGameJam is a cute one to try. You aren't too rushed, you get to watch people play your game, you get useful criticism, and the community is pretty chill. The themes are always inspiring, too.
-
-
-
diff --git a/src/diary/hold/stylesHelia b/src/diary/hold/stylesHelia
deleted file mode 100644
index 5067714..0000000
--- a/src/diary/hold/stylesHelia
+++ /dev/null
@@ -1,27 +0,0 @@
-My style
-Fushigi Yuugi
-Code Lyoko
-SMT
-Akira
-Kaiji
-Darker Than Black
-Hunter X Hunter
-K-On!
-Made in Abyss
-Mononoke
-Garden Sphere
-As Told By Ginger
-Monster High
-WITCH, Winx Club
-Nana
-Norn9
-OuHos
-Outlaw Star
-slayers
-Ranma 1/2
-Soul Eater
-Higurashi
-Sailor Moon
-Card Captor Sakura
-Little Witch Academia
-Jojo
diff --git a/src/diary/hold/tropes b/src/diary/hold/tropes
deleted file mode 100644
index d042362..0000000
--- a/src/diary/hold/tropes
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
common tropes from media
-december 10, 2020
-#writing
-
-
-I like collecting common tropes from games I play. Maybe it can it root out cliches? Or inspire some game beats? Here's a few tropes spotted in multiple games ~
-
-If you're worried about spoilers, games mentioned are Arcanum, The Cat Lady, Divine Divinity, Dreamfall: The Longest Journey, Fable, Fire Emblem, Guild Wars, Guild Wars 2, Half-Life, Jade Empire, Legend of Zelda: A Link to the Past, The Longest Journey, Mass Effect, Neverwinter Nights 2, Oblivion, Persona 4, Planescape: Torment, RuneScape 2
-
-
-
opening scene + first level
-
-
dream sequence - A Link to the Past
-
prison escape - Oblivion, City of Heroes (villains)
-
sparring - Jade Empire
-
starter village attacked, probably burned down - Fable, Dragon Age: Origins
-
toll bandits blocking the bridge/road exiting the starter village - Arcanum, Dragon Age: Origins
-
tutorial island - RuneScape, Guild Wars: Factions + Nightfall
-
waking up - Divine Divinity, The Longest Journey, Planescape: Torment
-
-
-
protagonist
-
-
amnesiac protagonist - every game, especially MMOs.
-
-
-
levels, story points, fights
-
-
arena/tournament arc - Fable, Oblivion
-
city building - Neverwinter Nights 2's Crossroad Keep, RuneScape's Miscellania + Etceteria, Nightfall's Sunspear Sanctuary
-
courtroom hearing (usually resolved with the loser pulling out the 'trial by combat' card) - Guild Wars: Nightfall, Guild Wars 2, Neverwinter Nights 2, Mass Effect
-
elevator fight - Half-Life, Metroid
-
fight yourself - Guild Wars's Augury Rock, Mask of the Betrayer, Persona 4
-
final boss is all previous bosses in one room - Fire Emblem, Nightfall
-
infiltrate a fancy party - Guild Wars 2's A Society Function, Mass Effect Kasumi DLC
-
maze level - Mask of the Betrayer's Skein, Planescape: Torment
-
play as a side character - The Cat Lady's cat, Mass Effect's Joker
-
raise someone - the original Kingmaker concept for Oblivion, The Witcher 2
-
solo boss battle - Guild Wars Augury Rock, Neverwinter Nights 2's trial
-
trapped for a level, especially without your stuff Divine Divinity's Castle + Dungeon, Mask of the Betrayer's Skein
-
-
-
side content
-
-
minigame tournament - The Witcher's Dice Poker, Eye of the North's Polymock
territory: tribes within earth's crust and hollow interior
-
mental: magical prowess over the domains of space, light, sound, and storm
-
physical: 7-9' tall humanoids with cutaneous horns; pastel or dark hair, pale to dark skin in ashy colors with blue, green, olive, or red undertones; empty red eyes
A lost race of hi-tech horned giants who live in a lush, perfumed garden at earth's core or deep caves in the crust. The garden is inaccessible to all. Their culture interacts with a deceptive, wise snake-people race who live exclusively near the garden who speaks a different, hissing language. They believe above the crust exists a sea/firmament. The only surviving speakers are hologram VIs guides who answer simple questions in natural language using their database, and most act as receptionists or tour guides. Most surviving writings are signs, bardic songs and poetry, magical runic inscriptions, and words written on scroll-like robes. They do not have judicial, bureaucratic, medical records. Everything they need springs from the earth. Money trees, soda pools, etc.
-
-
They measure time by pendulum swings (chronos) and by events (kairos). Generally, dates and hours are unimportant to the ancient, undying giants. Their sense of time is more relational and event-driven, saying "before the last storm," "during X's rule," or "in the times of X"
-
-
language>
-
The main giantic language encountered in Blessfrey is early Semitic. Its cultural neighbors speak the hissing serpent language and the sing-song syllabic fairy language. The written version of early Semitic Giantic only marks consonants and is usually written into stone.
-
-
concepts
-
misc nouns
-
-
lie, deceive, distort - (verb) literally "to split your tongue"
-
life - marked by a cycle of death and renewal, brought by storms
-
hello - "peace"; immediately recognizable to modern Arabic and Hebrew speakers, version of Salam/Shalom/Š-L-M
-
storm - literally "water control;" a dualistic concept that usually refers to the daily morning mist that rises from below and sustains fertility, harvest, and life. In the religious use of the word, it is a concept of cyclical overpowering rain that falls from above and wipes out then renews all life for a new era
-
before the storm - giants do not remember what came before the last storm. The serpents and gods are immortal and occasionally share secrets from before the storm. Sometimes used in exaggeration to mean a really long time ago.
-
moon - literally "water-jewel;" known only through legend; the pale jewel at the bottom of the mythical vast waters
-
swings - chronos time is counted by pendulum swings
-
eras - kairos time is marked by signs, linked to augury and geomancy
-
mist - lifts from the ground, supports lush, seasonless vegetation year-round; only exists within the interior
-
pool - pockets of still water within the crust
-
Kairos - fullness of time
-
chronos - height of time, considered a dimension in itself
-
sword
-
armor
-
river
-
garden
-
hymn
-
river split - place where water feature splits into two or more
-
river mouth
-
providence - everything you need, the earth provides
-
pocket - refers to either caverns in the crust or small dimensions
-
orb
-
destruction - to cease to exist. when speaking of giants, there is an expectation of renewal
-
renewal - to live again. Though giants lose their memories and identity, the immortal species can always know who is who. Sometimes they try to talk to the god Balder like he is Baal, etc.
-
god-killing - act of killing a god, unthinkable
-
Place where god died - location where earth god was killed
-
ghost - the giants linger between cycles
-
butler, manservant
-
Sun - a gentle star-god within the center of the earth. --Half his face is masked--. Provides a mild climate yearround. As the earth rotates around it--, night falls upon the masked side--. Word follows the B-L pattern like Baal, Ball
-
Earth - the mundane world
-
Heaven - the outside world
-
dust, essence, elementary particles - dust is understood to come from creatures. Very dusty people are said to be loosely formed
-
tree- provider of all things
-
bdellium-common somewhere
-
onyx-common somewhere
-
light - life
-
dark - death
-
serpent amulet of light - during periods of extended darkness due to the death of the sun, serpents wear an
-
-
-
animal
-
-
animal -
-
bat -
-
bear -
-
cat - literally "snake-killer"
-
dimetrodon -
-
dog, outsider - proto-root of canine, Canaan, Kenite
-
fish -
-
lion -
-
snake - sacred animal
-
spider -
-
styracosaurus -
-
swiftlet -
-
-
color
-
-
white- - giants can see into the ultraviolet range. Both white- and white+ look white to humans but giants see them as different hues.
-
white+ - looks the same as white- to humans but differently hued to giants
-
-
figures/species
-
-
earth-god - (god) he has several names, literally "dead god," "shifting god," "earth god," "renewal god," and "storm-bringer;" he is an underdog god who gained or stole respect over all others to become the ruler of the entire earth; he controls the storm; he has been dead for a long time
-
divine hero - (god)
-
universal goddess - (god)
-
high-god - (god) he has several names, literally "vast waters god," "deep god," "destroyer god," "storm-rider;" the god beyond the vast waters; he will launch the final storm, best the earth-god in battle, and destroy the earth
-
serpent-king - (god)
-
serpents - (species) literally "two-tongues;" charismatic but deceptive immortal serpent-people who live in the opulent city in the hollow earth that surrounds the central garden
-
spider goddess -
-
-
jobs (RPG classes)
-People are born job-less but arguably with a propensity towards a particular job. They can train towards mastery of a job, but giant jobs are so complex and slow to learn that it is exceptionally rare to have more than one or to change jobs. They usually deviate dramatically from their parents, learning through apprenticeships and self-learning. It's more likely for a giant to travel to a foreign land in pursuit of a trade than it is for a giant to study his father's trade under his father.
-
-
-
he holds the flow of rivers - conceptually, everything that moves, progresses, or changes is considered to be flowing. The world itself is a bubble adrift in vast waters. Those with the job have the
-
- looks the same as white- to humans but differently hued to giants
-
-
locations
-
-
central garden - the interior of the hollow earth; houses the lost garden, the serpent city, and
-
crust -
-
firmament, sea, vast waters - the outer watery shell of the world; giants only know shallow and gentle mists and brooks, but the world is a bubble in a vast outer world of water
-
hall of monuments -
-
interior -
-
serpent city -
-
-
minerals/rocks
-
-
asbestos - fibrous mineral, spun into yarn and woven into cloth. Blessfrey's giants are usually referring to chrysotile (white asbestos), but they sometimes trade for other types (brown, blue, etc) with distant giantic cultures
-
gold - common mineral, appreciated for its lustrous beauty and ability to be extruded into yarns
-
crystal -
-
gemstone -
-
lava -
-
pebble - large
-
rock, boulder - large
-
stalactite -
-
stalagmite -
-
stone, building material - large
-
-
verbs
-
-
flow, change, move
-
-
lie, deceive, distort - literally "to split your tongue"
-
lie, protect, cover - maybe translated into English as "to tell a white lie"
-
-
-
-
foreign, unencountered concepts:
-
-
birthdays - the exact date is not tracked or celebrated, though the event may be used as a reference
-
recreational sex
-
work - laboring, mining, etc, is not needed for their survival, since everything they need can be extracted with little effort. Some do so as part of exploring.
-
-
diff --git a/src/species/fairy-label b/src/species/fairy-label
deleted file mode 100644
index fdce0aa..0000000
--- a/src/species/fairy-label
+++ /dev/null
@@ -1 +0,0 @@
-means
diff --git a/src/species/fairy-sentences b/src/species/fairy-sentences
deleted file mode 100644
index af1ad0c..0000000
--- a/src/species/fairy-sentences
+++ /dev/null
@@ -1,286 +0,0 @@
-VSO
-1. Birds sing. - ahalel gunenim
-2. Children play - karer uyumimim
-3. Dogs bark. - akenin
-4. Bees hum.
-5. Baby laughed.
-6. The sun shines.
-7. The wind blows.
-8. The car started.
-9. School began again.
-10. The child ran quickly.
-11. Yellow daffodils nodded gaily.
-12. Little Marigold cried bitterly.
-13. All the people shouted.
-14. I recited twice.
-15. The weary traveler slept soundly.
-16. The little brook flows swiftly.
-17. Softly the great white snowflakes fell.
-18. The kind old man laughed pleasantly.
-19. The happy days passed quickly.
-20. Up jumped the smallest boy.
-21. My little white kitten purrs softly.
-22. Slowly the great door opened.
-23. All the boys ran away.
-24. The telephone rang again.
-25. Down came the rain.
-26. Once the Indians fought here.
-27. The happy children shouted joyously.
-28. The frightened horse plunged wildly.
-29. Soon the rain stopped.
-30. The girls answered quickly.
-31. The oldest boy spoke carefully.
-32. Slowly she looked around.
-33. Down fluttered the bright leaves.
-34. The snow has melted.
-35. Our teacher is writing.
-36. All the children are singing.
-37. I will go now.
-38. Soon the baby will walk.
-39. The whistles are blowing.
-40. The thimble rolled away.
-41. The train will soon arrive.
-42. She was always smiling.
-43. I am patiently waiting.
-44. Now the day is dawning.
-45. The baby's ball has rolled away.
-46. The two boys are working together.
-47. The old turkey was strutting about.
-48. This mist will probably clear away.
-49. We have been studying.
-50. Now I am going away.
-51. The clock will soon strike.
-52. The flags are gaily fluttering.
-53. Everybody was busily working.
-54. I have been reading aloud.
-55. Lovely flowers are growing everywhere.
-56. The band is marching by.
-57. The children have been romping noisily.
-58. John is walking very fast.
-59. My mother smiled very sweetly.
-60. This day has passed very quickly.
-61. We should eat more slowly.
-62. A very hard rain is falling.
-63. You have come too soon.
-64. I have worked enough.
-65. A very heavy snow has fallen.
-66. The old gentleman bowed most politely.
-67. Those little foreigners speak very correctly.
-68. The poor old man limped along painfully.
-69. You must write more neatly.
-70. We started too late.
-71. She answered most graciously.
-72. The Man-in-the-Moon came down too soon.
-73. The lady comes here quite frequently.
-74. Directly opposite stands a wonderful palace.
-75. Jane's brother has gone away.
-76. Henry's dog is lost.
-77. The little girl's doll is broken.
-78. Columbus' ships sailed away.
-79. Alice's eyes sparkled brightly.
-80. I usually sleep soundly.
-81. My friends will come later.
-82. The Indian's canoe glided away.
-83. Peter Pan's voice rang out gaily.
-84. Away sped Paul Revere's horse.
-85. Finally the last guest departed.
-86. My cousin reads well.
-87. The children ran after Jack.
-88. I can play after school.
-89. The Pilgrims landed at Plymouth.
-90. I have been waiting for you.
-91. We all went to the park.
-92. The cow jumped over the moon.
-93. The campers sat around the fire.
-94. A little girl with curls sat near me.
-95. The train starts from St. Louis at noon.
-96. The child waited at the door for her father.
-97. Seven little sisters were walking in a row.
-98. The snow melts rapidly in the warm sun shine.
-99. In autumn the leaves fall from the trees.
-100. Yesterday the best girl in the class missed in spelling.
-101. Some beautiful roses are blooming in our garden.
-102. Everywhere fluttered gay American flags.
-103. Violets grow beside the brook.
-104. Suddenly my friend was standing beside me.
-105. My uncle often goes to London on business.
-106. A cheerful fire was blazing on the hearth.
-107. They are coming behind us.
-108. The little girl was playing with her kitten.
-109. The dog ran after the ball.
-110. In the woods stood a pretty little pine tree.
-111. I am going to the country with my mother.
-112. The whole family went abroad for the summer.
-113. We often rest here under the trees.
-114. Beside the road sat a poor old man.
-115. Were you born in St. Louis ?
-11G. Can your brother dance well?
-117. Did the postman ring?
-118. Is your sister coming for you?
-119. Can you come tomorrow?
-130. Have the neighbors gone away for the winter?
-121. Have you been writing at my desk?
-122. Does the robin sing in the rain?
-123. Are you going with us to the concert?
-124. Have you ever traveled in Spain?
-125. Three black crows sat on a tree.
-126. Sadly he turned away without a word.
-127. We sailed down the river for several miles.
-128. Everybody knows about Lincoln.
-129. On a Sunny morning in June we started for the mountains.
-130. Then the unhappy little pine tree slept again soundly.
-131. The leaves on the trees rustled in the wind.
-132. We went along the country road for many miles.
-133. Our dog always barks at strangers.
-134. Several fine rugs lay on the floor.
-135. The boy ran fast along the street.
-136. Tom laughed at the monkey's tricks.
-137. The child grieved for her kitten.
-138. Against the wall stood a ladder.
-139. An old man with an umbrella stood beside the fence.
-140. He talked with my father for ten minutes.
-141. The squirrel's nest was hidden by drooping boughs.
-142. The automobile was parked near the corner.
-143. The great lion roared savagely.
-144. I sat alone in the back seat.
-145. The boys are playing in the lot.
-146. On Monday I go to dancing school.
-147. A robin was hopping about in our yard.
-148. The children in Holland often skate to school.
-149. Great black clouds have gathered in the sky.
-150. Our friends from New York will start for home tomorrow.
-151. The flag of our country floats above us.
-152. Cinderella's fairy godmother sat beside the hearth.
-153. Instantly the pumpkin was changed into a splendid coach.
-154. Cinderella danced happily at the ball until midnight.
-155. The mouse ran up the clock.
-156. The little house stood by the bridge, across the river.
-157. The little seeds waited patiently under the snow for the warm spring sun.
-158. Jack-the-Giant-Killer climbed to the very top of the bean-stalk.
-159. Many little girls with wreaths of flowers on their heads danced around the May-pole.
-160. The saucy squirrel scampered away to his home in the hollow oak.
-161. Have your mother's friends come from the country ?
-162. Hiawatha's canoe floated on the water like a yellow leaf in autumn.
-163. High waves were dashing over the deck of our ship.
-164. The little brook sang softly.
-165. Brave Robin Hood laughed aloud.
-166. Again the great bell tolled.
-167. Forward marched that gallant company.
-168. Sometimes the leaves whisper together.
-169.Up started the frightened deer.
-170. The mighty river rolled silently onward.
-171. The bright stranger then quickly departed.
-172. The children's merry laughter rang out everywhere.
-173. The two strange guests soon went away.
-174. Instantly the boys' shouts ceased.
-175. Once the old woman looked cautiously around.
-176. Great black clouds have gathered.
-177. Little Puck was laughing slyly.
-178. I have been sitting here alone.
-179. Slowly a thick white mist was arising.
-180. The two old comrades were talking together earnestly.
-181. The little prince's horse had been carefully trained.
-182. The mermaids were singing sweetly.
-183. Bravely the wounded soldier struggled on.
-184. Forth marched the mighty army.
-185. Surely you will come to our picnic.
-186. The child's health is steadily improving.
-187. The odor of roses was wafted towards us.
-188. This box of tea was sent from Japan.
-189. Little Cinderella's proud sisters laughed very scornfully.
-190. You read too fast.
-191. The old soldier's horse neighed impatiently.
-192. Too many unkind words are spoken thoughtlessly.
-193. So merrily passed the day.
-194. They always Start too late.
-195. Some very rare plants grow here.
-196. The deep blue heavens smiled again.
-197. A most interesting old gentleman was talking.
-198. The little pine-tree's leaves were changed to gold.
-199. We will walk to school with you.
-200. Crowds of people were looking on with delight.
-201. A vase of beautiful flowers stood on the window sill.
-202. The girl at the end of the line stood still.
-203. Without fear he plunged into the water.
-204. Gay flags were waving from every window in the village.
-205. Above my head hung great clusters of wild roses.
-206. Rip's dog walked along slowly after him.
-207. Above us floated a soft white cloud.
-208. With a loud crash the great tree fell.
-209. Before dawn the little birds were twittering sleepily.
-210. Along the beach flits the little sandpiper.
-211. The peak of the mountain towers above the cloud.
-212. Great fields of snow glowed brightly at sunset.
-213. The soldier's sword hangs at his side.
-214. The river flows down to the sea.
-215. The cattle were grazing peacefully in the meadow.
-216. The little brook babbles noisily along.
-217. Then up spoke brave Horatius.
-218. The cover of the box fell to the floor.
-219. The first boy in the line stopped at the door.
-220. Loud shouted the merry men in the forest.
-221. Suddenly the robber's band appeared on every side.
-222. The ivy grows on the ruined wall.
-223. The horn of the hunter is heard on the hill.
-224. The voice of the captain was heard above the storm.
-225. The little toy dog is covered with dust.
-226. Instantly he plunged into the water.
-227. On the top of the hill in a little hut lived a wise old woman.
-228. A goat with her kids wandered through the forest.
-229. During our residence in London we often walked in Hyde Park.
-230. With a cry of joy I ran to the door.
-231. The light smoke was curling up from every chimney in the village.
-232. Where are you going now?
-233. When was America discovered?
-234. When did the Indians live here?
-235. How was the baby hurt?
-236. Why are you laughing?
-237. How fast does the car go?
-238. How often did you recite?
-239. How high does the tide rise?
-240. When will you ride with us in our new car?
-241. When will your guests from Boston arrive?
-242. Near the mouth of the Mississippi, the river turns sharply towards the East.
-243. Between the two lofty mountains lay a fertile valley.
-244. Among the wheat grew tall red poppies.
-245. Swiftly over the dark waters sailed the three little vessels.
-246. The noisy crowd had rolled together like a summer cloud.
-247. A storm swept over the land.
-248. The men at the oars fought bravely against the storm.
-249. The great Zeppelin sailed majestically over the city.
-250. How prettily the long grasses wave in the wind!
-251. The light from the windows shone across the gravel path.
-252. The strong roots of the oak trees were torn from the ground.
-253. The reed swayed on its slender stem in the morning breeze.
-254. Two little woodpeckers were tapping at the door of the squirrel's house.
-255. The sun's rays slowly fade from the western sky.
-256. The lid of the teapot fell to the floor with a loud crash.
-257. The sun looked down through the branches upon the children at play.
-258. Have the first two examples in this lesson been corrected?
-259. Why are you sitting here alone in the dark?
-260. The tops of the trees were waving gently in the summer wind.
-261. The broad river spread out without a ripple on its surface.
-262. On the very top of the Christmas tree glittered a splendid star.
-263. On one branch of the tree were hanging nets of colored paper.
-264. This lovely New England stream is sheltered by thick woods.
-265. Above the clouds towered the lofty peak of the mountain.
-266. The summer night fell like a perfumed curtain across the valley.
-267. Has the grass on this slope been recently cut?
-268. From the pool below the terraces came the bell-like clang of the frogs.
-269. Near the margin of the lake grew lovely blue iris, with their long slender leaves.
-270. Great flocks of wild geese were flying toward the north.
-271. The trees in apple orchards with fruit are bending down.
-272. The figure glided from the shadow of the wall.
-973. The west wind blew across my face like a friendly caress.
-274. Between the two cottages extended a hedge of lilacs.
-275. The rays of the great search-light reached far out to sea.
-276. The warm south wind, heavy with the perfume of blossoms, came through my window.
-277. Robin Hood went to the shooting-match in the disguise of an old beggar.
-278. The saucy squirrel scampered away to his home in the hollow Oak.
-279. All sorts of strange articles were arranged on the shelves.
-280. The spool of thread rolled across the floor.
-281. A box of growing plants stood in the Window.
-282. Bits of straw were whirled about by the wind.
-283. A little bit of common glass sometimes glitters like a diamond.
-284. A quilt of bright patchwork lay across the foot of the bed.
-285. Over the mantel hung a picture of a knight in full armor.
diff --git a/src/species/fairy-story b/src/species/fairy-story
deleted file mode 100644
index bc420ff..0000000
--- a/src/species/fairy-story
+++ /dev/null
@@ -1,4 +0,0 @@
-
Great storms mark new eras. The sun darkens, lightning and thunder roll out, and the earth-god pours out flood waters to wipe the land clean. The sun died, and the giants with it.
-
-
figures
-
Rune lives near the surface of earth's crust, near the dumping grounds of the human factory. He was raised by Bless, a Styracosaurus queen, and her abyssal fiend underlings. They were both named by the mayor's vanguard. He has next to zero knowledge about his people and is saddened by his lack of cultural identity, ultimately pursuing search of it over remaining with his beastly family.
diff --git a/src/static/img/FR/220724_BotF_TCEdition_Hearthers_gG13YVz.png b/src/static/img/FR/220724_BotF_TCEdition_Hearthers_gG13YVz.png
deleted file mode 100644
index 28a73eb..0000000
Binary files a/src/static/img/FR/220724_BotF_TCEdition_Hearthers_gG13YVz.png and /dev/null differ
diff --git a/src/static/img/FR/220724_BotF_TCEdition_Participation_gCI4nOA.png b/src/static/img/FR/220724_BotF_TCEdition_Participation_gCI4nOA.png
deleted file mode 100644
index 6378ba3..0000000
Binary files a/src/static/img/FR/220724_BotF_TCEdition_Participation_gCI4nOA.png and /dev/null differ
diff --git a/src/static/img/FR/220724_BotF_TCEdition_SecondPlace_2WtERPf.png b/src/static/img/FR/220724_BotF_TCEdition_SecondPlace_2WtERPf.png
deleted file mode 100644
index c407f3f..0000000
Binary files a/src/static/img/FR/220724_BotF_TCEdition_SecondPlace_2WtERPf.png and /dev/null differ
diff --git a/src/static/img/FR/220724_MascotScryingContent_Participation.png b/src/static/img/FR/220724_MascotScryingContent_Participation.png
deleted file mode 100644
index 6954d9f..0000000
Binary files a/src/static/img/FR/220724_MascotScryingContent_Participation.png and /dev/null differ
diff --git a/src/static/img/FR/220727_GearsForGold_Participation_Ta5eRVr.png b/src/static/img/FR/220727_GearsForGold_Participation_Ta5eRVr.png
deleted file mode 100644
index 7ddbb15..0000000
Binary files a/src/static/img/FR/220727_GearsForGold_Participation_Ta5eRVr.png and /dev/null differ
diff --git a/src/static/img/FR/220727_GearsForGold_StretchGoalMet_qnPZXJ8.png b/src/static/img/FR/220727_GearsForGold_StretchGoalMet_qnPZXJ8.png
deleted file mode 100644
index 7f8e895..0000000
Binary files a/src/static/img/FR/220727_GearsForGold_StretchGoalMet_qnPZXJ8.png and /dev/null differ
diff --git a/src/static/img/FR/comm/Aristene_WeBuiltARaffle_OldFlame_sketch_Chingoo.png b/src/static/img/FR/comm/Aristene_WeBuiltARaffle_OldFlame_sketch_Chingoo.png
deleted file mode 100644
index 6093e4d..0000000
Binary files a/src/static/img/FR/comm/Aristene_WeBuiltARaffle_OldFlame_sketch_Chingoo.png and /dev/null differ
diff --git a/src/static/img/char/Aloin/Aloinavi.png b/src/static/img/char/Aloin/Aloinavi.png
deleted file mode 100644
index 836f23f..0000000
Binary files a/src/static/img/char/Aloin/Aloinavi.png and /dev/null differ
diff --git a/src/static/img/char/Aloin/alchemy.png b/src/static/img/char/Aloin/alchemy.png
deleted file mode 100644
index f71706a..0000000
Binary files a/src/static/img/char/Aloin/alchemy.png and /dev/null differ
diff --git a/src/static/img/char/Aloin/alchemythumb.png b/src/static/img/char/Aloin/alchemythumb.png
deleted file mode 100644
index 94f211d..0000000
Binary files a/src/static/img/char/Aloin/alchemythumb.png and /dev/null differ
diff --git a/src/static/img/char/Aloin/dream.jpg b/src/static/img/char/Aloin/dream.jpg
deleted file mode 100644
index 01ac024..0000000
Binary files a/src/static/img/char/Aloin/dream.jpg and /dev/null differ
diff --git a/src/static/img/char/Aloin/dreamthumb.jpg b/src/static/img/char/Aloin/dreamthumb.jpg
deleted file mode 100644
index 727f809..0000000
Binary files a/src/static/img/char/Aloin/dreamthumb.jpg and /dev/null differ
diff --git a/src/static/img/char/BlessTheChild/20220804_230831.jpg b/src/static/img/char/BlessTheChild/20220804_230831.jpg
deleted file mode 100644
index 8cdc17d..0000000
Binary files a/src/static/img/char/BlessTheChild/20220804_230831.jpg and /dev/null differ
diff --git a/src/static/img/char/BlessTheChild/BlessTheChildavi.png b/src/static/img/char/BlessTheChild/BlessTheChildavi.png
deleted file mode 100644
index 3a8e395..0000000
Binary files a/src/static/img/char/BlessTheChild/BlessTheChildavi.png and /dev/null differ
diff --git a/src/static/img/char/BlessTheChild/office.png b/src/static/img/char/BlessTheChild/office.png
deleted file mode 100644
index edc8d1e..0000000
Binary files a/src/static/img/char/BlessTheChild/office.png and /dev/null differ
diff --git a/src/static/img/char/Cass/Cassavi.png b/src/static/img/char/Cass/Cassavi.png
deleted file mode 100644
index 4a110e7..0000000
Binary files a/src/static/img/char/Cass/Cassavi.png and /dev/null differ
diff --git a/src/static/img/char/Cass/download20220804180326.png b/src/static/img/char/Cass/download20220804180326.png
deleted file mode 100644
index 2d3357b..0000000
Binary files a/src/static/img/char/Cass/download20220804180326.png and /dev/null differ
diff --git a/src/static/img/char/Chandra/Chandraavi.png b/src/static/img/char/Chandra/Chandraavi.png
deleted file mode 100644
index 86304ee..0000000
Binary files a/src/static/img/char/Chandra/Chandraavi.png and /dev/null differ
diff --git a/src/static/img/char/Chandra/download20220804183214.png b/src/static/img/char/Chandra/download20220804183214.png
deleted file mode 100644
index 7dd2a3e..0000000
Binary files a/src/static/img/char/Chandra/download20220804183214.png and /dev/null differ
diff --git a/src/static/img/char/Colt/Coltavi.png b/src/static/img/char/Colt/Coltavi.png
deleted file mode 100644
index 8640610..0000000
Binary files a/src/static/img/char/Colt/Coltavi.png and /dev/null differ
diff --git a/src/static/img/char/Colt/download20220804184831.png b/src/static/img/char/Colt/download20220804184831.png
deleted file mode 100644
index 81cf52d..0000000
Binary files a/src/static/img/char/Colt/download20220804184831.png and /dev/null differ
diff --git a/src/static/img/char/Coye/Coyeavi.png b/src/static/img/char/Coye/Coyeavi.png
deleted file mode 100644
index 99feb7a..0000000
Binary files a/src/static/img/char/Coye/Coyeavi.png and /dev/null differ
diff --git a/src/static/img/char/Coye/geonlian_death_2.png b/src/static/img/char/Coye/geonlian_death_2.png
deleted file mode 100644
index 0df0b32..0000000
Binary files a/src/static/img/char/Coye/geonlian_death_2.png and /dev/null differ
diff --git a/src/static/img/char/Coye/geonlian_death_2.psd b/src/static/img/char/Coye/geonlian_death_2.psd
deleted file mode 100644
index 5a66ccf..0000000
Binary files a/src/static/img/char/Coye/geonlian_death_2.psd and /dev/null differ
diff --git a/src/static/img/char/CustomsOfficer/20220804_230831.jpg b/src/static/img/char/CustomsOfficer/20220804_230831.jpg
deleted file mode 100644
index 8cdc17d..0000000
Binary files a/src/static/img/char/CustomsOfficer/20220804_230831.jpg and /dev/null differ
diff --git a/src/static/img/char/CustomsOfficer/CustomsOfficeravi.png b/src/static/img/char/CustomsOfficer/CustomsOfficeravi.png
deleted file mode 100644
index 2b7acfa..0000000
Binary files a/src/static/img/char/CustomsOfficer/CustomsOfficeravi.png and /dev/null differ
diff --git a/src/static/img/char/CustomsOfficer/office.png b/src/static/img/char/CustomsOfficer/office.png
deleted file mode 100644
index edc8d1e..0000000
Binary files a/src/static/img/char/CustomsOfficer/office.png and /dev/null differ
diff --git a/src/static/img/char/Dymn/Dymnavi.png b/src/static/img/char/Dymn/Dymnavi.png
deleted file mode 100644
index 8640610..0000000
Binary files a/src/static/img/char/Dymn/Dymnavi.png and /dev/null differ
diff --git a/src/static/img/char/Eden/Edenavi.png b/src/static/img/char/Eden/Edenavi.png
deleted file mode 100644
index 8640610..0000000
Binary files a/src/static/img/char/Eden/Edenavi.png and /dev/null differ
diff --git a/src/static/img/char/Eden/download20220804224053.png b/src/static/img/char/Eden/download20220804224053.png
deleted file mode 100644
index 628274c..0000000
Binary files a/src/static/img/char/Eden/download20220804224053.png and /dev/null differ
diff --git a/src/static/img/char/Eponnin/Eponninavi.png b/src/static/img/char/Eponnin/Eponninavi.png
deleted file mode 100644
index 54fb9af..0000000
Binary files a/src/static/img/char/Eponnin/Eponninavi.png and /dev/null differ
diff --git a/src/static/img/char/Faber/Faberavi.png b/src/static/img/char/Faber/Faberavi.png
deleted file mode 100644
index 9025c38..0000000
Binary files a/src/static/img/char/Faber/Faberavi.png and /dev/null differ
diff --git a/src/static/img/char/Fifi/Fifiavi.png b/src/static/img/char/Fifi/Fifiavi.png
deleted file mode 100644
index a0dfffb..0000000
Binary files a/src/static/img/char/Fifi/Fifiavi.png and /dev/null differ
diff --git a/src/static/img/char/Fifi/guitarpractice.jpg b/src/static/img/char/Fifi/guitarpractice.jpg
deleted file mode 100644
index c2cf3e6..0000000
Binary files a/src/static/img/char/Fifi/guitarpractice.jpg and /dev/null differ
diff --git a/src/static/img/char/Fifi/guitarpracticethumb.jpg b/src/static/img/char/Fifi/guitarpracticethumb.jpg
deleted file mode 100644
index 562e735..0000000
Binary files a/src/static/img/char/Fifi/guitarpracticethumb.jpg and /dev/null differ
diff --git a/src/static/img/char/Fifi/mirrorofvenus.jpg b/src/static/img/char/Fifi/mirrorofvenus.jpg
deleted file mode 100644
index 10eab21..0000000
Binary files a/src/static/img/char/Fifi/mirrorofvenus.jpg and /dev/null differ
diff --git a/src/static/img/char/Fifi/mirrorofvenusthumb.jpg b/src/static/img/char/Fifi/mirrorofvenusthumb.jpg
deleted file mode 100644
index 4877b2d..0000000
Binary files a/src/static/img/char/Fifi/mirrorofvenusthumb.jpg and /dev/null differ
diff --git a/src/static/img/char/Freefall/Freefall.png b/src/static/img/char/Freefall/Freefall.png
deleted file mode 100644
index 7a00e10..0000000
Binary files a/src/static/img/char/Freefall/Freefall.png and /dev/null differ
diff --git a/src/static/img/char/Freefall/Freefallavi.png b/src/static/img/char/Freefall/Freefallavi.png
deleted file mode 100644
index 7a00e10..0000000
Binary files a/src/static/img/char/Freefall/Freefallavi.png and /dev/null differ
diff --git a/src/static/img/char/Freefall/Freefallthumb.png b/src/static/img/char/Freefall/Freefallthumb.png
deleted file mode 100644
index 7a00e10..0000000
Binary files a/src/static/img/char/Freefall/Freefallthumb.png and /dev/null differ
diff --git a/src/static/img/char/Freefall/download20220804224936.png b/src/static/img/char/Freefall/download20220804224936.png
deleted file mode 100644
index d9f8ec2..0000000
Binary files a/src/static/img/char/Freefall/download20220804224936.png and /dev/null differ
diff --git a/src/static/img/char/Freya/Freyaavi.png b/src/static/img/char/Freya/Freyaavi.png
deleted file mode 100644
index 66c786e..0000000
Binary files a/src/static/img/char/Freya/Freyaavi.png and /dev/null differ
diff --git a/src/static/img/char/Funwa/20220804_231624.jpg b/src/static/img/char/Funwa/20220804_231624.jpg
deleted file mode 100644
index 32c342d..0000000
Binary files a/src/static/img/char/Funwa/20220804_231624.jpg and /dev/null differ
diff --git a/src/static/img/char/Funwa/Funwaavi.png b/src/static/img/char/Funwa/Funwaavi.png
deleted file mode 100644
index d2f2890..0000000
Binary files a/src/static/img/char/Funwa/Funwaavi.png and /dev/null differ
diff --git a/src/static/img/char/Funwa/download20220804225528.png b/src/static/img/char/Funwa/download20220804225528.png
deleted file mode 100644
index deee454..0000000
Binary files a/src/static/img/char/Funwa/download20220804225528.png and /dev/null differ
diff --git a/src/static/img/char/Futura/Futuraavi.png b/src/static/img/char/Futura/Futuraavi.png
deleted file mode 100644
index 8640610..0000000
Binary files a/src/static/img/char/Futura/Futuraavi.png and /dev/null differ
diff --git a/src/static/img/char/Gundrune/Gundruneavi.png b/src/static/img/char/Gundrune/Gundruneavi.png
deleted file mode 100644
index 69cc63b..0000000
Binary files a/src/static/img/char/Gundrune/Gundruneavi.png and /dev/null differ
diff --git a/src/static/img/char/HOME/HOMEavi.png b/src/static/img/char/HOME/HOMEavi.png
deleted file mode 100644
index 8640610..0000000
Binary files a/src/static/img/char/HOME/HOMEavi.png and /dev/null differ
diff --git a/src/static/img/char/Heather/Heatheravi.png b/src/static/img/char/Heather/Heatheravi.png
deleted file mode 100644
index 5dbdf18..0000000
Binary files a/src/static/img/char/Heather/Heatheravi.png and /dev/null differ
diff --git a/src/static/img/char/Helba/20220804_231338.jpg b/src/static/img/char/Helba/20220804_231338.jpg
deleted file mode 100644
index cdc84be..0000000
Binary files a/src/static/img/char/Helba/20220804_231338.jpg and /dev/null differ
diff --git a/src/static/img/char/Helba/Helba.png b/src/static/img/char/Helba/Helba.png
deleted file mode 100755
index 35580b7..0000000
Binary files a/src/static/img/char/Helba/Helba.png and /dev/null differ
diff --git a/src/static/img/char/Helba/Helbaavi.png b/src/static/img/char/Helba/Helbaavi.png
deleted file mode 100644
index 0f5ec2d..0000000
Binary files a/src/static/img/char/Helba/Helbaavi.png and /dev/null differ
diff --git a/src/static/img/char/Helba/Helbatransparent.png b/src/static/img/char/Helba/Helbatransparent.png
deleted file mode 100755
index e6ae2d9..0000000
Binary files a/src/static/img/char/Helba/Helbatransparent.png and /dev/null differ
diff --git a/src/static/img/char/Helba/download20220804230154.png b/src/static/img/char/Helba/download20220804230154.png
deleted file mode 100644
index e0aabee..0000000
Binary files a/src/static/img/char/Helba/download20220804230154.png and /dev/null differ
diff --git a/src/static/img/char/Helba/peesh_viral_2 (1).png b/src/static/img/char/Helba/peesh_viral_2 (1).png
deleted file mode 100644
index 337478c..0000000
Binary files a/src/static/img/char/Helba/peesh_viral_2 (1).png and /dev/null differ
diff --git a/src/static/img/char/Helmut/Helmutavi.png b/src/static/img/char/Helmut/Helmutavi.png
deleted file mode 100644
index 85c1f76..0000000
Binary files a/src/static/img/char/Helmut/Helmutavi.png and /dev/null differ
diff --git a/src/static/img/char/Katherine/Katherineavi.png b/src/static/img/char/Katherine/Katherineavi.png
deleted file mode 100644
index 8640610..0000000
Binary files a/src/static/img/char/Katherine/Katherineavi.png and /dev/null differ
diff --git a/src/static/img/char/Leslie/Leslieavi.png b/src/static/img/char/Leslie/Leslieavi.png
deleted file mode 100644
index 5863bde..0000000
Binary files a/src/static/img/char/Leslie/Leslieavi.png and /dev/null differ
diff --git a/src/static/img/char/Lewis/Lewisavi.png b/src/static/img/char/Lewis/Lewisavi.png
deleted file mode 100644
index 8640610..0000000
Binary files a/src/static/img/char/Lewis/Lewisavi.png and /dev/null differ
diff --git a/src/static/img/char/Lewis/download20220804231440.png b/src/static/img/char/Lewis/download20220804231440.png
deleted file mode 100644
index 5090509..0000000
Binary files a/src/static/img/char/Lewis/download20220804231440.png and /dev/null differ
diff --git a/src/static/img/char/Lisbet/Lisbetavi.png b/src/static/img/char/Lisbet/Lisbetavi.png
deleted file mode 100644
index 8640610..0000000
Binary files a/src/static/img/char/Lisbet/Lisbetavi.png and /dev/null differ
diff --git a/src/static/img/char/Lisbet/download20220804232059.png b/src/static/img/char/Lisbet/download20220804232059.png
deleted file mode 100644
index 9b80d4f..0000000
Binary files a/src/static/img/char/Lisbet/download20220804232059.png and /dev/null differ
diff --git a/src/static/img/char/Lyalira/Lyaliraavi.png b/src/static/img/char/Lyalira/Lyaliraavi.png
deleted file mode 100644
index 7c4a4e7..0000000
Binary files a/src/static/img/char/Lyalira/Lyaliraavi.png and /dev/null differ
diff --git a/src/static/img/char/Milo/Miloavi.png b/src/static/img/char/Milo/Miloavi.png
deleted file mode 100644
index 8640610..0000000
Binary files a/src/static/img/char/Milo/Miloavi.png and /dev/null differ
diff --git a/src/static/img/char/Nephele/NephelePigeons.jpg b/src/static/img/char/Nephele/NephelePigeons.jpg
deleted file mode 100755
index f87d64f..0000000
Binary files a/src/static/img/char/Nephele/NephelePigeons.jpg and /dev/null differ
diff --git a/src/static/img/char/Nephele/Nepheleavi.png b/src/static/img/char/Nephele/Nepheleavi.png
deleted file mode 100644
index 8389ae7..0000000
Binary files a/src/static/img/char/Nephele/Nepheleavi.png and /dev/null differ
diff --git a/src/static/img/char/Nephele/download20220804233136.png b/src/static/img/char/Nephele/download20220804233136.png
deleted file mode 100644
index 8456573..0000000
Binary files a/src/static/img/char/Nephele/download20220804233136.png and /dev/null differ
diff --git a/src/static/img/char/Nephele/ozilette_green (1).png b/src/static/img/char/Nephele/ozilette_green (1).png
deleted file mode 100644
index 2ba2f53..0000000
Binary files a/src/static/img/char/Nephele/ozilette_green (1).png and /dev/null differ
diff --git a/src/static/img/char/Newcomer/Newcomeravi.png b/src/static/img/char/Newcomer/Newcomeravi.png
deleted file mode 100644
index 14f835f..0000000
Binary files a/src/static/img/char/Newcomer/Newcomeravi.png and /dev/null differ
diff --git a/src/static/img/char/Pixie/Pixie.png b/src/static/img/char/Pixie/Pixie.png
deleted file mode 100755
index e263d3e..0000000
Binary files a/src/static/img/char/Pixie/Pixie.png and /dev/null differ
diff --git a/src/static/img/char/Pixie/Pixieavi.png b/src/static/img/char/Pixie/Pixieavi.png
deleted file mode 100644
index ee473f7..0000000
Binary files a/src/static/img/char/Pixie/Pixieavi.png and /dev/null differ
diff --git a/src/static/img/char/Pixie/screenshot_190519-18-49-40.jpg b/src/static/img/char/Pixie/screenshot_190519-18-49-40.jpg
deleted file mode 100755
index f51355d..0000000
Binary files a/src/static/img/char/Pixie/screenshot_190519-18-49-40.jpg and /dev/null differ
diff --git a/src/static/img/char/Rodolphe/Rodolpheavi.png b/src/static/img/char/Rodolphe/Rodolpheavi.png
deleted file mode 100644
index 9ca78f2..0000000
Binary files a/src/static/img/char/Rodolphe/Rodolpheavi.png and /dev/null differ
diff --git a/src/static/img/char/Ryada/Ryadaavi.png b/src/static/img/char/Ryada/Ryadaavi.png
deleted file mode 100644
index af26a2f..0000000
Binary files a/src/static/img/char/Ryada/Ryadaavi.png and /dev/null differ
diff --git a/src/static/img/char/Theodosia/Theodosiaavi.png b/src/static/img/char/Theodosia/Theodosiaavi.png
deleted file mode 100644
index 71021fc..0000000
Binary files a/src/static/img/char/Theodosia/Theodosiaavi.png and /dev/null differ
diff --git a/src/static/img/char/Tilhar/Tilharavi.png b/src/static/img/char/Tilhar/Tilharavi.png
deleted file mode 100644
index 8640610..0000000
Binary files a/src/static/img/char/Tilhar/Tilharavi.png and /dev/null differ
diff --git a/src/static/img/char/Tilhar/download20220805121818.png b/src/static/img/char/Tilhar/download20220805121818.png
deleted file mode 100644
index eeac529..0000000
Binary files a/src/static/img/char/Tilhar/download20220805121818.png and /dev/null differ
diff --git a/src/static/img/char/Tilly/Tillyavi.png b/src/static/img/char/Tilly/Tillyavi.png
deleted file mode 100644
index e184266..0000000
Binary files a/src/static/img/char/Tilly/Tillyavi.png and /dev/null differ
diff --git a/src/static/img/char/Trace/Traceavi.png b/src/static/img/char/Trace/Traceavi.png
deleted file mode 100644
index 739343d..0000000
Binary files a/src/static/img/char/Trace/Traceavi.png and /dev/null differ
diff --git a/src/static/img/char/Trace/download20220805122241.png b/src/static/img/char/Trace/download20220805122241.png
deleted file mode 100644
index c9fb7a2..0000000
Binary files a/src/static/img/char/Trace/download20220805122241.png and /dev/null differ
diff --git a/src/static/img/char/Van/Vanavi.png b/src/static/img/char/Van/Vanavi.png
deleted file mode 100644
index 8640610..0000000
Binary files a/src/static/img/char/Van/Vanavi.png and /dev/null differ
diff --git a/src/static/img/char/Window/Windowavi.png b/src/static/img/char/Window/Windowavi.png
deleted file mode 100644
index dc17999..0000000
Binary files a/src/static/img/char/Window/Windowavi.png and /dev/null differ
diff --git a/src/static/img/fav.ico b/src/static/img/fav.ico
deleted file mode 100644
index 28502c9..0000000
Binary files a/src/static/img/fav.ico and /dev/null differ
diff --git a/src/static/img/monorail.png b/src/static/img/monorail.png
deleted file mode 100644
index e0cbad7..0000000
Binary files a/src/static/img/monorail.png and /dev/null differ
diff --git a/src/static/img/nav.pal b/src/static/img/nav.pal
deleted file mode 100644
index ecec2bf..0000000
--- a/src/static/img/nav.pal
+++ /dev/null
@@ -1,259 +0,0 @@
-JASC-PAL
-0100
-256
-248 16 224
-40 28 32
-88 92 136
-136 100 136
-40 40 40
-4 2 4
-248 176 208
-176 108 112
-224 152 160
-248 172 160
-24 36 72
-236 170 196
-36 58 108
-48 52 64
-112 140 208
-208 172 168
-184 172 208
-132 118 172
-128 44 40
-140 146 204
-16 20 56
-208 108 64
-96 104 160
-212 176 208
-40 52 104
-80 88 136
-236 122 84
-204 92 40
-0 0 0
-24 10 4
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/src/static/xml/blessfrey.xml b/src/static/xml/blessfrey.xml
deleted file mode 100644
index f344212..0000000
--- a/src/static/xml/blessfrey.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-
-
-
-blessfrey.me
-https://www.blessfrey.me/
-chimchooree's dev space
-en-us
-chimchooree@mail.com (chimchooree)
-
-hostility
-https://www.blessfrey.me/diary/entries/220127
-what is hostility? Hostility is a state that a character's AI state machine can enter. More ...
-Thu, 27 Jan 2022 05:00:05 GMT
-https://www.blessfrey.me/diary/entries/220127
-
-
-designing blessfrey's first demo
-https://www.blessfrey.me/diary/entries/220120
-my goals The systems and game mechanics in Blessfrey are mostly present and functional, so I feel ...
-Thu, 20 Jan 2022 05:00:05 GMT
-https://www.blessfrey.me/diary/entries/220120
-
-
-goalless games
-https://www.blessfrey.me/diary/entries/220114
-goalless games Some developers are happy to make loose, meandering sandbox games without no true ...
-Fri, 14 Jan 2022 05:00:05 GMT
-https://www.blessfrey.me/diary/entries/220114
-
-
-new year's resolution (2022) - money year
-https://www.blessfrey.me/diary/entries/220113
-This blog is my gamedev diary, but it's fun to use it as a real diary, too. Last year's resolution ...
-Thu, 13 Jan 2022 05:00:05 GMT
-https://www.blessfrey.me/diary/entries/220113
-
-
-december 2021: hosting christmas
-https://www.blessfrey.me/diary/entries/220101
-sunday, december 5 My family's hosting Christmas this year. My in-laws are visiting next ...
-Sat, 01 Jan 2022 05:00:05 GMT
-https://www.blessfrey.me/diary/entries/220101
-
-
-november 2021: guild theme park trip
-https://www.blessfrey.me/diary/entries/211201
-friday, november 12 Still making sure all the systems are integrated together...Death, XP, ...
-Wed, 01 Dec 2021 05:00:05 GMT
-https://www.blessfrey.me/diary/entries/211201
-
-
-october 2021: catch-up
-https://www.blessfrey.me/diary/entries/211101
-summary Mostly catching up to deadlines, giving extra play-time to kitty, and making new friends in ...
-Mon, 01 Nov 2021 05:00:05 GMT
-https://www.blessfrey.me/diary/entries/211101
-
-
-september 2021: moving in
-https://www.blessfrey.me/diary/entries/211001
-summary Another month of moving. Last updated january 25, 2022 ...
-Fri, 01 Oct 2021 05:00:05 GMT
-https://www.blessfrey.me/diary/entries/211001
-
-
-august 2021: moving
-https://www.blessfrey.me/diary/entries/210901
-summary August was all about the new house. So many appointments! At least the bulk of planned ...
-Wed, 01 Sep 2021 05:00:05 GMT
-https://www.blessfrey.me/diary/entries/210901
-
-
-july 2021: mostly moving (IRL, not in-game)
-https://www.blessfrey.me/diary/entries/210801
-sunday, july 4 - Independence Day My favorite holiday! I celebrate every year by making a ...
-Sun, 01 Aug 2021 05:00:05 GMT
-https://www.blessfrey.me/diary/entries/210801
-
-
-how to attack a moving target
-https://www.blessfrey.me/diary/entries/210708
-I'll share my tentative design for the attack-movement loop. The attack-movement loop needs to ...
-Thu, 08 Jul 2021 05:00:05 GMT
-https://www.blessfrey.me/diary/entries/210708
-
-
-june 2020: attack and movement
-https://www.blessfrey.me/diary/entries/210701
-friday, june 4 I ordered some rayon rib knit for a mock turtleneck, but customer service ...
-Thu, 01 Jul 2021 05:00:05 GMT
-https://www.blessfrey.me/diary/entries/210701
-
-
-sewing my own clothes
-https://www.blessfrey.me/diary/entries/210624
-I've spent more time pattern-making than programming, so let's take a fashion break this week! my ...
-Thu, 24 Jun 2021 05:00:05 GMT
-https://www.blessfrey.me/diary/entries/210624
-
-
-follow a moving target
-https://www.blessfrey.me/diary/entries/210610
-After redesigning the movement system to support patrols, I realized the path remains static even ...
-Thu, 10 Jun 2021 05:00:05 GMT
-https://www.blessfrey.me/diary/entries/210610
-
-
-may 2021: mostly GDD and CSS
-https://www.blessfrey.me/diary/entries/210601
-wednesday, may 5 Still trying to find a nice way to organize my GDD (game design document). ...
-Tue, 01 Jun 2021 05:00:05 GMT
-https://www.blessfrey.me/diary/entries/210601
-
-
-
diff --git a/src/views/characters.tpl b/src/views/characters.tpl
deleted file mode 100644
index 904a573..0000000
--- a/src/views/characters.tpl
+++ /dev/null
@@ -1,64 +0,0 @@
-% rebase('frame.tpl')
-
Animal Parade is a capsule wardrobe. For now, enjoy documentation of the Gator swimsuit.
-
-
-
-
concept
-
I'll explain Animal Parade in a later iteration of this page, but it emphasizes layering pieces. Every garment should be valued and individualized, even basic undershirts, sleep masks, etc. All the designs are named after important animals in my life. The swimsuit is named Gator because of the gator who lives in my subdivision. I've seen him during walks. Absolutely unnerving.
-
-
-
design process
-
I haven't had a swimsuit for years and never like any anyway. I browsed online catalogs in English and 日本語 and window-shopped everywhere in town, searching for both style and technical inspiration. I've never worked with active wear garments, so I studied the inside of nearly everything at Dick's Sporting Goods to understand the style elements, seams, and findings typical of swimsuits and active wear in general. I learned a lot but liked virtually nothing.
-
-
1.5 piece
-
The swimsuits that stood out to me were treading the line between one piece and two-piece. I can't find my old collage, but here's a quick one. Sorry for not remembering the source of the images. I iterated over the concept in sketches a little.
This is where the two-piece idea led. I like the sheer fabric in the central examples from the collage. I love texture, so all the ruching and gathers really stand out to me, too. I wonder how feasible it would be to make two "two-pieces" - one relatively basic bikini with a loop in the center front of the swim bottoms, and another sheer, pintucked overlay with a tricot panel peek-a-boo skirt that fastens onto the loop. The overlay is tiered in the back then parts around the sides until it fully exposes the midriff in the front.
-
-
I'm not sure tricot or mesh would be sturdy enough for pintucks, so I checked if chiffon swimwear is even a thing. It actually is! Plenty of chiffon sleeves and panels floating around out there.
-
-
I really like this design. The central fastener on the swim bottoms isn't like anything I've seen in stores. The suit's connected in enough places that it shouldn't become a shapeless bubble nor flap up and show too much skin underwater. I bet it'd be gorgeous to watch float and flow in the waves.
-
-
Unfortunately, pretty or not, I don't think it's practical. Chiffon is a dainty fabric, and swimming is not a dainty activity. I lean against brick and against concrete without babying my clothes. Chiffon isn't that comfortable to wear dry, and I cringe imagining soaking wet chlorine chiffon Saran-wrapped over my torso. Not to mention, I don't know how comfortable I am with a two-piece anyway? Body insecurities!
-
Back to the drawing board!
-
-
made for me
-
Instead of synthesizing the prettiest elements into one swimsuit, I should be synthesizing the most practical elements into one swimsuit. People who feel confident and comfortable in their clothes are the prettiest!
-
-
-
I want less skin showing, but I want to feel the water on some part of my body.
-
I prefer the collage swimsuits with tiered swim skirts. Many "modest" swimsuits look like short bodycon dresses. I'm not insecure about my swimsuit being too short; I'm insecure about showing the world my lower abdomen! If the tiers are detached and start high, it obscures this area without looking frumpy.
-
Virtually every well-made sporting goods swimsuit (and almost every piece of male active wear for that matter) had raglan sleeves. This makes sense, since it's a sleeve that doesn't impede rotation of the shoulder, but I'm surprised it's raglan or bust for athletes. Guess I'll take note.
-
Mock turtlenecks are just the best. I have a long neck, so they look good on me.
I drew and drew over the same croquis, but the big idea is a long-sleeved raglan with a mock turtleneck and tiered layers around the lower body. I facilitated between full-coverage bikini bottoms and shorts. I also had an idea for a swim obi belt. Obi belts were all over the runway a few years ago. I couldn't find anything quite like it on a swimsuit, but it seems like such a cool idea. Maybe not practical, but I'd go for it if it didn't require so much fabric.
-
-
-
-
- Zuhair Murad presented some of my favorite obi belt looks during the Pre-Fall 2019 show. Photo credit to Emmanuel Giraud.
-
-
-
-
Anyway, this is close to what I made. I moved the zipper to the center back to avoid breaking up my beautiful fabric. I didn't care to insert piping into active wear seams. (yes, those aren't thick seams - that is piping.) I didn't make the obi belt either, but I might. I have long strips of fabric left over, and it might be enough to do something cool.
I chose neoprene because it's luxuriously, flatteringly thick, durable, and still relatively trendy in fashion after years of being delegated to seat covers and boring functional garments. I've never sewn with it before and heard terrible things, but I'll try it.
-
-
This print in particular is so unique. In a sea of tropical island palm tree prints, this one has swamps! I grew up in swamps and live in a swamp, and I never see our biome fantasized into artwork like this. It's also bright and pastel without entering some generic rainbow or pastel goth palette. It even includes that incredible glowing sulfur color from PANTONE's 2021 Color of the Year. I adore this fabric.
This is my only picture of my pattern for now. I make them out of thick paper and hang them by piercing a full set with a safety pin then hanging them from yarn bows.
-
-
I've never made a raglan sleeve and don't even own any, so this was a real challenge. I started with a regular sloper, taped them together, cut them along the "raglan line," used that to sew a knit bodysuit, then fitted and seam-ripped and resewed until it was spot-on.
-
-
I've never designed a mock turtleneck either, even though I really ought to have by now. For some reason, I imagining it should be more tapered, but the neck is relatively tubular. The triangular muscles connecting the neck to the shoulders aren't as important, especially with my placement of the scoop "neckline." It also took several iterations before it was long enough to actually look like a turtleneck.
-
-
Sleeves are sleeves. Princess lines and tiers-and-panels are practically my specialty, so no problem there. Then I traced my comfiest pair of full-coverage underwear for the leg openings. As with most of my tiered designs, the tiers of the skirt only start an inch or so from under the previous tier. That bottom tier isn't much longer than the tier on the top. This reduces bulk and fabric consumption, which is 100x more important on a swimsuit made of pricy fabric. The length of the tiers took a lot of experimentation. They need to be balanced, fall at flattering points of my body, begin at comfortable points on my body, and work with the print.
I was very conscious of the print while cutting. I used the white sky as an anchor and draped a few different placements - across the collarbone, across the bustline, and my chosen placement, atop the chest. The print has dense dark areas and light fluffy areas, and this placement emphasized femininity. The grays and trees are at my breasts, emphasizing them while still looking painterly and abstract enough to not be garish. The blacks and voids are at my waist, neck, upper arms, and crotch. Then the dense, difficult-to-read green foliage obscures my lower body. Perfect! I matched the arms, which puts the placid blue water on my forearms, so the part I see the most is my favorite part of the print. Overall, perfect sizing and placement in my eyes.
-
-
As for sewing, these are all serged seams using pastel rainbow thread. The edges are serged with gray. The tiered were basted and gathered by hand. It was very, very easy. Whoever told me neoprene doesn't hold stitches must have had a very finicky machine.
-
-
The top is supported by underwire and thin cups. I cut up an old bra and attached it to the lining by hand. It was kind of nerve-wracking doing the fittings because any markings or fittings involving stretchy material around the breasts are difficult to achieve accuracy with, but the final fit is perfect.
I've taken it to the beach and the pool and feel so special. No one has a swimsuit like this. The colors are adorable and unique. The print is so intricate compared to the rest of the market. The design is relatively modest but still youthful. I get so many compliments.
-
-
It's very comfortable to wear, too, which was my number one design goal here. The skirt isn't too bulky, so I can get away with oversized jeans as my coverup. I feel confident under the thick fabric and tiered skirt, and the long sleeves and tall neck protect me from the full blast of the sun. My thighs do show, but whatever. They're usually underwater anyway. The swimsuit maintains its shape well underwater, too.
-
-
Then when I was done, I immediately sewed four mock turtleneck undershirts based off this pattern and love them, too! I'll revamp this page to show them off and more, but that's plenty for now!
{{random.choice(['.','•','☆','★'])}} link to previous demos
-
-
about page
-
{{random.choice(['.','•','☆','★'])}} some cute presentation of links. maybe nice promo art with table of contents over a long page. click on what you want or scroll around. I had one of those old myspace css boxes with links, but I can't imagine that working on mobile, etc.
-
{{random.choice(['.','•','☆','★'])}} artwork: 6 panels of Helia with each job
-
{{random.choice(['.','•','☆','★'])}} screenshots and diagrams of skills, skill library, skillbar
-
{{random.choice(['.','•','☆','★'])}} screenshots and diagrams of team window, team member editing window
-
{{random.choice(['.','•','☆','★'])}} slideshow, 3-panel comic, etc of gist of the story with a sentence or two describing each part.
-
{{random.choice(['.','•','☆','★'])}} cute character section with image links - panels, animated sprites, something
-
{{random.choice(['.','•','☆','★'])}} info section - genre, list platforms, engine, dev. link to presskit, credits, game design document.
-
{{random.choice(['.','•','☆','★'])}} timeline/roadmap - list all the beats. link to milestones.
-
-
dev page
-
-
{{random.choice(['.','•','☆','★'])}} make it like Barbie's old room on her website - hover over stuff, it animates, opens up new window or takes you to new page.
-
{{random.choice(['.','•','☆','★'])}} add picture links for GitLab, itch, Twitter, Discord, Bible verse, OCs, artwork, etc.
-
-
toolbox
-
-
{{random.choice(['.','•','☆','★'])}} CSS Grid Generator for easy CSS grid design and coding
-
{{random.choice(['.','•','☆','★'])}} Nu Html Checker for HTML checking