I've spent more time pattern-making than programming, so let's take a fashion break on the blog this week! <br>
I've spent more time pattern-making than programming, so let's take a fashion break this week! <br>
<br>
<br>
<h2>my life story told through clothes </h2><br>
<h2>my life story told through clothes </h2><br>
Hand-me-downs from older girls at school and church have been a staple in my wardrobe for the majority of my life. Anything that was too big, I kept around to grow into later. I did enjoy the clothes because they weren't anything like what my peers were wearing at the time. My boxy denim dress with white embroidery received comments that I looked like I was from a different fashion era - maybe an insult, but it's a really curious way to be described. Also, sometimes they were old enough to swing back around to the cusp of fashion, like the story of my wide leg jeans. <br>
Hand-me-downs from older girls at school and church have been a staple in my wardrobe for the majority of my life. Anything that was too big, I kept around to grow into later. I loved them because they weren't like anything my peers were wearing. My cousin's old boxy denim dress with white embroidery received comments that I looked like I was from a different fashion era - maybe an insult, but it's a really curious way to be described. Also, sometimes they were old enough to swing back around to the cusp of fashion, like the story of my wide leg jeans. <br>
<br>
<br>
When I grew up, I thought I could finally invest in a few nice work and event clothes for my adult wardrobe, since everyone said I was finished growing. Then I suddenly get a freakish growth in my early 20s. My doctor wasn't concerned, but almost everything was suddenly too short and couldn't fit around my shoulders anymore. Everything but old hand-me-downs from a boss's daughter. Since I was moving, I welcomed the opportunity to avoid the costly and demotivating search for clothing in my size. And with the initial pressure of having no clothes resolved, I never really tried to replace my wardrobe. I was even on trend, since thrifting exploded in popularity. <br>
When I grew up, I thought I could finally invest in a few nice work and event clothes for my adult wardrobe, since everyone said I was finished growing. Then I get a freakish growth spurt in my early 20s. My doctor wasn't concerned, but nothing fit around my shoulders anymore...everything but old hand-me-downs from a boss's daughter. I welcomed the opportunity to once again lean into hand-me-downs and avoid the costly and demotivating search for clothing in my size. And with the initial pressure of having no clothes resolved, I never really tried to replace my wardrobe. I'm even on trend, since thrifting has exploded in popularity. <br>
<br>
<br>
The clothes I did buy or make myself tended to be fussy by preference, rife with layering and delicate chiffons. It's feminine, but when the pandemic hit, I craved ease and comfort over anything else. For about a solid year, I wore nothing but comfy old cotton hand-me-downs and my husband's t-shirts. <br>
After months of pandemic-era shelter-in-place orders, I crave normalcy and looking cute again. I still don't really have anything in <em>my</em> style, though, just other people's clothes. I'm at a more stable and independent point in my life anyway, so I should dress like it. <br>
<br>
Now, coming out of the pandemic, I crave normalcy and looking cute again. I still don't really have anything in <em>my</em> style, though, just a few loose-fitted chiffon blouses and skirts that survived the growth spurt. If the pandemic did any good, it finally pushed me to do something about it. I'm at a more stable point, so it's a good time for it. <br>
<br>
<br>
<h2>capsule wardrobe concept </h2><br>
<h2>capsule wardrobe concept </h2><br>
You need a thesis before you jump into anything. If a higher-level concept is guiding you, it'll give you consistent answers for the little details. In general, a design-oriented approach encourages you to solve any potential problems ahead of time. Creating a style guide and debugging are a big part of both programming and fashion, and that common ground is what draws me to both. <br>
I do nothing without a thesis. With a higher-level concept to guide me, everything down to the little details can stay consistent. Obviously taking a design-oriented approach applies to gamedev, too. It's kind of like a style guide for sewing. <br>
<br>
<br>
My functional goal is to fill out my wardrobe with some solid core pieces that are easy to mix and match. I'll worry about more fashion-oriented or niche pieces later. My more abstract concept stems from my story above - my attachment to my old hand-me-downs, my desire to have an individualized style, and some lingering pandemic preference for natural fibers. I'll play with the sizing of clothes and update old styles in my closet. <br>
My functional goal is to fill out my wardrobe with some solid core pieces that are easy to mix and match. I'll worry about more fashion-oriented or niche pieces later. My more abstract concept stems from my story above - my attachment to my old hand-me-downs, my desire to have an individualized style, and a lingering pandemic preference for comfy, unfussy natural fibers. Technically, this translates to playing with the sizing of clothes and mixing of decades and cultural inspirations. <br>
<br>
<br>
<h2>sketches </h2>
<h2>sketches </h2>
I'll make 3 mock turtlenecks, a button-down shirt, a bodice, a pair of pants, two shorts, a light bomber jacket, a kimono, two pajama sets, and 2 pajama sets. <br>
I'll make 3 mock turtlenecks, a button-down shirt, a bodice, a pair of pants, two shorts, a light bomber jacket, a kimono, two pajama sets, a swimsuit, and a few hair accessories. <br>
<img src="/static/img/ent/capsulewardrobe_sketches2.png" alt="(image: a bomber jacket with a luminous light pink polyester and a gray, beige, and light brown lace, a bodice with a white bamboo viscose with pink cherry blossoms and blue birds, a kimono with black inky block batiste, a button-down short sleeve shirt with shank buttons, black piping, and a beetle print, and a mock turtleneck with thumbholes and a metallic foil knit)" width="500">
<img src="/static/img/ent/capsulewardrobe_sketches2.png" alt="(image: a bomber jacket with a luminous light pink polyester and a gray, beige, and light brown lace, a bodice with a white bamboo viscose with pink cherry blossoms and blue birds, a kimono with black inky block batiste, a button-down short sleeve shirt with shank buttons, black piping, and a beetle print, and a mock turtleneck with thumbholes and a metallic foil knit)" width="500">
</a><br>
</a><br>
<b>Bomber</b>: I've had a favorite light rayon bomber jacket for 10 years, but it's finally wearing out and has some weird bleach stains. This is basically a knockoff of a BB Dakota design, and I may end up making a few variations. This one is a shiny pink polyester (a beautiful exception to my natural fiber rule) with multicolored lace trim, a metal zipper, and a beige drawstring. <br>
<b>Bomber</b>: 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, and I may end up making a few variations. This one is a shiny pink polyester (a beautiful 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. <br>
<br>
<br>
Instead of chiffon, I'm going to include more batiste and poplin. They're all lightweight, layer-friendly fabrics. Chiffon is usually polyester, though, while the others are usually from natural fibers like bamboo or cotton. Like the other tops, it's designed for layering. I will have ruffles at the shoulders and long straps from the waist, so they can be wrapped around and tied in a bow. <br>
<b>Bodice</b>: 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. <br>
<br>
<br>
<b>Kimono</b>: I have a favorite purple floral chiffon kimono that has a seam that is still coming undone after three repairs, so it needs a break. This design is similar, but there's not really a lot you can do with a simple long, kimono-sleeved sheer kimono. This one is rayon batiste, though, with a dark inky print. <br>
<b>Kimono</b>: 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! <br>
<br>
<br>
<b>泣き虫 (Cry Bug)</b>: 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 fit like your dad's shirt where the short sleeves come down too far, the armholes are too deep, and the pocket is too big like they're from a menswear shirt, but the collar and length are 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 corrent proportions, though. <br>
<b>泣き虫 (Cry Bug)</b>: 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. <br>
<br>
<br>
<b>Mock Turtle</b>: Then there's three mock turtlenecks since I really like light turtlenecks but don't have any anymore. One is a foil knit with thumbholes, one is a striped knit, and one is a 4x2 rib knit. <br>
<b>Mock Turtle</b>: There's three light mock turtlenecks. These are my favorite staple, but I lost mine 2 moves ago. (RIP) One is a foil knit with thumbholes, one is a striped knit, and one is a 4x2 rib knit. <br>
<img src="/static/img/ent/capsulewardrobe_sketches1.png" alt="(image: A mock turtleneck with gray and white horizontal striped tissue knit, a mock turtleneck with 4x2 black rib knit, pants with seagrass green, brown, and tan plaid linen, a pair of shorts with natural linen with white, lime, and orange stripes and a multicolor fringe ribbon in mint, baby pink, brown, neon coral, baby blue, and straw, and a pair of cuffed shorts with a bow belt in dragon fruit printed linen.)" width="500">
<img src="/static/img/ent/capsulewardrobe_sketches1.png" alt="(image: A mock turtleneck with gray and white horizontal striped tissue knit, a mock turtleneck with 4x2 black rib knit, pants with seagrass green, brown, and tan plaid linen, a pair of shorts with natural linen with white, lime, and orange stripes and a multicolor fringe ribbon in mint, baby pink, brown, neon coral, baby blue, and straw, and a pair of cuffed shorts with a bow belt in dragon fruit printed linen.)" width="500">
</a><br>
</a><br>
<b>Pants</b>: Straight-legged plaid linen pants with a fly-front closure, belt loops, side pockets, and blind hems. <br>
<b>Pants</b>: 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. <br>
<br>
<br>
<b>Shorts</b>: 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. <br>
<b>Shorts</b>: 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. <br>
<img src="/static/img/ent/capsulewardrobe_sketches3.png" alt="(image: a one piece long sleeve swimsuit with a mock turtleneck, an obi belt, three ruffles over the hips, and shorts, a yukata-style pajama set with bishop sleeves and berry red piping and dawn blue jacquard, and a pajama set with gathered sleeves, a gathered empire-waisted top, and gathered shorts with a sailor color and oversized rick rack trim and dark blue jacquard fabric with white bow print. )" width="500">
<img src="/static/img/ent/capsulewardrobe_sketches3.png" alt="(image: a one piece long sleeve swimsuit with a mock turtleneck, an obi belt, three ruffles over the hips, and shorts, a yukata-style pajama set with bishop sleeves and berry red piping and dawn blue jacquard, and a pajama set with gathered sleeves, a gathered empire-waisted top, and gathered shorts with a sailor color and oversized rick rack trim and dark blue jacquard fabric with white bow print. )" width="500">
</a><br>
</a><br>
<b>Swimsuit</b>: The one piece swimsuit is made out of pastel green and pink neoprene with pops of yellow in an abstract swampy design. I actually lived around wetlands for most of my life, but I mostly just like the print. It has long sleeves, a mock turtleneck, and an invisible zipper at the center back. The focus is the obi belt made from the same material. There are three panel-and-tier ruffles covering the shorts 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. <br>
<b>Swimsuit</b>: 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. <br>
<br>
<br>
<b>Pajama sets</b>: The pajamas are not my design. They are basically knock-offs from Yahoo! Japan shopping, since I don't feel like importing pajamas. (The originals are <a href="https://store.shopping.yahoo.co.jp/open-clothes/xkunken-aihyx401.html?sc_i=shp_pc_search_itemlist_shsrg_img">Japanese-style yukata-style long sleeve pajama set for spring and fall</a> from <a href="https://store.shopping.yahoo.co.jp/open-clothes/">OPEN-CLOTHES</a> and <a href="https://store.shopping.yahoo.co.jp/kittyshop/lh20051312.html">summer pajama set for ladies in their 20s with flared collar and cute short sleeves</a> from <a href="https://shopping.geocities.jp/kittyshop/">kittyshop</a>. Products names are translated from Japanese to English.) They're only included in this collection because I have no pajama sets that fit besides the never-seasonally-appropriate heavy sets I occasionally get for my winter birthday. I'm using jacquard fabric I've had around but never used, and instead of the ruffles on second set, I'm going to use oversized rick rack. <br>
<b>Pajama sets</b>: 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 <a href="https://store.shopping.yahoo.co.jp/open-clothes/xkunken-aihyx401.html?sc_i=shp_pc_search_itemlist_shsrg_img">Japanese-style yukata-style long sleeve pajama set for spring and fall</a> from <a href="https://store.shopping.yahoo.co.jp/open-clothes/">OPEN-CLOTHES</a> and <a href="https://store.shopping.yahoo.co.jp/kittyshop/lh20051312.html">summer pajama set for ladies in their 20s with flared collar and cute short sleeves</a> from <a href="https://shopping.geocities.jp/kittyshop/">kittyshop</a>.) 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 yearround 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. <br>
<br>
<br>
<h2>pattern-making and sewing so far</h2>
<h2>pattern-making and sewing so far</h2>
<br>
<br>
@ -64,9 +62,9 @@ I'm in the middle of sewing the button-down. The sleeves are cuffed and reinforc
After the button-down is finished, I really want to tackle a swimsuit next. I was prioritizing everyday clothes, but I've been thinking it would more fun to have a swimsuit as soon as possible. Since I was planning to take my time with it, the obi swimsuit is not only made from the most challenging fabric, but it also has the most elaborate design. I might design a simple swimsuit to use for now, since it's reasonable to have more than one swimsuit. <br>
After the button-down is finished, I really want to tackle a swimsuit next. I was prioritizing everyday clothes, but I've been thinking it would more fun to have a swimsuit as soon as possible. Since I was planning to take my time with it, the obi swimsuit is not only made from the most challenging fabric, but it also has the most elaborate design. <br>
<br>
<br>
Maybe I'll update again when I've completed some garments, but thanks for reading an off-topic post. <br>
Anyway, thanks for reading an off-topic post. <br>
Househunting has been unexpectedly time-consuming, but I'll share the tentative design for the attack-movement loop. Hopefully now that an offer was accepted, I'll find some time to iron out the design before packing and moving begins. <br>
Househunting has been unexpectedly time-consuming, but I'll share the tentative design for the attack-movement loop. <br>
<br>
<br>
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: <br>
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: <br>
I'll work it out sooner or later, dependent on how hectic moving turns out to be. <br>
I'll work it out sooner or later, dependent on how hectic moving turns out to be. <br>
<br>
<br>
(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 bash script without relying on copypasta code from forums this time. I was trying to follow the documentation website before, but it's unreadable. The man page is so much easier to understand and search through.) <br>
(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.) <br>
Househunting has been unexpectedly time-consuming, but I'll share the tentative design for the attack-movement loop. Hopefully now that an offer was accepted, I'll find some time to iron out the design before packing and moving begins. <br>
<br>
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: <br>
<img src="/static/img/ent/attack-movement-loop-diagram.png" alt="(image: diagram of the attack movement loop)" width="500" height="233">
</a><br></center>
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. <br>
<br>
<h2>the loop explained </h2><br>
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." <br>
<br>
The AI receives these signals. If the target was out of range, it sets up to follow attack target. <br>
<br>
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. <br>
<br>
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. <br>
<br>
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). <br>
<br>
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. <br>
<br>
Then the AI receives the "arrived_at_attack_target" signal and prompts the character to begin the attack all over again. <br>
<br>
<h2>in-game </h2><br>
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. <br>
I'll work it out sooner or later, dependent on how hectic moving turns out to be. <br>
<br>
(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 bash script without relying on copypasta code from forums this time. I was trying to follow the documentation website before, but it's unreadable. The man page is so much easier to understand and search through.) <br>
<li>I ordered some rayon rib knit for a mock turtleneck, but customer service emailed me yet again saying that it's out of stock. There were over 100 yards in stock when I placed my order...all I want is 2 yards. I thought the housing market was unreasonable, but the basic black fabric market is brutal. </li>
<li>I ordered some rayon rib knit for a mock turtleneck, but customer service emailed me yet again saying that it's out of stock. There were over 100 yards in stock when I placed my order...all I want is 2 yards. I thought the housing market was unreasonable, but the basic black fabric market is brutal. </li>
<li>Urban Decay announced their new <a href="https://www.temptalia.com/urban-decay-vice-hydrating-lipstick-for-summer-2021/">Vice Hydrating Lipstick</a> for Summer 2021. It's official. My all-time favorite lipstick line is discontinued, and they're replacing it with a bland color range with (going off their recent releases) inconsistent quality. "35 Los Angeles-inspired shades from sheer pink and everyday nude to bold." Good-bye gunmetals, blacks, and purples. They don't even have my MLBB mauve anymore. I can't believe the "Does Pink Make You Puke?" brand that designed their lipsticks after bullets is trying to act like a cookie-cutter LA influencer now...It's the way of the world. </li>
<li>Urban Decay announced their new Vice Hydrating Lipstick for Summer 2021. It's official. My all-time favorite lipstick line is discontinued, and they're replacing it with a bland color range. "35 Los Angeles-inspired shades from sheer pink and everyday nude to bold." Good-bye gunmetals, blacks, and purples. They don't even have my MLBB mauve anymore. I can't believe the "Does Pink Make You Puke?" brand is chasing cookie-cutter LA influencers now. </li>
<br>
<br>
<h3>friday, july 9 </h3>
<h3>friday, july 9 </h3>
<ul>
<ul>
@ -25,9 +25,9 @@ august 1, 2021<br>
<h3>sunday, july 11 </h3>
<h3>sunday, july 11 </h3>
<img src="/static/img/ext/yaoihands.jpg" alt="(image: meme where the manga guys are drawn with tiny heads and giant hands)">
<img src="/static/img/ext/yaoihands.jpg" alt="(image: meme where the manga guys are drawn with tiny heads and giant hands)">
<ul>
<ul>
<li>A while back, I found a used bookstore run by an old lady that almost exclusively sells Harlequin novels (we're talking 3 or 4 solid aisles). Did you know that's a publishing house, not a genre? And it's not just something old ladies talk about - it's this entire world with ridiculously distinctive branding. That crazy red branding unlocked a memory of when I found a free manga on Google Books, but it was co-authored by some Western woman. The artstyle was kinda like that meme where the guys have tiny heads, and it was about an architect lady in an office or something. The characters felt really Western (read as "boring" lol). I looked it up and, turns out, that was a Harlequin <i>manga</i>. Apparently Harlequin's a Canadian company, but they have a Japanese branch that converts the stories into manga for the Japanese audience. Who knew the influence of those books reached across cultural divides? </li>
<li>A while back, I found a used bookstore run by an old lady that almost exclusively sells Harlequin novels (we're talking 3 or 4 solid aisles). Did you know that's a publishing house, not a genre? And it's not just something old ladies talk about - it's this entire world with ridiculously distinctive branding. That crazy red branding unlocked a memory of when I found a free manga on Google Books, but it was co-authored by some Western woman. The artstyle was kinda like that meme where the guys have tiny heads, and it was about an architect lady in an office or something. The whole thing felt really Western (read as "boring" lol). I looked it up and, turns out, that was a Harlequin <i>manga</i>. Apparently Harlequin's a Canadian company, but they have a Japanese branch that converts the stories into manga for the Japanese audience. Who knew the influence of those books reaches across cultural divides? </li>
<li>Romance novels in general are items of pure marketing, so they're fun to observe in the wild like that. If you haven't watched <a href="https://www.youtube.com/watch?v=UJiv14uPOac">Chris Zukowski's GDC talk about genre marketing tropes</a>, I recommend it. Starting at 28:15, he compares effective romance novel covers to effective game covers of various genres, and the sophistication of the visual language was pretty eye-opening. </li>
<li>Romance novels in general are items of pure marketing, so they're fun to observe in the wild like that. If you haven't watched <a href="https://www.youtube.com/watch?v=UJiv14uPOac">Chris Zukowski's GDC talk about genre marketing tropes</a>, I recommend it. Starting at 28:15, he compares effective romance novel covers to effective game covers of various genres, and the sophistication of the visual language was pretty eye-opening. </li>
<li>Anyway, I bought something while I was there to be polite: Marion Zimmer Bradley's The Heirs of Hammerfell (not the one from The Elder Scrolls). I started reading it today. Cool 80s-90s fantasy book. It's book 8, so I may have to hunt down earlier entries. </li>
<li>Anyway, I bought something while I was there to be polite: Marion Zimmer Bradley's The Heirs of Hammerfell (unrelated to The Elder Scrolls). I started reading it today. It's an okay 80s-90s fantasy book. </li>
<li>Made tags into links that show all diary entries that share that tag </li>
<li>Made tags into links that show all diary entries that share that tag </li>
<li>Added a word cloud, ordered by frequency. I love blogs with word clouds so much and finally have one of my own. </li>
<li>Added a word cloud, ordered by frequency. I love blogs with word clouds so much and finally have one of my own. </li>
Househunting has been unexpectedly time-consuming, but I'll share the tentative design for the attack-movement loop. Hopefully now that an offer was accepted, I'll find some time to iron out the design before packing and moving begins. <br>
<br>
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: <br>
<img src="/static/img/ent/attack-movement-loop-diagram.png" alt="(image: diagram of the attack movement loop)" width="500" height="233">
</a><br></center>
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. <br>
<br>
<h2>the loop explained </h2><br>
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." <br>
<br>
The AI receives these signals. If the target was out of range, it sets up to follow attack target. <br>
<br>
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. <br>
<br>
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. <br>
<br>
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). <br>
<br>
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. <br>
<br>
Then the AI receives the "arrived_at_attack_target" signal and prompts the character to begin the attack all over again. <br>
<br>
<h2>in-game </h2><br>
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. <br>
I'll work it out sooner or later, dependent on how hectic moving turns out to be. <br>
<br>
(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 bash script without relying on copypasta code from forums this time. I was trying to follow the documentation website before, but it's unreadable. The man page is so much easier to understand and search through.) <br>
Househunting has been unexpectedly time-consuming, but I'll share the tentative design for the attack-movement loop. Hopefully now that an offer was accepted, I'll find some time to iron out the design before packing and moving begins. <br>
<br>
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: <br>
<img src="/static/img/ent/attack-movement-loop-diagram.png" alt="(image: diagram of the attack movement loop)" width="500" height="233">
</a><br></center>
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. <br>
<br>
<h2>the loop explained </h2><br>
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." <br>
<br>
The AI receives these signals. If the target was out of range, it sets up to follow attack target. <br>
<br>
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. <br>
<br>
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. <br>
<br>
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). <br>
<br>
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. <br>
<br>
Then the AI receives the "arrived_at_attack_target" signal and prompts the character to begin the attack all over again. <br>
<br>
<h2>in-game </h2><br>
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. <br>
I'll work it out sooner or later, dependent on how hectic moving turns out to be. <br>
<br>
(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 bash script without relying on copypasta code from forums this time. I was trying to follow the documentation website before, but it's unreadable. The man page is so much easier to understand and search through.) <br>
August was all about the new house. So many appointments! At least the bulk of planned appointments ended this week. Once the final checklist for moving out of the old apartment is 100% complete (and that deadline is closing in), I'll be back on my time. Moving is exhausting. <br>
August was all about the new house. So many appointments! At least the bulk of planned appointments ended this week. Once the final checklist for moving out of the old apartment is 100% complete (and that deadline is closing in), I'll switch to cleaning and unpacking the house. Moving is exhausting. <br>
<br>
<br>
To entertain myself for the long stretches of time without internet access, I grabbed the first Japanese language visual novel I saw without sexual content. (I'm kind of a prude lol.) It's so risky to have a random VN as your only game for a whole month. I didn't even read the <a href="https://vndb.org/">VNDB's</a> synopsis, but I guess it wouldn't have tipped me off to how strange and uncomfortable 月華繚乱ROMANCE is anyway. Gekka Ryouran is basically a reverse harem game set in a prestigious school, full of incest vibes, Hunter Biden vibes, and lots of scary moments. <br>
To entertain myself for the long stretches of time without internet access, I grabbed the first Japanese language visual novel I saw without sexual content. (I'm kind of a prude lol.) It's so risky to have a random VN as your only game for a whole month. I didn't even read the <a href="https://vndb.org/">VNDB's</a> synopsis, but I guess it wouldn't have tipped me off to how strange and uncomfortable 月華繚乱ROMANCE is anyway. Gekka Ryouran is basically a reverse harem game set in a prestigious school, full of incest vibes and obsessive stalkers. <br>
<br>
<br>
Honestly, the writing was so good, though, I enjoyed being stuck with it. The vocabulary level is higher than anything I've read so far, barring technical or political news reports. I'm getting to the point with Japanese that I don't need a dictionary for most manga, so needing a dictionary multiple times per sentence made me feel like a beginner again and eager to learn. (Though the contrast does highlight the ironically low vocabulary level of other series featuring honor students, bookworms, etc - I suppose they aren't as smart as they claim!) Also, the poetic and psychological atmosphere was engrossing, despite the constant dictionary flipping and moving-related interruptions. <br>
Honestly, the writing is pretty good, even if it was scary. The vocabulary level is higher than anything I've read so far, barring technical or political news reports. I'm getting to the point with Japanese that I don't need a dictionary for most manga, so needing a dictionary multiple times per sentence made me feel like a beginner again. The contrast does highlight the ironically low vocabulary level of other series featuring honor students, bookworms, etc, though. I suppose they aren't as smart as they claim! <br>
<br>
<br>
If you can read Japanese and don't mind obsession, thrilling moments, and constant weird vibes from almost every character, it's a quality otome. (I prefer more light-hearted VNs like Real Rode, though.) The best boy is the unromanceable Renge Kazuya. <br>
Househunting has been unexpectedly time-consuming, but I'll share the tentative design for the attack-movement loop. Hopefully now that an offer was accepted, I'll find some time to iron out the design before packing and moving begins. <br>
<br>
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: <br>
<img src="/static/img/ent/attack-movement-loop-diagram.png" alt="(image: diagram of the attack movement loop)" width="500" height="233">
</a><br></center>
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. <br>
<br>
<h2>the loop explained </h2><br>
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." <br>
<br>
The AI receives these signals. If the target was out of range, it sets up to follow attack target. <br>
<br>
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. <br>
<br>
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. <br>
<br>
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). <br>
<br>
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. <br>
<br>
Then the AI receives the "arrived_at_attack_target" signal and prompts the character to begin the attack all over again. <br>
<br>
<h2>in-game </h2><br>
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. <br>
I'll work it out sooner or later, dependent on how hectic moving turns out to be. <br>
<br>
(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 bash script without relying on copypasta code from forums this time. I was trying to follow the documentation website before, but it's unreadable. The man page is so much easier to understand and search through.) <br>
Househunting has been unexpectedly time-consuming, but I'll share the tentative design for the attack-movement loop. Hopefully now that an offer was accepted, I'll find some time to iron out the design before packing and moving begins. <br>
<br>
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: <br>
<img src="/static/img/ent/attack-movement-loop-diagram.png" alt="(image: diagram of the attack movement loop)" width="500" height="233">
</a><br></center>
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. <br>
<br>
<h2>the loop explained </h2><br>
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." <br>
<br>
The AI receives these signals. If the target was out of range, it sets up to follow attack target. <br>
<br>
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. <br>
<br>
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. <br>
<br>
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). <br>
<br>
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. <br>
<br>
Then the AI receives the "arrived_at_attack_target" signal and prompts the character to begin the attack all over again. <br>
<br>
<h2>in-game </h2><br>
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. <br>
I'll work it out sooner or later, dependent on how hectic moving turns out to be. <br>
<br>
(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 bash script without relying on copypasta code from forums this time. I was trying to follow the documentation website before, but it's unreadable. The man page is so much easier to understand and search through.) <br>
Mostly catching up to deadlines, giving extra play-time to kitty, and making new friends. Also, sewing a few more garments is a stronger priority than gamedev lately. My old pants and pajamas were too threadbare and holey, so having cute new clothes is such a good feeling. It's also just fun to sew. It's a shame I let mass-producing face masks for the hospital give me such bad burnout. <br>
<br>
I'm still designing and redesigning systems instead of adding content, but now it's to make sure all the systems work together smoothly. I really want to be able to sit down for a few hours and implement a full event, start to finish, complete with dialog and a multiphase boss fight and rewards. <br>
<br>
Anyway, I can't believe I've been titling my monthly diary entries as "2020" all year. Finally fixed that. Also...why is the whole website on such an old version? Have I not been pushing anything to live? I thought I had a word frequency cloud and a working diary page navigation pane. Weird. <br>