Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4a261ace16 |
@@ -0,0 +1,75 @@
|
||||
<div class="center"><h2>what about blessfrey?</h2>
|
||||
<img src="/static/img/prom/BlessFREY_logo.png" alt="(link: BLESSFREY" class="logo">
|
||||
|
||||
<a href="#demo">demo</a> • <a href="#controls">controls</a> • <a href="#system">system</a> • <a href="#story">story</a> • <a href="#characters">characters</a> • <a href="#info">info</a><br>
|
||||
<br>
|
||||
<p>No-legs the Cat is just a demonstration that I can export and embed games here at all. Soon, I'll have real release demos for Blessfrey! <br></p>
|
||||
<br>
|
||||
<p>Blessfrey is a 2D dungeoncrawling action rpg for PC developed by me (chimchooree) in Godot Engine inspired by Guild Wars 1 and Magic: The Gathering. I'll share any release demos on this page. <br></p>
|
||||
|
||||
<div class="system" id="system">
|
||||
<div class="center"><h2>system</h2>
|
||||
<p>Blessfrey is a 2D action rpg with a dual-job system which will determine the skill pool from which you will build your skillbar. Your AI companions will have skillbars of their own to edit, so think in terms of teams in order to defeat bosses and solve puzzles. Barely any class progression decisions are permanent, so you can experiment and express your playstyle. <br></p>
|
||||
<br>
|
||||
<h3>jobs </h2>
|
||||
<p>Blessfrey jobs are equivalent to RPG classes. Your first job is a permanent decision which you will make early in gameplay. You will be able to unlock the rest and more during gameplay as side gigs. You can only have one side gig at a time, but you can always swap it outside of combat areas. <br></p>
|
||||
<br>
|
||||
<p>Each job has its own skill pool. Each skill is assigned to a job trait (similar to an RPG attribute). Each character has a set number of trait points they can use to raise job traits and the effectiveness of their associated skills. You gain more trait points through leveling up, but traits can be raised or lowered at will. Experiment to find your specialization! <br></p>
|
||||
<br>
|
||||
<p>Your first job offers an exclusive trait called a job perk. It is not only tied to the effectiveness of related skills but also provides a constant buff. You can use the skills of your side gig's perk-related skills, but you cannot raise their effectiveness nor gain the buff. Perks are what distinguish characters from each other. <br></p>
|
||||
<br>
|
||||
<h3>skills</h2>
|
||||
<p>Skills are individual powers that modify entities in the world of Blessfrey. They can launch fireballs, protect against incoming damage, spawn items or minions, teleport characters, reveal more UI details, and more. Your skillbar only has 8 skill slots and can only be edited in safe areas. The challenge comes from discovering effective strategies and synergies. Many of the same skills will be available to the player and enemy characters alike, so you must learn how to both use and counter each skill. <br></p>
|
||||
<br>
|
||||
<p>Skills are inspired by Magic: The Gathering keywords. There are a limited number of keywords that are quick to learn, but I will combine them with interesting conditions to create a wide arsenal of options. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h3>team</h2>
|
||||
<p>You will meet new friends and allies in the world, and they will join your team as customizable AI companions. Edit their skillbars to complement yours and keep their gear up-to-date. They will remember your responses and actions, so stay attentive to the flow of your relationship. There may be consequences - sweet or treacherous. <br></p></div>
|
||||
</div>
|
||||
|
||||
<div class="story" id="story">
|
||||
<div class="center"><h2>story</h2>
|
||||
<p>You play as Helia, a foreign transfer student living with her estranged uncle in a rural southern American town. You'll find an inexplicable amount of amenities, but none of them hold a candle to the haunted dungeon beneath the city. It's off-limits, but a dare's a dare. <br></p>
|
||||
<br>
|
||||
<p>There's a whole other world down there with multiple fantastical races. Once you've been down there once, it's hard to avoid getting tangled in its mysteries. <br></p>
|
||||
<br>
|
||||
<p>The town is strange in its own right. Lucrest flourished under it's remarkably young mayor and became an economic oasis in an expanse of farmlands and mining communities, drawing people from out-of-state to enjoy its attractions. Mayor Dia claims to have a magic wand that controls economy, and people aren't inclined to disagree. <br></p></div>
|
||||
</div>
|
||||
|
||||
<div class="characters" id="characters">
|
||||
<div class="center"><h2>characters</h2>
|
||||
<p><b><a href="/char/Helia">Helia</a></b> (?/?) - The player character! Almost every job is available to her. Where she comes from, combat training is unheard of, so she's a blank slate. Her reasons for suddenly moving countries by herself at the end of a schoolyear are filled with holes, so rumors spread ahead of her arrival. Barely anyone moves to Lucrest, though, so most people are excited to meet the new girl. <br></p>
|
||||
<br>
|
||||
<p><b><a href="/char/Angel">Angel</a></b> (Weaponmaster/Hacker) - Her real name's Miriam, but it sounds too frumpy, so please call her Angel. She is a naturally gifted with heavy blades and participates in a competitive swordsman league, but she usually comes across as friendly if not a little absent-minded. Computers interest her deeply, so she always has tinkering away with some new gadget or software. <br></p>
|
||||
<br>
|
||||
<p><b><a href="/char/Tessa">Tessa</a></b> (Tamer/Streetfighter) - She actually has a foreign background, too. Her mom and late father moved with her from France when she was really little. She loves the outdoors, animals, and fashion and is always sticking her nose in everyone's business. She's all fun all the time, so she doesn't always know where the boundary is between playful teasing and outright bullying. <br></p>
|
||||
<br>
|
||||
<p><b><a href="/char/Chloe">Chloe</a></b> (Disciple/Weaponmaster) - She's an orphan girl who was taken in by the church, and she spends a lot of her time serving there. She's reticent and deeply introverted but very sweet to those who get to know her. <br></p>
|
||||
<br>
|
||||
<p><b><a href="/char/Aries">Aries</a></b> (Weaponsmaster/Tamer) - Angel's twin brother, though he's her opposite in many ways. He's more attentive, but his frankness and disregard for etiquette makes him seem boorish. He also takes things with more gravity, fully committing himself to his studies and training. He prefers light weapons, light armor, and practical survival skills. <br></p>
|
||||
<br>
|
||||
<p><b><a href="/char/Night">Night</a></b> (Chemist/Weaponsmaster) - Despite not being much older than the other teens, he's completed a few years of apprenticeships at the leading research hospitals in the capital. The deterioration and death of his grandparents forced his return to close the final paperwork and figure out how to support his baby brother in the meantime. He runs a local pharmacy for now. <br></p>
|
||||
<br>
|
||||
<p><b><a href="/char/Rune">Rune</a></b> (?/?) - A startlingly tall and listless horned boy discovered in the local dungeon, surrounded by dinosaurs and other abyssal beasts. He doesn't trust people from the surface at first. <br></p></div>
|
||||
</div>
|
||||
|
||||
<div class="info" id="info">
|
||||
<div class="center"><h2>info</h2>
|
||||
<p>Blessfrey is a singleplayer action RPG game that will be playable in at least Windows, Linux, and HTML5. I'm going to sell it on Steam and wherever else lets me list it. It's being developed by me (chimchooree) in Godot Engine with original writing and art, though I'll need help with music and SFX eventually. My husband also helps sometimes, especially with writing plug-ins for the engine.♡ The full credits are available on the <a href="/credits">credits page</a>.<br></p>
|
||||
<br>
|
||||
<h2>timeline</h2>
|
||||
<p>Legless the Cat is the first demo. It has nothing to do with the game, but it's an important exercise for exporting and embedding an HTML5 game. I'd hate to make a sophisticated game over multiple years and be too inexperienced to actually share it with anyone. It also lets my kitty be in his own videogame! So cute. <br></p>
|
||||
<br>
|
||||
<p>As for the first real demo, I am currently creating a vertical slice of the game, focusing on a robust presentation of the skill system. This demo will be more of a tech demo than a game. It will feature 3 demo areas, and you will receive a bingo card directing you to try a smattering of what the full game will have to offer. <br></p>
|
||||
<br>
|
||||
<p>The next demo will demonstrate the game's faction system and AI, presenting more as a cutscene with unpredictable outcomes. A couple of different AI groups will wander around a map, intersect, then attack or aid according to affiliation. The faction system is rather complex, so I need to isolate it for testing purposes. <br></p>
|
||||
<br>
|
||||
<p>I think at this point, I will be able to put out a real demo. Demo #3 is going to be a level from the full game, introducing Rune and his multiphase boss fight. <br></p>
|
||||
<br>
|
||||
<p>If I can do that, I'll definitely be ready to make chunks of the game until the entire thing is complete. <br></p>
|
||||
<br>
|
||||
<p>No hard timeline on this, though! I've been working for years and finally am about ready to have something to show for it. Gamedev has been a deep learning experience, and I'm looking forward to sharing my results with you. <br></p></div>
|
||||
</div>
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
<p>All acts of god are attributed to him. His steed is the MessageBus. He is technically an entity. <br></p>
|
||||
@@ -1,11 +0,0 @@
|
||||
<h2>description </h2>
|
||||
<p> <br></p>
|
||||
<br>
|
||||
<h2>challenges/known issues </h2>
|
||||
<p> <br></p>
|
||||
<br>
|
||||
<h2>works for...</h2>
|
||||
<ul>
|
||||
<li>???✓ </li>
|
||||
<li>???✗ </li>
|
||||
</ul>
|
||||
@@ -1,17 +0,0 @@
|
||||
<h2>description </h2>
|
||||
<p>pushing buttons and stuff <br></p>
|
||||
<br>
|
||||
<h2>list of default controls </h2>
|
||||
<p><ul>
|
||||
<li><b>left-click:</b> target entity</li>
|
||||
<li><b>I:</b> open inventory app</li>
|
||||
</ul></p>
|
||||
<br>
|
||||
<h2>challenges/known issues </h2>
|
||||
<p> <br></p>
|
||||
<br>
|
||||
<h2>works for...</h2>
|
||||
<ul>
|
||||
<li>???✓ </li>
|
||||
<li>rebinding controls✗ </li>
|
||||
</ul>
|
||||
@@ -1,15 +0,0 @@
|
||||
<p>documenting Blessfrey objects, variables, and methods <br></p>
|
||||
<br>
|
||||
<p>The <a href="/blessfrey-gdd">GDD</a> is more about design, while the docs is more about the data and logic. (I fix a lot of problems just trying to explain what I wrote.) <br></p>
|
||||
<br>
|
||||
<h2>entity</h2>
|
||||
<p><ul>
|
||||
<li><a href="/blessfrey-gdd/docs/tangible-body">tangible-body</a> </li>
|
||||
</ul> <br></p>
|
||||
<br>
|
||||
<h2>UI</h2>
|
||||
<p><ul>
|
||||
<li><a href="/blessfrey-gdd/docs/highlight">highlight</a> </li>
|
||||
<li><a href="/blessfrey-gdd/docs/inspect-menu">inspect menu</a> </li>
|
||||
<li><a href="/blessfrey-gdd/docs/ui">ui</a> </li>
|
||||
</ul> <br></p>
|
||||
@@ -1,31 +0,0 @@
|
||||
<p>The inspect menu is a PopupMenu that gives options for interaction with its subject. It rests at res://UI/InspectMenu/InspectMenu.tscn. <br></p>
|
||||
<br>
|
||||
<h3>flow </h3>
|
||||
<p>The inspect method is the entry point. Inspect > set_subject > _about_to_show > make_label<br></p>
|
||||
<br>
|
||||
<h3>signals </h3>
|
||||
<p><ul>
|
||||
<li>• <b>id_pressed</b>: connects the InspectMenu's signal to the subject's id_pressed method. Used to execute the associated method via pressing an inspect option. </li>
|
||||
<li>• <b>about_to_show</b>: connects the InspectMenu's signal to its own '_about_to_show' method. </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h3>variables </h3>
|
||||
<p><ul>
|
||||
<li>• <b>subject</b>: the <a href="/blessfrey-gdd/docs/tangible">tangible entity</a> being inspected. Inspect options will be enacted on it. </li>
|
||||
<li>• <b>is_connected</b>: ensures 'about_to_show' is properly connected. </li>
|
||||
<li>• <b>label</b>: Label. Holds the subject's display name. </li>
|
||||
</ul><br></p>
|
||||
<br>
|
||||
<h3>methods </h3>
|
||||
<p>void set_subject (Object new_subject) <br></p>
|
||||
<p>tear down old subject + set up new subject <br></p>
|
||||
<br>
|
||||
<p>void inspect (Object new_subject) <br></p>
|
||||
<p>set up inspect menu <br></p>
|
||||
<br>
|
||||
<p>Object make_label () <br></p>
|
||||
<p>returns a label with the name set. (Subject requires write_name()) <br></p>
|
||||
<br>
|
||||
<p>void _about_to_show () <br></p>
|
||||
<p>resets the inspect menu, adds a label, and adds inspect options from the subject. <br></p>
|
||||
<br>
|
||||
@@ -1,43 +0,0 @@
|
||||
<p>A player is a Node that inherits from <a href="/blessfrey-gdd/docs/character">characters</a>. It is characterized by its possession of the UI, its use of the UserControl AI package, and exclusive abilities. It rests at res://character/Player/Player.gd. <br></p>
|
||||
<br>
|
||||
<h3>flow </h3>
|
||||
<p>At ready, it gives itself to the UI singleton, so UI.get_player() is available to every node. Maybe dumb, but it works for now. It also sets up all AI packages and the UI, then has the UI display the correct stats. <br></p>
|
||||
<br>Item Pickup: consider_pickup > (wait for user to press an inspect option) > id_pressed >
|
||||
<br>
|
||||
<h3>groups </h3>
|
||||
<p><ul>
|
||||
<li>• <b>can_highlight</b>: can target or hover mouse over entity for some information </li>
|
||||
<li>• <b>can_interact</b>: can become the subject of an inspection menu. </li>
|
||||
<li>• <b>can_skill_target</b>: can become the target of spells. </li>
|
||||
<li>• <b>can_target</b>: can be targetted. </li>
|
||||
</ul></p><br>
|
||||
<br>
|
||||
<h3>signals </h3>
|
||||
<p><ul>
|
||||
<li>• <b>-</b>: - </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h3>variables </h3>
|
||||
<p><ul>
|
||||
<li>• <b>inspect_options</b>: Dictionary. the options available on this entity's <a href="/blessfrey-gdd/docs/inspect-menu">inspect menu</a>. </li>
|
||||
<li>• <b>applied_keywords</b>: Array[Objects]. all keywords currently active on this entity. </li>
|
||||
</ul><br></p>
|
||||
<br>
|
||||
<h3>methods </h3>
|
||||
<p>void _ready () <br></p>
|
||||
<p>adds groups and default examine options. <br></p>
|
||||
<br>
|
||||
<p>void examine () <br></p>
|
||||
<p>placeholder; prints display name. <br></p>
|
||||
<br>
|
||||
<p>void highlight () <br></p>
|
||||
<p>calls entry point on this entity's <a href="/blessfrey-gdd/docs/highlight">highlight node</a>. <br></p>
|
||||
<br>
|
||||
<p>void id_pressed (new_id) <br></p>
|
||||
<p>calls associated method from inspect_options. <br></p>
|
||||
<br>
|
||||
<p>void inspect () <br></p>
|
||||
<p>triggers <a href="/blessfrey-gdd/docs/ui">UI</a>'s inspect method. <br></p>
|
||||
<p>void unhighlight () <br></p>
|
||||
<p>triggers <a href="/blessfrey-gdd/docs/tangible-body">tangible entity's body</a>'s unhighlight method. <br></p>
|
||||
<br>
|
||||
@@ -1,43 +0,0 @@
|
||||
<p>A tangible entity is a Node that inherits from <a href="/blessfrey-gdd/docs/mobile">mobile entities</a>. It extends to characters and floor items. It is characterized by its physical presence in the world and possibility for interaction. It rests at res://addons/character_system/tangible.gd. <br></p>
|
||||
<br>
|
||||
<h3>flow </h3>
|
||||
<p>Groups and default <a href="/blessfrey-gdd/docs/inspect-menu">inspect options</a> are added at ready. <br></p>
|
||||
<br>Inspect: Inspect is the entry point. Inspect > (wait for user to press an inspect option) > id_pressed >
|
||||
<br>
|
||||
<h3>groups </h3>
|
||||
<p><ul>
|
||||
<li>• <b>can_highlight</b>: can target or hover mouse over entity for some information </li>
|
||||
<li>• <b>can_interact</b>: can become the subject of an inspection menu. </li>
|
||||
<li>• <b>can_skill_target</b>: can become the target of spells. </li>
|
||||
<li>• <b>can_target</b>: can be targetted. </li>
|
||||
</ul></p><br>
|
||||
<br>
|
||||
<h3>signals </h3>
|
||||
<p><ul>
|
||||
<li>• <b>-</b>: - </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h3>variables </h3>
|
||||
<p><ul>
|
||||
<li>• <b>inspect_options</b>: Dictionary. the options available on this entity's <a href="/blessfrey-gdd/docs/inspect-menu">inspect menu</a>. </li>
|
||||
<li>• <b>applied_keywords</b>: Array[Objects]. all keywords currently active on this entity. </li>
|
||||
</ul><br></p>
|
||||
<br>
|
||||
<h3>methods </h3>
|
||||
<p>void _ready () <br></p>
|
||||
<p>adds groups and default examine options. <br></p>
|
||||
<br>
|
||||
<p>void examine () <br></p>
|
||||
<p>placeholder; prints display name. <br></p>
|
||||
<br>
|
||||
<p>void highlight () <br></p>
|
||||
<p>calls entry point on this entity's <a href="/blessfrey-gdd/docs/highlight">highlight node</a>. <br></p>
|
||||
<br>
|
||||
<p>void id_pressed (new_id) <br></p>
|
||||
<p>calls associated method from inspect_options. <br></p>
|
||||
<br>
|
||||
<p>void inspect () <br></p>
|
||||
<p>triggers <a href="/blessfrey-gdd/docs/ui">UI</a>'s inspect method. <br></p>
|
||||
<p>void unhighlight () <br></p>
|
||||
<p>triggers <a href="/blessfrey-gdd/docs/tangible-body">tangible entity's body</a>'s unhighlight method. <br></p>
|
||||
<br>
|
||||
@@ -1,35 +0,0 @@
|
||||
<h2>description </h2>
|
||||
<p>Floor items are the representation of an item that spawns in the environment, drops from opponents, and can be picked up. They are technically tangible entities. <br></p>
|
||||
<br>
|
||||
<h2>structure </h2>
|
||||
<p><ul>
|
||||
<li>Node2D - $ThreeLeafClover (floor_item.gd, inherits from tangible.gd)</li>
|
||||
<ul><li>Node2D - $Body (tangibleBody.gd, inherits from mobileBody.gd)</li>
|
||||
<ul><li>Area2D - $Sprite (Items/Components/Sprite.gd)</li>
|
||||
<ul><li>Sprite - $Sprite</li>
|
||||
<ul><li>PanelContainer - $Highlight (the <a href="/blessfrey-gdd/highlight">highlight scene</a></li></ul>
|
||||
<li>CollisionPolygon2D - $CollisionPolygon2D</li></ul>
|
||||
</ul>
|
||||
</ul>
|
||||
</ul></p>
|
||||
<br>
|
||||
<h2>variables</h2>
|
||||
<p><ul>
|
||||
<li>ITEM_SCENE_NAME, a constant reference to the <a href="/blessfrey-gdd/base-item">base item</a>'s path within the folder </li>
|
||||
<li>item_scene, the base item's scene, loaded from ITEM_SCENE_NAME </li>
|
||||
<li>item, the <a href="/blessfrey-gdd/base-item">base item</a>. It's instanced from item_scene and added as a child of the floor item.
|
||||
<li>display_name, the name seen in the <a href="/blessfrey-gdd/highlight">highlight</a> label, <a href="/blessfrey-gdd/inventory">inventory</a> listings, etc. </li>
|
||||
<br>
|
||||
<h2>logic </h2>
|
||||
<p> <br></p>
|
||||
<br>
|
||||
<br>
|
||||
<h2>challenges/known issues </h2>
|
||||
<p> <br></p>
|
||||
<br>
|
||||
<h2>works for...</h2>
|
||||
<ul>
|
||||
<li>???✓ </li>
|
||||
<li>???✗ </li>
|
||||
</ul>
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
<h2>description </h2>
|
||||
<p>The programmatic element facilitates picking up, collecting, and dropping items. The control element displays and offers relevant options. <br></p>
|
||||
<br>
|
||||
<h2>pickup: floor item -> inventory item </h2>
|
||||
<p>Item pickup is initiated by MoveToDestination.gd/_on_item_arrived(floor_item) -> floor_item.pick_up().pick_up(). The base item's pick_up initiates character/pickup(base_item) and publishes "item_picked_up" and itself to the <a href="/blessfrey-gdd/achievements">MessageBus</a>. <br></p>
|
||||
<br>
|
||||
<p>character.gd/pickup(base_item) calls (programmatic)Inventory.gd/pickup and _pickup(base_item) which updates the phone inv app if it's currently open. <br></p>
|
||||
<br>
|
||||
<p>Inventory.gd/pickup(base_item) published "item_obtained" and the base item to the <a href="/blessfrey-gdd/achievements">MessageBus</a> then calls reverse_pickpocket(base_item). <br></p>
|
||||
<br>
|
||||
<p>Inventory.gd/reverse_pickpocket(base_item) appends the base item to the inventory and connects the depleted and dropped signals. <br></p>
|
||||
<br>
|
||||
<h2>opening the inventory app </h2>
|
||||
<p>If you press the <a href="/blessfrey-gdd/controls">inventory key (I)</a>, UI/open_window(UI.open_inv_scene(),"inventory", Vector2(100,150)) is called. It opens a window at the Vector2, assigns "inventory" as its key, and fills it with the given scene. The UI will call open_app and provide the inventory app scene. <br></p>
|
||||
<br>
|
||||
<p>If you bring up the smartphone and tap the inventory app from the home screen, the inventory button is connected to 'open_app" on "pressed", sending the associated app. <br></p>
|
||||
<br>
|
||||
<p>Smartphone.gd/open_app(scene) sets is_open to true, the current_app to the scene,
|
||||
<br>
|
||||
<h2>challenges/known issues </h2>
|
||||
<p> <br></p>
|
||||
<br>
|
||||
<h2>works for...</h2>
|
||||
<ul>
|
||||
<li>???✓ </li>
|
||||
<li>???✗ </li>
|
||||
</ul>
|
||||
@@ -1,54 +0,0 @@
|
||||
<h2>description </h2>
|
||||
<p>Items are objects that may be picked up, purchased, used, equipped, dropped, or sold. They include currency, quest items, equipment, consumables, readables, upgrades, keys, and trinkets. <br></p>
|
||||
<br>
|
||||
<h2>four representations </h2>
|
||||
<p>An item changes its form depending on its context. <br></p>
|
||||
<br>
|
||||
<p><a href="/blessfrey-gdd/base-item">Base items</a> are the purest form of an item, maintaining its continuity and containing its essential data. Other items hold the base item as a child or generates one if one doesn't already exist. <br></p>
|
||||
<br>
|
||||
<p><a href="/blessfrey-gdd/floor-item">Floor items</a> are the representation of an item that spawns in the environment, drops from opponents, and can be picked up. They are technically tangible entities. <br></p>
|
||||
<br>
|
||||
<p>Inventory items appear in the inventory window. They are technically control nodes. <br></p>
|
||||
<br>
|
||||
<p>Merchandise appears in store windows. <br></p>
|
||||
<br>
|
||||
<h2>move to pick up item </h2>
|
||||
<p>Items can only be picked up by the player. They can be picked up via item targeting or through selecting 'pick up' on the <a href="/blessfrey-gdd/inspect">inspect menu</a>. <br></p>
|
||||
<br>
|
||||
<p>Item pickup is triggered when a <a href="/blessfrey-gdd/floor-item">floor item</a> is targeted, that is, a <a href="/blessfrey-gdd/controls">'target' (left-click)</a> triggers a $Item/Body/Sprite/Sprite.gd/_on_input_event. If 'no_move_to_target' (shift) is held while targeting, the <a href="/blessfrey-gdd/floor-item">floor item</a> will be targeted without initiating pickup. Otherwise, floor_item.gd/target_event(viewport,event,shape_idx) is called to set the target and handle the input before prompting the player to consider pickup. <br></p>
|
||||
<br>
|
||||
<p>Item pickup is also an option on the <a href="/blessfrey-gdd/floor-item">floor items</a>' <a href="/blessfrey-gdd/inspect">inspect menu</a>. Choosing it triggers that <a href="/blessfrey-gdd/floor-item">floor item</a>'s id_pressed(id), which calls the associated method from its inspect_options dictionary: floor_item.gd/move_player_then_pickup(), prompting the player to consider pickup. <br></p>
|
||||
<br>
|
||||
<p>Character.gd/consider_pickup(item) passes to UserControl/pickup(item). The next branch depends on a distance check. <br></p>
|
||||
<br>
|
||||
<p>If the <a href="/blessfrey-gdd/floor-item">floor item</a> is within the player's <a href="/blessfrey-gdd/proxemics">intimate distance</a>, the character will be prompted to pick up the <a href="/blessfrey-gdd/floor-item">floor item</a>. <br></p>
|
||||
<br>
|
||||
<p>Otherwise, <a href="/blessfrey-gdd/pathfinding">pathfinding</a> begins towards the <a href="/blessfrey-gdd/floor-item">floor item</a>. Upon arrival, it calls floor_item.pick_up().pick_up(). The <a href="/blessfrey-gdd/floor-item">floor item</a>'s pick_up removes itself from the room and returns the base item, then the <a href="/blessfrey-gdd/inventory">inventory system</a> takes care of the rest. <br></p>
|
||||
<br>
|
||||
<h2>drop item </h2>
|
||||
<p>Items can be dropped from the <a href="/blessfrey-gdd/inventory">inventory</a> app when the player selects 'drop' on the <a href="/blessfrey-gdd/inspect">inspect menu</a>. <br></p>
|
||||
<br>
|
||||
<p>Choosing 'drop' triggers that <a href="/blessfrey-gdd/inventory-item">inventory item</a>'s id_pressed(id), which calls the associated method from its inspect_options dictionary: inventory_item.gd/drop. It, in turn, calls the drop method off its <a href="/blessfrey-gdd/base-item">base item</a>.<br></p>
|
||||
<br>
|
||||
<p>The <a href="/blessfrey-gdd/base-item">base item</a>'s drop() emits the 'dropped' signal, which triggers the inventory item to queue_free then the inventory app to be refreshed. (connected @ InvContainer.gd/make_inventory_items(base_item).
|
||||
<br>
|
||||
<h2>challenges/known issues </h2>
|
||||
<p>pick up in range puts a floor item in the programmatic inventory. out of range puts a proper base item. STOP at line 309 on character.gd. <br></p>
|
||||
<br>
|
||||
<h2>works for...</h2>
|
||||
<ul>
|
||||
<li>add to wallet✗ </li>
|
||||
<li>bestow constant keyword effect✗ </li>
|
||||
<li>buy, sell✗ </li>
|
||||
<li>container, randomized loot, take out, put in, persist in container✗ </li>
|
||||
<li>drop from inv✗ </li>
|
||||
<li>drop from death drop table✗ </li>
|
||||
<li>equip✗ </li>
|
||||
<li>inspect inventory item, <a href="/blessfrey-gdd/floor-item">floor item</a>✗ </li>
|
||||
<li>pickup in range, out of range, target, inspect✓ </li>
|
||||
<li>progress quest, open door✗ </li>
|
||||
<li>read✗ </li>
|
||||
<li>spawn from spawner✗ </li>
|
||||
<li>use✗ </li>
|
||||
</ul>
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
<p>There are six standard jobs available to the player, but more can be discovered in the Abyss. <br></p>
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
<p>Keywords are the building blocks of skills. <br></p>
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
<p>documenting Blessfrey game mechanics<br></p>
|
||||
<br>
|
||||
<p>Game mechanics are the rules of the world. <br></p>
|
||||
<br>
|
||||
<h2>character creation</h2>
|
||||
<p>Players control Helia and develop her character through making decisions. During her first day of school in Lucrest, you will fill out a personal questionnaire and try out the common jobs before choosing one permanently. She will also receive her starter skills and her choice of starter gear and weapon. <br>
|
||||
<br>
|
||||
<h2>job, side job + skills</h2>
|
||||
<p>Her job determines the perk, attributes, and skills available for her. Skills will scale in power according to the amount of attributes assigned to the relevant attribute. She can also take a side job, which will offer more attributes and skills for defining your playstyle. Side jobs are optional and can be changed outside of combat, but they do not offer perks, nor can their perk-related skills be improved. <br></p>
|
||||
<br>
|
||||
<p>All acquired skills will be stored in the character's skill library, but only 8 can be equipped onto the skillbar at a time. You must choose carefully and adapt challenge-by-challenge. <br></p>
|
||||
<br>
|
||||
<p>To gain more skills and side job offers, you explore the world, gain combat experience, meet characters, and more. She'll encounter <a href="/char/WISE">a certain system</a> that will guide her to greater development early in the dungeon. <br></p>
|
||||
<br>
|
||||
<p>You'll not only develop Helia but a team of friends you meet in town and below, all with jobs, side jobs, and skills for building a viable team. <br></p>
|
||||
<br>
|
||||
<h2>playstyle</h2>
|
||||
<p>Blessfrey emphasizes frequent and free adaptation of playstyle. Except for your job, decisions are not permanent. You can change your side job, reallocate attribute points freely, and swap out skills outside of combat. You can do the same for your teammates' builds, and call them in and out of your team freely outside of combat. <br></p>
|
||||
<br>
|
||||
<p>Enemies and allies have access to many of the same jobs and skills, so while you learn the offensive advantage of your skills, you will also have to learn to defend against them. You can learn new skills through combat experience, copying techniques. <br></p>
|
||||
<br>
|
||||
<p>Death is not a final failure. Characters can resurrect each other. If the entire team dies, they will be revived at the nearest bed of resurrection lillies, able to retry. <br></p>
|
||||
@@ -1,28 +0,0 @@
|
||||
<p>Pathfinding programmatically moves an entity towards a point. <br></p>
|
||||
<br>
|
||||
<h2>move to pick up an item </h2>
|
||||
<p>If an entity decides to pick up a floor item, UserControl.gd/pickup(floor_item) checks the range. If too far away, it will trigger MoveToDestination.gd/pickup_setup(floor_item). <br></p>
|
||||
<br>
|
||||
<p>Signals are disconnected, track is made true, 'item_arrived' signal is connected to UserControl/Move, and the goal target is set. <br></p>
|
||||
<br>
|
||||
<p>MoveToDestination.gd's Execute method constantly loops between path_to_point() and choose_velocity(). <br></p>
|
||||
<br>
|
||||
<p>path_to_point calls cancel on the player and path_to_object(goal_target). Mobile.gd/path_to_object(goal_target) sets the floor item as the next then reassesses the path with each call. If there is no current_dot, dots are set between the user and the goal_target and the method ends. Otherwise, the last_dot is either the last dot or the current_dot. If the goal hasn't moved, the method ends. If the goal is further, the path is wholly or partially recalculated. If the goal is nearer, the path is recalculated between the last_dot and the goal. <br></p>
|
||||
<br>
|
||||
<p>choose_velocity() sets the entity's body's internal velocity to current_dot - current_pos. mobileBody.gd/_process(delta) sets its physics_body_node's move_and_collide to velocity (judged from internal velocity) * speed * delta * <a href="/blessfrey-gdd/achievements">KnowledgeBase</a>.logic_time, publishing "moved" and the entity to the <a href="/blessfrey-gdd/achievements">MessageBus</a>. <br></p>
|
||||
<br>
|
||||
<p>The <a href="/blessfrey-gdd/achievements">MessageBus</a>'s Moved.gd handler will judge progress and emit a signal. Since "reached", "arrived", etc are connected during MoveToDestination's Enter phase, handle_moved_result handles the package. If it is "arrived" and track is true, 'item_arrived' signal is emitted, the first waypoint is popped off, and the entity calls clear_movement. <br></p>
|
||||
<br>
|
||||
<p>MoveToDestination.gd/_on_item_arrived(floor_item) calls arrived to disconnect signals, set track to false, and clear the entity's movement. Then it calls item.pick_up().pick_up(). <br></p>
|
||||
<br>
|
||||
<h2>challenges/known issues </h2>
|
||||
<p>Navigation2D and get_simple_path will be removed in a future version of Godot. <br></p>
|
||||
<br>
|
||||
<h2>works for...</h2>
|
||||
<ul>
|
||||
<li>move to item then pick up✓ </li>
|
||||
<li>move to target then attack✗ </li>
|
||||
<li>move to target but don't attack✗ </li>
|
||||
<li>move to target then interact✗ </li>
|
||||
</ul>
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
<p>Generally, proxemics refers to the study of the relationship between social beings and physical distance.
|
||||
Since spatial distance in Blessfrey (and all games) varies wildly due to distortion of physical proportions and angles, I am addressing the mechanical distance, i.e. the reach of a weapon, the distance from which an item can be picked up, and earshot. Relative distances are modeled after <a href="https://en.wikipedia.org/wiki/Proxemics">Edward T. Hall's interpersonal distances of man</a>: public, social, personal, and intimate distance. <br></p>
|
||||
<br>
|
||||
<p>I like the implication of a generalized "personal bubble" instead of the solely combat-oriented "aggro bubble" of other RPGs. It's so unfortunate that the pandemic was everyone's introduction to proxemics. I don't really wanna change it, but I kinda cringe when I hear "social distance" now. Whatever, I guess. <br></p>
|
||||
<img src="/static/img/gdd/personalbubble.svg" alt="(chart: concentric rings. From outer to inner, public space is 25-12', social space is 12-4', personal space is 4-1.5', and intimate space is 1.5' or less.)">
|
||||
<p>(image by WebHamster for Wikipedia) <br></p>
|
||||
<br>
|
||||
<p>Distances are declared in the mobile entity's mobile.gd. I...don't know what Godot units are supposed to be. I think they are pixels? Let's call them degrees(❥). I estimate 1❥ to equal ~2.5 social inches. <br></p>
|
||||
<br>
|
||||
<h2>extrapersonal distance </h2>
|
||||
<p><ul>
|
||||
<li>range: ???-∞❥ </li>
|
||||
<li>relevancy: conceptual interentitic outerspace </li>
|
||||
</ul></p>
|
||||
<h2>public distance </h2>
|
||||
<p><ul>
|
||||
<li>range: 90-???❥ </li>
|
||||
<li>relevancy: </li>
|
||||
</ul></p>
|
||||
<h2>social distance </h2>
|
||||
<p><ul>
|
||||
<li>60-90❥. </li>
|
||||
<li> </li>
|
||||
</ul></p>
|
||||
<h2>personal distance </h2>
|
||||
<p><ul>
|
||||
<li>45-60❥. </li>
|
||||
<li> </li>
|
||||
</ul></p>
|
||||
<h2>intimate distance </h2>
|
||||
<p><ul>
|
||||
<li>range: 0-45❥ </li>
|
||||
<li>relevancy: item pickup, melee attacks </li>
|
||||
</ul></p>
|
||||
<br>
|
||||
@@ -1,22 +0,0 @@
|
||||
<p><ul>
|
||||
<li><b><a href="/blessfrey-gdd/item">base item</a></b>: the core of data of an individual item. Floor items and inventory items contain a base item. </li>
|
||||
<li><b><a href="/blessfrey-gdd/pathfinding">current_dot</a></b>: (variable, StateMachine.gd) the immediate point the entity is pathfinding to in order to ultimately reach the goal_target. </li>
|
||||
<li><b><a href="/blessfrey-gdd/proxemics">degrees(❥)</a></b>: (concept) the unit of social distance </li>
|
||||
<li><b><a href="/blessfrey-gdd/pathfinding">dot</a></b>: (variable, StateMachine.gd) a set of coordinates for a global position. </li>
|
||||
<li><b><a href="/blessfrey-gdd/pathfinding">dots</a></b>: (variable, StateMachine.gd) the discreet path between points, esp. the entity and the goal target. </li>
|
||||
<li><b><a href="/blessfrey-gdd/item">floor item</a></b>: </li>
|
||||
<li><b><a href="/blessfrey-gdd/pathfinding">goal target</a></b>: (variable, MoveToDestination.gd) It is set when the entity decides to pathfind and nulled during clear_goal(). mobile.gd/path_to_object(goal_target) is called from MoveToDestination every Execute loop to reassess the path between entity and goal. </li>
|
||||
<li><b><a href="/blessfrey-gdd/inspect">inspect menu</a></b>: (UI) presents options for interacting with the subject </li>
|
||||
<li><b><a href="/blessfrey-gdd/proxemics">intimate distance</a></b>: 45❥, declared at mobile.gd/intimate_space </li>
|
||||
<li><b><a href="/blessfrey-gdd/item">inventory item</a></b>: </li>
|
||||
<li><b><a href="/blessfrey-gdd/item">item</a></b>: varies in form depending on its context - base item, floor item, inventory item, merchandise </li>
|
||||
<li><b><a href="/blessfrey-gdd/item">merchandise</a></b>: </li>
|
||||
<li><b><a href="/blessfrey-gdd/pathfinding">next</a></b>: (variable, StateMachine.gd) same as the goal_target. The current waypoint for the entity. </li>
|
||||
<li><b><a href="/blessfrey-gdd/pathfinding">next_dot</a></b>: (variable, StateMachine.gd) the first item in the dots array that is not at the entity's global_position. </li>
|
||||
<li><b><a href="/blessfrey-gdd/proxemics">personal distance</a></b>: 60❥, declared at mobile.gd/personal_space </li>
|
||||
<li><b><a href="/blessfrey-gdd/proxemics">proxemics</a></b>: (concept) interentitic, mechanical distances </li>
|
||||
<li><b><a href="/blessfrey-gdd/proxemics">social distance</a></b>: 90❥, declared at mobile.gd/social_space </li>
|
||||
<li><b><a href="/blessfrey-gdd/inspect">subject</a></b>: inspect menu has a subject; inspect options will affect it </li>
|
||||
<li><b><a href="/blessfrey-gdd/pathfinding">track</a></b>: (variable, MoveToDestination.gd) If the AI is pathfinding to a point or object, track is true. Upon arrived(), it is false. It is checked in handle_moved_result(result, entity).</li>
|
||||
<li><b><a href="/blessfrey-gdd/pathfinding">waypoints</a></b>: (variable, StateMachine.gd) the list of selected points the entity will be traveling to. Usually a patrol route. </li>
|
||||
</ul></p>
|
||||
@@ -0,0 +1,35 @@
|
||||
Alan
|
||||
Boone
|
||||
Brent
|
||||
Calder
|
||||
Cody
|
||||
Colton
|
||||
Dane
|
||||
Denver
|
||||
Doran
|
||||
Ephron
|
||||
Ethan
|
||||
Gavin
|
||||
Heron
|
||||
Ivor
|
||||
Jacob
|
||||
James
|
||||
John, John David
|
||||
Josiah
|
||||
Julian
|
||||
Kelly
|
||||
Landon
|
||||
Lewis
|
||||
Lorcan
|
||||
Luke
|
||||
Matthew
|
||||
Milo
|
||||
Mitchell
|
||||
Noah
|
||||
Solomon
|
||||
Timothy
|
||||
Travis
|
||||
Walker
|
||||
Warren
|
||||
Wayne
|
||||
Will
|
||||
@@ -0,0 +1,13 @@
|
||||
<ul>
|
||||
<li>role: husband, father, emperor of evil </li>
|
||||
<li>age: late 30s </li>
|
||||
<li>birthday: </li>
|
||||
<li>mental: brilliant mind, loves puzzles, genuine and enthusiastic </li>
|
||||
<li>physical: average height and build, unusual bent features, no eyebrows </li>
|
||||
<li>style: </li>
|
||||
<li>height: 6'5 </li>
|
||||
<li>residence: with his <a href="char/Fifi>wife</a>, baby, and assorted roommates in Tardide </li>
|
||||
<li>likes: mastery of black magic, elaborate plots, chess </li>
|
||||
<li>dislikes: fake magicians, zombies, moralizing </li>
|
||||
<li>notes: needs glasses but rarely wears them; 6+' is average height for a sim </li>
|
||||
</ul>
|
||||
@@ -0,0 +1 @@
|
||||
<p>He has unique features to say the least, with a squared forehead, bald eyebrows, sloping orbital bones, and pronounced nostrils. He usually wears his black hair shaved but sometimes grows it out long on the top. Dramatic changes and costumes are part of his lifestyle at this point, so his family doesn't even comment anymore. <br></p>
|
||||
@@ -0,0 +1 @@
|
||||
Aloin Encausse | means <i>magical friend</i> | witch♂ <br>
|
||||
@@ -0,0 +1 @@
|
||||
<p>He's an evil genius, with a startling IQ and repertoire of spells, which he has mastered through decades of playing with magic. Evil is a deep part of who he is, and it marks every part of his life, from taking evil showers in the morning to taking evil slumber at night. He was meant to be a Saturday morning cartoon villain, but his wife <a href="char/Fifi">Fifi</a> 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. <br></p>
|
||||
@@ -1 +1 @@
|
||||
<p>Her quiet femininity contrasts with her titanic arms and powerful thighs. (I maxxed out the arm muscularity and arm thickness sliders.) Perplexingly, despite all her muscle mass, 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. <br></p>
|
||||
<p>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. <br></p>
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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 comical blunt-force solutions for her jobs. <br></p>
|
||||
<p>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. <br></p>
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
<ul>
|
||||
<li>role: college student, spirit-eater </li>
|
||||
<li>age: late teens </li>
|
||||
<li>birthday: </li>
|
||||
<li>mental: troubled, </li>
|
||||
<li>physical: average build, medium skin, dark wiry hair, almost black eyes </li>
|
||||
<li>style: pastels, ruffles, skirts </li>
|
||||
<li>height: 5'5 </li>
|
||||
<li>residence: college dorm </li>
|
||||
<li>likes: loud music, cooking at home, painting </li>
|
||||
<li>dislikes: nightmares, having trouble making friends, being alone </li>
|
||||
<li>notes: second-generation American with Mexican heritage, unpierced ears </li>
|
||||
</ul>
|
||||
@@ -0,0 +1 @@
|
||||
<p>A girl with a mane of wiry black hair, warm skin, always dressed in flowing rainbows of ruffles. <br></p>
|
||||
@@ -0,0 +1 @@
|
||||
Casilda "Cass" | means <i>virgin</i> | Cursed♀ | theme <br>
|
||||
@@ -0,0 +1,7 @@
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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... <br></p>
|
||||
<br>
|
||||
<p>And finally, one night, soon after moving into her first apartment, she met Caleb in the waking world. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
@@ -0,0 +1,12 @@
|
||||
<ul>
|
||||
<li>role: prophetess </li>
|
||||
<li>age: teens </li>
|
||||
<li>birthday: </li>
|
||||
<li>mental: honest, trusting, deeply knowledgeable </li>
|
||||
<li>physical: cute blonde Jewish girl with short hair and hererochromia (one blue eye, one orange eye) </li>
|
||||
<li>style: flowing outfits in white, oatmeal, and brown adorned in DIY embroidery and appliqués </li>
|
||||
<li>height: 5'4 </li>
|
||||
<li>residence: <a href="/char/Van">Van</a>'s spaceship </li>
|
||||
<li>likes: going on adventures, her space family </li>
|
||||
<li>dislikes: waiting for the fullness of time, uncircumcised ears </li>
|
||||
</ul>
|
||||
@@ -0,0 +1 @@
|
||||
<p>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. <br></p>
|
||||
@@ -0,0 +1 @@
|
||||
Chandra | means <i>shining</i> (after the Chandra X-Ray Observatory) | prophetess♀ <br>
|
||||
@@ -0,0 +1,3 @@
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>Early on, her party is attacked by bandits. The Canaanite <a href="/char/Colt">Colt</a> 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 <a href="/char/Colt">Colt</a> won't take her back because he had become a spiritual Israelite through faith after seeing the many miracles of the journey. <br></p>
|
||||
@@ -0,0 +1,13 @@
|
||||
<ul>
|
||||
<li><b>role:</b> mercenary </li>
|
||||
<li><b>age:</b> teens </li>
|
||||
<li><b>birthday:</b> August 1♌︎ </li>
|
||||
<li><b>mental:</b> fast on his feet, honorable </li>
|
||||
<li><b>physical:</b> tall, well-built, tan skin, long dishwater blond hair tied back, brown eyes </li>
|
||||
<li><b>style:</b> tunics, leather armor, slim fits, neutral colors </li>
|
||||
<li><b>height:</b> 5'10 </li>
|
||||
<li><b>residence:</b> Van's spaceship </li>
|
||||
<li><b>likes:</b> impossible odds, combat, Chandra </li>
|
||||
<li><b>dislikes:</b> the rarity of his species, Christianity, strong colors or smells </li>
|
||||
<li><b>notes:</b> poisonous quills are mixed with his hair </li>
|
||||
</ul>
|
||||
@@ -0,0 +1,3 @@
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>He was a character I first met in a dream. <br></p>
|
||||
@@ -0,0 +1 @@
|
||||
Colt "Traveler" | means <i>young horse</i> | alien♂ <br>
|
||||
@@ -0,0 +1,3 @@
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>He's skilled with swords. <br></p>
|
||||
@@ -0,0 +1,12 @@
|
||||
<ul>
|
||||
<li>role: prophetess </li>
|
||||
<li>age: preteen </li>
|
||||
<li>birthday: February 12♒︎ </li>
|
||||
<li>mental: reserved, insightful </li>
|
||||
<li>physical: dark, thick hair, warm brown eyes </li>
|
||||
<li>style: girly clothes, pink </li>
|
||||
<li>height: 4' </li>
|
||||
<li>residence: wanders </li>
|
||||
<li>likes: nature, making friends </li>
|
||||
<li>dislikes: the Enemy </li>
|
||||
</ul>
|
||||
@@ -0,0 +1 @@
|
||||
<p>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. <br></p>
|
||||
@@ -0,0 +1 @@
|
||||
Coye | means <i>quiet</i> | pink geonlian♀ | theme: <a href="https://www.youtube.com/watch?v=A1gVwUDz0Ts">Drakengard 2 - Growing Wings</a><br>
|
||||
@@ -0,0 +1 @@
|
||||
<p>Her mission is to warn the leaders of the island of eminent captivity if they do not correct their path. <br></p>
|
||||
@@ -0,0 +1,9 @@
|
||||
<p>I wrote Dymn as an edgy 13-year-old. It basically takes place in Morytania because RuneScape dominated too much of my imagination then. <br></p>
|
||||
<br>
|
||||
<p>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.) <br></p>
|
||||
<br>
|
||||
<p>Brandyn Harlowe, like <a href="/char/Newcomer">Will</a>, 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. <br></p>
|
||||
<br>
|
||||
<p><a href="/char/Window">Window Harpen</a> 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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
@@ -0,0 +1,22 @@
|
||||
Eden | means <i>place of pleasure</i> | human♂ <br>
|
||||
<br>
|
||||
<h2>basics </h2>
|
||||
<ul>
|
||||
<li><b>role:</b> gatekeeper </li>
|
||||
<li><b>age:</b> teens </li>
|
||||
<li><b>birthday:</b> April 22♉︎ </li>
|
||||
<li><b>mental:</b> dubious, passive </li>
|
||||
<li><b>physical:</b> slim, effeminate, pale skin, long hair half purple and half brown, brown eyes </li>
|
||||
<li><b>style:</b> </li>
|
||||
<li><b>height:</b> 5'8 </li>
|
||||
<li><b>residence:</b> renting </li>
|
||||
<li><b>likes:</b> not working at work, playing board games, playing a variety of music instruments </li>
|
||||
<li><b>dislikes:</b> transitioning into adulthood, not feeling that strongly about anything </li>
|
||||
<li><b>notes:</b> </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h2>story </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>description </h2>
|
||||
<p>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. <br></p>
|
||||
@@ -0,0 +1,25 @@
|
||||
Faber | means <i>craftsman</i> | witch♂ <br>
|
||||
<br>
|
||||
<h2>basics </h2>
|
||||
<ul>
|
||||
<li><b>role:</b> student </li>
|
||||
<li><b>age:</b> teens </li>
|
||||
<li><b>birthday:</b> </li>
|
||||
<li><b>mental:</b> clever, goofy </li>
|
||||
<li><b>physical:</b> slightly chubby, blue hair, brown eyes </li>
|
||||
<li><b>style:</b> unique color combinations, mixing patterns </li>
|
||||
<li><b>height:</b> </li>
|
||||
<li><b>residence:</b> <a href="/char/Helmut">Helmut</a>'s house </li>
|
||||
<li><b>likes:</b> hands-on learning </li>
|
||||
<li><b>dislikes:</b> reading </li>
|
||||
<li><b>notes:</b> </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h2>story </h2>
|
||||
<p>He and <a href="/char/Tilly>Tilly</a> are witch apprentices studying under <a href="/char/Helmut">Helmut</a>. Faber is training in sorcery. <br></p>
|
||||
<br>
|
||||
<h2>description </h2>
|
||||
<p>He's always goofing off during studies, but he always looks put-together with his hair slicked back and outfits well-coordinated. <br></p>
|
||||
<br>
|
||||
<h2>inspiration </h2>
|
||||
<p><a href="/char/Helmut">Helmut</a> and his apprentices are inspired by Pantone colors of the year. <br></p>
|
||||
@@ -0,0 +1,23 @@
|
||||
Fifi | means <i>to increase</i> | witch♀ <br>
|
||||
<br>
|
||||
<h2>basics </h2>
|
||||
<ul>
|
||||
<li><b>role:</b> singer, songwriter </li>
|
||||
<li><b>age:</b> mid 30s </li>
|
||||
<li><b>birthday:</b> </li>
|
||||
<li><b>mental:</b> natural aptitude for music, creative </li>
|
||||
<li><b>physical:</b> thin, delicate, wispy blonde hair, blue eyes </li>
|
||||
<li><b>style:</b> soft textures, pastel pinks </li>
|
||||
<li><b>height:</b> 6' </li>
|
||||
<li><b>residence:</b> shared residence with her <a href="/char/Aloin">husband</a> and baby, <a href="/char/Rodolphe">Rodolphe</a>, and <a href="/char/Bijoux">Bijoux</a>. </li>
|
||||
<li><b>likes:</b> performing on her own schedule, the fashion industry, makeup artistry </li>
|
||||
<li><b>dislikes:</b> cooking, people being loud when her baby is sleeping, writer's block </li>
|
||||
<li><b>notes:</b> She's below average height for a sim; barely ever leaves house without makeup </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h2>story </h2>
|
||||
<p>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. <br></p>
|
||||
|
||||
<br>
|
||||
<h2>description </h2>
|
||||
<p>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. <br></p>
|
||||
@@ -0,0 +1,33 @@
|
||||
Freefall | means <i>immortal</i> | guardian♂ <br>
|
||||
<br>
|
||||
<h2>basics </h2>
|
||||
<ul>
|
||||
<li>role: haunt, shape-shifter </li>
|
||||
<li>age: teens </li>
|
||||
<li>birthday: June 7♊︎ </li>
|
||||
<li>mental: perpetually miserable, indifferent to world around him </li>
|
||||
<li>physical: emasciated, short, pallid, spiky storm blue hair, pale yellow eyes </li>
|
||||
<li>height: 4'11 </li>
|
||||
<li>style: shoddily assembled rags, discordant colors </li>
|
||||
<li>residence: the streets </li>
|
||||
<li>likes: solitude, Trace, his parents </li>
|
||||
<li>dislikes: the older generations, human nature </li>
|
||||
<li>notes: </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h2>story </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>description </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>He can shape-shift into a blue-gray cat with yellow eyes and does often to reach the best hiding spots. <br></p>
|
||||
<br>
|
||||
<h2>inspiration </h2>
|
||||
<p>He's originally from Impressive Title, a 3D chat server that ripped off Lion King artstyle and stole Morrowind's soundtrack. <br></p>
|
||||
@@ -0,0 +1,22 @@
|
||||
Freya | means <i>noble lady</i> | dervish♀ <br>
|
||||
<br>
|
||||
<h2>basics </h2>
|
||||
<ul>
|
||||
<li>role: Dervish Sunspear </li>
|
||||
<li>age: late 20s </li>
|
||||
<li>birthday: </li>
|
||||
<li>mental: strong-willed, decisive, wise </li>
|
||||
<li>physical: toned but graceful, white hair, deep brown eyes, rich black skin </li>
|
||||
<li>style: leather twirling dresses with hoods </li>
|
||||
<li>height: 5'8 </li>
|
||||
<li>residence: </li>
|
||||
<li>likes: the sun on her skin, dancing, jewel djinni </li>
|
||||
<li>dislikes: Norgu and Goren </li>
|
||||
<li>notes: </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h2>story </h2>
|
||||
<p> <br></p>
|
||||
<br>
|
||||
<h2>description </h2>
|
||||
<p> <br></p>
|
||||
@@ -0,0 +1,22 @@
|
||||
Funwa | means <i>ferryman</i> | baku♂ <br>
|
||||
<br>
|
||||
<h2>basics </h2>
|
||||
<ul>
|
||||
<li>role: dream-eater </li>
|
||||
<li>age: ageless </li>
|
||||
<li>birthday: August 13♌︎ </li>
|
||||
<li>mental: friendly, light-hearted </li>
|
||||
<li>physical: tapir with garish colors; tall, slim human form with short light blue hair, large light blue eyes, and a perpetual smile </li>
|
||||
<li>style: </li>
|
||||
<li>height: 5'10 </li>
|
||||
<li>residence: </li>
|
||||
<li>likes: </li>
|
||||
<li>dislikes: <a href="/char/Tilhar">Tilhar</a> </li>
|
||||
<li>notes: </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h2>story </h2>
|
||||
<p>He appears not too long after <a href="/char/Cass">Cass</a> starts having nightmares about <a href="/char/Tilhar">Tilhar</a>. He moves in and offers his service as her dreamcatcher. <br></p>
|
||||
<br>
|
||||
<h2>description </h2>
|
||||
<p>He has a tapir form and a human form. <br></p>
|
||||
@@ -0,0 +1,5 @@
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>Driscoll's birthday was April 24♉︎. <br></p>
|
||||
@@ -0,0 +1,22 @@
|
||||
Helba | means <i>fertile</i> | viral peesh♀ | theme: <a href="https://www.youtube.com/watch?v=P1OFfGO-lLw">papiyon feat. Hatsune Miku - Glorious World</a><br>
|
||||
<br>
|
||||
<h2>basics </h2>
|
||||
<ul>
|
||||
<li>role: NEET </li>
|
||||
<li>age: 20s </li>
|
||||
<li>birthday: February 12♒︎ </li>
|
||||
<li>mental: smart, chill </li>
|
||||
<li>physical: fluffy pink hair, bright pink eyes </li>
|
||||
<li>style: pajamas </li>
|
||||
<li>height: 5'7 </li>
|
||||
<li>residence: renting a room with <a href="/char/Silke">Silke</a> </li>
|
||||
<li>likes: exploring haunted houses, spelunking, gardening, programming </li>
|
||||
<li>dislikes: <a href="/char/Tilhar">Tilhar</a> </li>
|
||||
<li>notes: </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h2>story </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>description </h2>
|
||||
<p>I draw her differently all the time. Fluffy pink hair, pink eyes, and slouchy clothes is enough to identify her. <br></p>
|
||||
@@ -0,0 +1,24 @@
|
||||
Helia | means <i>sun</i> | union♀ <br>
|
||||
<br>
|
||||
<h2>basics </h2>
|
||||
<ul>
|
||||
<li>role: transfer student </li>
|
||||
<li>age: teens </li>
|
||||
<li>birthday: ??? </li>
|
||||
<li>mental: "too cool for you," able to achieve anything she sets her mind to </li>
|
||||
<li>physical: short, blonde front ponytail with chunks of burgundy and flaming orange, hot pink eyes </li>
|
||||
<li>style: DIY fashion </li>
|
||||
<li>height: 5'1 </li>
|
||||
<li>residence: with her uncle </li>
|
||||
<li>likes: urban exploration, cool hiding places, music </li>
|
||||
<li>dislikes: grownups, her parents, being asked if her eye color is real </li>
|
||||
<li>notes: </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h2>story </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>Early on, <a href="/char/Tessa">Tessa</a> 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 - <a href="/char/Runes">Rune</a>. <br></p>
|
||||
<br>
|
||||
<h2>description </h2>
|
||||
<p>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. <br></p>
|
||||
@@ -0,0 +1,25 @@
|
||||
Helmut | means <i>healthy mind</i> | witch♂ <br>
|
||||
<br>
|
||||
<h2>basics </h2>
|
||||
<ul>
|
||||
<li><b>role:</b> master alchemist, mentor </li>
|
||||
<li><b>age:</b> thirties </li>
|
||||
<li><b>birthday:</b> </li>
|
||||
<li><b>mental:</b> genius, laid-back </li>
|
||||
<li><b>physical:</b> tall, long warm green hair, honey brown eyes, a beauty mark under one eye </li>
|
||||
<li><b>style:</b> comfy sweaters, honeys, mustards, ochres, and terracottas </li>
|
||||
<li><b>height:</b> 6'5 </li>
|
||||
<li><b>residence:</b> nice house </li>
|
||||
<li><b>likes:</b> reading, working out formulas before material experimentation </li>
|
||||
<li><b>dislikes:</b> noise </li>
|
||||
<li><b>notes:</b> </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h2>story </h2>
|
||||
<p>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: <a href="/char/Faber">Faber</a> and <a href="/char/Tilly">Tilly</a>. 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. <br></p>
|
||||
<br>
|
||||
<h2>description </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>inspiration </h2>
|
||||
<p><a href="/char/Helmut">Helmut</a> and his apprentices are inspired by Pantone colors of the year. <br></p>
|
||||
@@ -0,0 +1,25 @@
|
||||
Lesser "Leslie" Than Three | means <i>holly garden</i> | elementalist♀ <br>
|
||||
<br>
|
||||
<h2>basics </h2>
|
||||
<ul>
|
||||
<li><b>role:</b> earth elementalist </li>
|
||||
<li><b>age:</b> twenties </li>
|
||||
<li><b>birthday:</b> </li>
|
||||
<li><b>mental:</b> flirty, capable </li>
|
||||
<li><b>physical:</b> chalky skin, rusty hair with inclusions of various gemstones, buxom </li>
|
||||
<li><b>style:</b> fitted bodices and leggings in brown </li>
|
||||
<li><b>height:</b> 6'5 </li>
|
||||
<li><b>residence:</b> Ascalon City </li>
|
||||
<li><b>likes:</b> boys, social outings, makeup and haircare </li>
|
||||
<li><b>dislikes:</b> Charr, the current state of Regent Valley and Ashford Abbey </li>
|
||||
<li><b>notes:</b> </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h2>story </h2>
|
||||
<p>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? <br></p>
|
||||
<br>
|
||||
<p>With the release of Guild Wars 2, it looks like all her work was for naught. The ruins are almost identical to the day <a href="Lune">Lune</a> left with Prince Rurik to seek an alliance with the dwarves lol. <br></p>
|
||||
<br>
|
||||
<h2>description </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
@@ -0,0 +1,7 @@
|
||||
Aristen | means <i>the best</i> | mystic♀ | martial artist, soldier of fortune | 24 years old | 5'6<br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
@@ -8,5 +8,6 @@
|
||||
<li><b>height:</b> 5'1 </li>
|
||||
<li><b>residence:</b> <a href="https://wiki.guildwars.com/wiki/Isle_of_the_Dead">Isle of the Dead</a>, <a href="https://aion.fandom.com/wiki/Poeta">Akarios Village, Poeta</a> </li>
|
||||
<li><b>likes:</b> cats, her pet <a href="https://wiki.guildwars.com/wiki/Miniature_Necrid_Horseman">mini Necrid Horseman</a>, powertrading </li>
|
||||
<li><b>dislikes:</b> fish </li>
|
||||
<li><b>dislikes:</b> Prince Rurik </li>
|
||||
<li><b>notes:</b> </li>
|
||||
</ul>
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
<p>Her favorite colors to wear are brown, white, and black. If she wears makeup, it's usually brown or gold tones. She also usually has short, straight hair with peek-a-boo bangs. <br></p>
|
||||
<br>
|
||||
<p>She had a frizzy brunette phase for a few years because I convinced myself creative interpretations and personas are cringy. Maybe they are, but whatever. That line of thinking strips away my ability to abstract stressors into art and writing. My creative outlet matters way more to me than some arbitrary standard of coolness. So her brunette phase is an important part of her journey, but her true self has white hair, whatever that means. <br></p>
|
||||
<p>She had a frizzy brunette phase for a few years because I convinced myself creative interpretations and personas are cringy. Maybe they are, but whatever. That line of thinking strips away my ability to abstract stressors into art and writing. My creative outlet matters way more to me than some arbitrary standard of coolness. So her brunette phase is an important part of her journey, but her true self has white hair. <br></p>
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
Nephele | means <i>cloud</i> | green ozilette♀ | theme: <a href="https://www.youtube.com/watch?v=857h3H1SuOc">Gregory & the Hawk - In Fact</a> <br>
|
||||
<br>
|
||||
<h2>basics </h2>
|
||||
<ul>
|
||||
<li><b>role:</b> walker </li>
|
||||
<li><b>age:</b> teens </li>
|
||||
<li><b>birthday:</b> </li>
|
||||
<li><b>mental:</b> sharp, bitter </li>
|
||||
<li><b>physical:</b> short, athletic, wavy brown hair tied back in a huge ponytail that brushes the floor, blue eyes </li>
|
||||
<li><b>style:</b> long, flowing clothing in shamrock, crimson, and sunny yellow </li>
|
||||
<li><b>height:</b> 5'3 </li>
|
||||
<li><b>residence:</b> abandoned suburban house </li>
|
||||
<li><b>likes:</b> interesting encounters with others, temporary travel companions, free-running </li>
|
||||
<li><b>dislikes:</b> heartbreak, neglect, arbitrary restrictions </li>
|
||||
<li><b>notes:</b> </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h2>story </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>She meets her first friend and true teen love online, <a href="/char/Denver">Denver</a>. 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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>description </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>notes </h2>
|
||||
<p>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. <br></p>
|
||||
@@ -0,0 +1,15 @@
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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?) <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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) <br></p>
|
||||
<br>
|
||||
<p>(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.) <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
@@ -0,0 +1,25 @@
|
||||
Pixie | means <i>mischevious</i> | hero scrapper⚲ <br>
|
||||
<br>
|
||||
<h2>basics </h2>
|
||||
<ul>
|
||||
<li>role: rogue VI </li>
|
||||
<li>age: single digits </li>
|
||||
<li>birthday: </li>
|
||||
<li>mental: limited, frivolous </li>
|
||||
<li>physical: tall, reddish skin, dark intricate hairstyles, dark almond-shaped eyes, pointed ears, black wasp wings </li>
|
||||
<li>style: minimal clothing, orange </li>
|
||||
<li>height: 5'10 </li>
|
||||
<li>residence: nomad </li>
|
||||
<li>likes: humans, discoveries, helping </li>
|
||||
<li>dislikes: unfriendly people </li>
|
||||
<li>notes: </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h2>story </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>She wields a red katana. <br></p>
|
||||
<br>
|
||||
<h2>description </h2>
|
||||
<p>She's engulfed in bright orange pixels. <br></p>
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
characters
|
||||
<ul>
|
||||
<li>Aloin </li>
|
||||
<li>Amarr </li>
|
||||
<li>Angel </li>
|
||||
<li>Belltower Angel </li>
|
||||
<li>Bless the Child </li>
|
||||
<li>Cat Man </li>
|
||||
<li>Chandra </li>
|
||||
<li>Chloe </li>
|
||||
<li>Customs Officer </li>
|
||||
<li>Dia </li>
|
||||
<li>Fifi </li>
|
||||
<li>Helba </li>
|
||||
<li>Marie-Agnès </li>
|
||||
<li>Nephele </li>
|
||||
<li>Night </li>
|
||||
<li>Pixie </li>
|
||||
<li>Trace </li>
|
||||
<li>Traveler </li>
|
||||
<li>Una </li>
|
||||
<li>Window </li>
|
||||
</ul>
|
||||
|
||||
|
||||
character checkboxes
|
||||
<ul>
|
||||
<li> </li>
|
||||
</ul>
|
||||
|
||||
character art
|
||||
<ul>
|
||||
<li>Abbey human </li>
|
||||
<li>Abbey playing the lyre </li>
|
||||
<li>Bless and monsters </li>
|
||||
<li>Calder dragon in the Mire </li>
|
||||
<li>Calder full body with fire </li>
|
||||
<li>Cassarah outfits </li>
|
||||
<li>Cassarah surrounded by spirits </li>
|
||||
<li>Cassarah having breakfast with Funwa </li>
|
||||
<li>Cassarah arguing with Chandrakant </li>
|
||||
<li>Cassarah in the dreamworld </li>
|
||||
<li>Chandrakant </li>
|
||||
<li>Funwa human </li>
|
||||
<li>Funwa tapir </li>
|
||||
<li>Helia outfits </li>
|
||||
<li>Helia and Rune together </li>
|
||||
<li>Helia entering Uncle's empty house </li>
|
||||
<li>Helia being angsty with music </li>
|
||||
<li>Rune fighting Helia </li>
|
||||
<li>Rune being a yandere </li>
|
||||
<li>Rune being stupid </li>
|
||||
<li>Silke outfits </li>
|
||||
<li>Silke in the office </li>
|
||||
<li>Tessa + Choupette </li>
|
||||
<li>Tessa fighting with brass knuckles and animal companions </li>
|
||||
<li>Tessa bullying Rune </li>
|
||||
<li>WISE in a dilapidated environment </li>
|
||||
</ul>
|
||||
@@ -0,0 +1,24 @@
|
||||
Edward "Night" Lusk | means <i>dark</i> | chemist♂ <br>
|
||||
<br>
|
||||
<h2>basics </h2>
|
||||
<ul>
|
||||
<li><b>role:</b> pharmacist </li>
|
||||
<li><b>age:</b> teens </li>
|
||||
<li><b>birthday:</b> </li>
|
||||
<li><b>mental:</b> genius, haughty </li>
|
||||
<li><b>physical:</b> short, thin but without muscles, dark hair, light blue eyes, pale </li>
|
||||
<li><b>style:</b> relatively formal, lots of suit jackets and vests with pops of bold colors </li>
|
||||
<li><b>height:</b> 5'5 </li>
|
||||
<li><b>residence:</b> a house above his office </li>
|
||||
<li><b>likes:</b> compliments, pride in his appearance, </li>
|
||||
<li><b>dislikes:</b> situations beyond his control, owing favors </li>
|
||||
<li><b>notes:</b> </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h2>story</h2>
|
||||
<p>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 <a href="/char/Milo">Milo</a>, and the property. The mayor <a href="/char/Dia">Dia</a> 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. <br></p>
|
||||
<br>
|
||||
<h2>description</h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <a href="/char/Marie-Agnès">Tessa's mom</a> made her alter every single one of Night's jackets for practice, so they all fit like a glove. <br></p>
|
||||
@@ -0,0 +1,24 @@
|
||||
Rune | means <i>secret</i> | outsider♂ <br>
|
||||
<br>
|
||||
<h2>basics </h2>
|
||||
<ul>
|
||||
<li><b>role:</b> floor guardian </li>
|
||||
<li><b>age:</b> teens </li>
|
||||
<li><b>birthday:</b> </li>
|
||||
<li><b>mental:</b> simple, ignorant but eager to learn </li>
|
||||
<li><b>physical:</b> tall, dark hair, red eyes, semi-rigid keratin "horns" </li>
|
||||
<li><b>style:</b> assembled trash, hand-me-downs </li>
|
||||
<li><b>height:</b> 5'10 </li>
|
||||
<li><b>residence:</b> the Wilds, an earth crust pocket full of abyssal monsters </li>
|
||||
<li><b>likes:</b> kindness, trust, collecting interesting objects </li>
|
||||
<li><b>dislikes:</b> direct confrontations, cruelty </li>
|
||||
<li><b>notes:</b> </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h2>story </h2>
|
||||
<p>He is a mysterious adolescent boy rescued from the dungeon by <a href="/char/Helia">Helia</a>, <a href="/char/Tessa">Tessa</a> and <a href="<a href="/char/Angel">Angel</a>. 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. <br></p>
|
||||
<br>
|
||||
<p>Until his rescue, he was living in the buffer territory between the inner earth and Lucrest Shopping Center. <a href="/char/Bless">Bless</a>, 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. <br></p>
|
||||
<br>
|
||||
<h2>description</h2>
|
||||
<p>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. <br></p>
|
||||
@@ -0,0 +1,25 @@
|
||||
Silke | means <i>heavenly</i> | divine tabid♂ | <a href="https://www.youtube.com/watch?v=MJqAhbhffpU">theme: tofubeats / トーフビーツ -「すてきなメゾン feat. 玉城ティナ」</a><br>
|
||||
<br>
|
||||
<h2>basics </h2>
|
||||
<ul>
|
||||
<li>role: intern </li>
|
||||
<li>age: 20s </li>
|
||||
<li>birthday: March 7♓︎ </li>
|
||||
<li>mental: fast learner, reserved </li>
|
||||
<li>physical: small, boyish, blonde hair, pink eyes </li>
|
||||
<li>style: dresses and skirts made of silks, chiffons, and taffetas </li>
|
||||
<li>height: 5'3 </li>
|
||||
<li>residence: renting a room with <a href="/char/Helba">Helba</a> </li>
|
||||
<li>likes: raising pets </li>
|
||||
<li>dislikes: her boss </li>
|
||||
<li>notes: </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h2>story </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>description </h2>
|
||||
<p>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. <br></p>
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
<ul>
|
||||
<li>role: leech </li>
|
||||
<li>age: ageless </li>
|
||||
<li>mental: dull-witted, charming </li>
|
||||
<li>physical: athletic build, gray skin, satiny black hair, silver eyes. can dissolve entirely or partially into incorporeal mist </li>
|
||||
<li>style: naked lol </li>
|
||||
<li>height: 5'11 </li>
|
||||
<li>residence: vagrant </li>
|
||||
<li>likes: holding all the cards, exploring dreams, his own good looks </li>
|
||||
<li>dislikes: mysteries, danger, other men </li>
|
||||
</ul>
|
||||
@@ -0,0 +1,3 @@
|
||||
<p>Conventionally handsome with silver eyes and long black hair and a smooth, gentle voice. <br></p>
|
||||
<br>
|
||||
<p>I initially developed this character to cope with recurring episodes of sleep paralysis, but he's his own character with his own plot at this point. <br></p>
|
||||
@@ -0,0 +1 @@
|
||||
Tilhar | means <i>dark clouds</i> | incubus♂ <br>
|
||||
@@ -0,0 +1,5 @@
|
||||
|
||||
<p>Despite viewing women as nothing more than playthings, he's drawn to <a href="/char/Cass">Cass</a> 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. <br></p>
|
||||
<br>
|
||||
<p>He can paralyze victims with his magic power. <br></p>
|
||||
<br>
|
||||
@@ -0,0 +1,25 @@
|
||||
Tilly | means <i>mighty in battle</i> | witch♀ <br>
|
||||
<br>
|
||||
<h2>basics </h2>
|
||||
<ul>
|
||||
<li><b>role:</b> student </li>
|
||||
<li><b>age:</b> teens </li>
|
||||
<li><b>birthday:</b> </li>
|
||||
<li><b>mental:</b> intelligent, serious </li>
|
||||
<li><b>physical:</b> layered hair with lavenders and periwinkles, blue eyes, and glasses </li>
|
||||
<li><b>style:</b> graphic florals and complicated layering </li>
|
||||
<li><b>height:</b> </li>
|
||||
<li><b>residence:</b> <a href="/char/Helmut">Helmut</a>'s house </li>
|
||||
<li><b>likes:</b> reading </li>
|
||||
<li><b>dislikes:</b> being put on the spot </li>
|
||||
<li><b>notes:</b> </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h2>story </h2>
|
||||
<p>She and <a href="/char/Faber>Faber</a> are witch apprentices studying under <a href="/char/Helmut">Helmut</a>. Tilly is training in alchemy. <br></p>
|
||||
<br>
|
||||
<h2>description </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>inspiration </h2>
|
||||
<p><a href="/char/Helmut">Helmut</a> and his apprentices are inspired by Pantone colors of the year. <br></p>
|
||||
@@ -0,0 +1,7 @@
|
||||
Aristen | means <i>the best</i> | mystic♀ | martial artist, soldier of fortune | 24 years old | 5'6<br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
@@ -0,0 +1,23 @@
|
||||
Trace | means <i>heavenly</i> | blue balkane♀ <br>
|
||||
<br>
|
||||
<h2>basics </h2>
|
||||
<ul>
|
||||
<li>role: student </li>
|
||||
<li>age: teens </li>
|
||||
<li>birthday: May 7♉︎ </li>
|
||||
<li>mental: intelligent, weak presence </li>
|
||||
<li>physical: boyish frame, red hair, brown eyes, soft features, squared face </li>
|
||||
<li>style: denim, jersey cotton </li>
|
||||
<li>height: 5'1 </li>
|
||||
<li>residence: with her parents </li>
|
||||
<li>likes: drawing, writing </li>
|
||||
<li>dislikes: social anxiety </li>
|
||||
<li>notes: </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h2>story </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>description </h2>
|
||||
<p>She's a plain jane with dull red hair and brown eyes. <br></p>
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
WISE | means <i>knowledgeable</i> | AI⚲ <br>
|
||||
<br>
|
||||
<h2>basics </h2>
|
||||
<ul>
|
||||
<li>role: virtual guide, mascot </li>
|
||||
<li>age: ??? </li>
|
||||
<li>birthday: </li>
|
||||
<li>mental: impossible processing power </li>
|
||||
<li>physical: holographic. heavy-breasted, drooping oversized glasses, messy hair tangled in her horns, pendulous manner </li>
|
||||
<li>style: varies </li>
|
||||
<li>height: 6' </li>
|
||||
<li>residence: wherever she can be projected </li>
|
||||
<li>likes: well-formatted requests </li>
|
||||
<li>dislikes: user error </li>
|
||||
<li>notes: </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h2>story </h2>
|
||||
<p>She is a relatively older AI but is widely used due to her ease of use, long-term support, and wide availability of libraries and plug-ins. She was originally designed as a virtual assistant for archives and research labs, but is now commonly seen at festivals and sites of interest. She uses a database provided by the owner to process and answer higher-level questions in the natural language of the user. The owner can manipulate the data in the database to give her some semblance of opinions, but she is intended to be bluntly factual. She can't be projected more than 3 feet off her hub, so she must be placed very near everything she needs to interact with. <br></p>
|
||||
<br>
|
||||
<h2>description </h2>
|
||||
<p>She has voice recognition but also allows for written input via a written language similar to stenography. Everything she says is also displayed as text in holographic chat bubbles. In addition to chat bubbles, she can display all kinds of symbols, emoticons, and images as relevant. <br></p>
|
||||
<br>
|
||||
<p>Her natural state is to rest. During extended usage, her posture will droop and her mannerisms will become less animated. If her task is completed or she receives no input for an certain period of time, she will nod off to sleep, displaying a stream of Zzz. <br></p>
|
||||
@@ -1,24 +0,0 @@
|
||||
WISE | means <i>knowledgeable</i> | AI⚲ <br>
|
||||
<br>
|
||||
<h2>basics </h2>
|
||||
<ul>
|
||||
<li>role: virtual guide, mascot </li>
|
||||
<li>age: ??? </li>
|
||||
<li>birthday: </li>
|
||||
<li>mental: impossible processing power </li>
|
||||
<li>physical: holographic. heavy-breasted, drooping oversized glasses, messy hair tangled in her horns, pendulous manner </li>
|
||||
<li>style: varies </li>
|
||||
<li>height: 6' </li>
|
||||
<li>residence: wherever she can be projected </li>
|
||||
<li>likes: well-formatted requests </li>
|
||||
<li>dislikes: user error </li>
|
||||
<li>notes: </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h2>story </h2>
|
||||
<p>She is a relatively older AI but is widely used due to her ease of use, long-term support, and wide availability of libraries and plug-ins. She was originally designed as a virtual assistant for archives and research labs, but is now commonly seen at festivals and sites of interest. She uses a database provided by the owner to process and answer higher-level questions in the natural language of the user. The owner can manipulate the data in the database to give her some semblance of opinions, but she is intended to be bluntly factual. She can't be projected more than 3 feet off her hub, so she must be placed very near everything she needs to interact with. <br></p>
|
||||
<br>
|
||||
<h2>description </h2>
|
||||
<p>She has voice recognition but also allows for written input via a written language similar to stenography. Everything she says is also displayed as text in holographic chat bubbles. In addition to chat bubbles, she can display all kinds of symbols, emoticons, and images as relevant. <br></p>
|
||||
<br>
|
||||
<p>Her natural state is to rest. During extended usage, her posture will droop and her mannerisms will become less animated. If her task is completed or she receives no input for an certain period of time, she will nod off to sleep, displaying a stream of Zzz. <br></p>
|
||||
@@ -1,24 +0,0 @@
|
||||
WISE | means <i>knowledgeable</i> | AI⚲ <br>
|
||||
<br>
|
||||
<h2>basics </h2>
|
||||
<ul>
|
||||
<li>role: virtual guide, mascot </li>
|
||||
<li>age: ??? </li>
|
||||
<li>birthday: </li>
|
||||
<li>mental: impossible processing power </li>
|
||||
<li>physical: holographic. heavy-breasted, drooping oversized glasses, messy hair tangled in her horns, pendulous manner </li>
|
||||
<li>style: varies </li>
|
||||
<li>height: 6' </li>
|
||||
<li>residence: wherever she can be projected </li>
|
||||
<li>likes: well-formatted requests </li>
|
||||
<li>dislikes: user error </li>
|
||||
<li>notes: </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h2>story </h2>
|
||||
<p>She is a relatively older AI but is widely used due to her ease of use, long-term support, and wide availability of libraries and plug-ins. She was originally designed as a virtual assistant for archives and research labs, but is now commonly seen at festivals and sites of interest. She uses a database provided by the owner to process and answer higher-level questions in the natural language of the user. The owner can manipulate the data in the database to give her some semblance of opinions, but she is intended to be bluntly factual. She can't be projected more than 3 feet off her hub, so she must be placed very near everything she needs to interact with. <br></p>
|
||||
<br>
|
||||
<h2>description </h2>
|
||||
<p>She has voice recognition but also allows for written input via a written language similar to stenography. Everything she says is also displayed as text in holographic chat bubbles. In addition to chat bubbles, she can display all kinds of symbols, emoticons, and images as relevant. <br></p>
|
||||
<br>
|
||||
<p>Her natural state is to rest. During extended usage, her posture will droop and her mannerisms will become less animated. If her task is completed or she receives no input for an certain period of time, she will nod off to sleep, displaying a stream of Zzz. <br></p>
|
||||
@@ -0,0 +1,26 @@
|
||||
Window Harpen | means <i>wind-eye</i> | human♂ <br>
|
||||
<br>
|
||||
<h2>basics </h2>
|
||||
<ul>
|
||||
<li>role: supernatural journalist </li>
|
||||
<li>age: 20s </li>
|
||||
<li>mental: well-rounded, cynical </li>
|
||||
<li>physical: slim, purple Sasuke hair, brown eyes </li>
|
||||
<li>style: dark colors, nondescript clothing </li>
|
||||
<li>height: 5'7 </li>
|
||||
<li>residence: full-time travel </li>
|
||||
<li>likes: not standing out, hospitality, lakes and oceans </li>
|
||||
<li>dislikes: staying in one place for too long, personal questions </li>
|
||||
<li>notes: hair always covers his eyes </li>
|
||||
</ul><br>
|
||||
<br>
|
||||
<h2>story </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>description </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>inspiration </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>I thought his name was so cool when I was 13. <br></p>
|
||||
@@ -0,0 +1,125 @@
|
||||
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.
|
||||
|
||||
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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 <a href="/fashion">fashion page</a>. <br></p>
|
||||
|
||||
|
||||
% rebase('frame.tpl')
|
||||
<div class="content-grid">
|
||||
<div class="banner">
|
||||
<h1>blessfrey fashion </h1>
|
||||
</div>
|
||||
|
||||
<div class="season" id="season">
|
||||
<h2>church girls + animal parade</h2>
|
||||
<i>a collection in two parts</i> <br>
|
||||
<br>
|
||||
<p><b>Church girls</b> 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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
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 <i>me</i> but flavoring them with discordant sources of inspiration and sentimentality. I take each design's name from scattered memories. <br></p>
|
||||
<br>
|
||||
<hr>
|
||||
<img src="/static/img/fash/churchgirls+animalparade/hikari.png" alt="(link: home)">
|
||||
<div class="caption">(Hikari from Harvest Moon: Animal Parade, snapped from a <a href="https://www.youtube.com/watch?v=bNi5A047aoo&list=PLqNTe2pSF5Fr3JdFjksSbq0p4KtbcL9Fz">NaVi(ナビ) YouTube video</a>)</div>
|
||||
<p>I wasn't prepared to unlock a 00s fashion time capsule when I found a copy of <b>Animal Parade</b>. 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. <br></p>
|
||||
<br>
|
||||
<p>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.<br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<hr>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<div class="verse">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. <br></div>
|
||||
<i>(Psalm 30:1-5)</i> <br>
|
||||
<br>
|
||||
<div class="verse">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. <br></div>
|
||||
<i>(Song of Solomon 2:10-12)</i> <br>
|
||||
</div>
|
||||
|
||||
<div class="gallery" id="gallery">
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/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)">>
|
||||
<img src="/static/img/fash/churchgirls+animalparade/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)">
|
||||
</a><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 <a href="https://www.ebay.com/itm/124967194636?hash=item1d18a0100c:g:1K8AAOSw7PdhctB3">BB Dakota design</a>. 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. <br>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<b>Mock Turtle</b>: 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. <br>
|
||||
<br><br>
|
||||
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/capsulewardrobe_sketches1.png">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/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>
|
||||
<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>
|
||||
<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>
|
||||
<br><br>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/capsulewardrobe_sketches3.png">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/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>
|
||||
<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>
|
||||
<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 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. <br>
|
||||
<br>
|
||||
<h2>pattern-making and sewing so far</h2>
|
||||
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. <br>
|
||||
<br>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/capsulewardrobe_nakimushi_pattern.png">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/capsulewardrobe_nakimushi_pattern.png" alt="(image: pattern pieces for the button-down shirt and a ruler and curve tool. )" width="500">
|
||||
</a><br>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/capsulewardrobe_mockturtle_pattern.png">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/capsulewardrobe_mockturtle_pattern.png" alt="(image: pattern pieces for the button-down shirt and a ruler and curve tool. )" width="500">
|
||||
</a><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/capsulewardrobe_nakimushi.png">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/capsulewardrobe_nakimushi.png" alt="(image: incomplete button-down shirt with disconnected sleeves. )" width="500">
|
||||
</a><br>
|
||||
</div>
|
||||
|
||||
<div class="designer" id="designer">
|
||||
<h2>designer</h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h3>design statement</h3>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,268 @@
|
||||
<!---->
|
||||
<h1>100q to develop dia </h1>
|
||||
? ??, 2022<br>
|
||||
#?? <br>
|
||||
<br>
|
||||
Random DeviantART questionnaire because why not? <br>
|
||||
<br>
|
||||
<h2>Mayor Dia De Luna </h2>
|
||||
<br>
|
||||
Filling out <a href="https://www.deviantart.com/iciaa">Iciaa</a>'s questionnaire for Dia because I'm feeling nostalgic for these overly long questionnaires. Also, Dia isn't that detailed of a character yet. <br>
|
||||
<br>
|
||||
<b>1. What is your character's name? Do they have a nickname? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>2. Is your character male or female? What is their sexuality? What role does it play in your story? </b><br>
|
||||
Female, straight. She isn't above manipulating guys' feelings to get what she wants. <br>
|
||||
<br>
|
||||
<b>3. How old is your character? Does their age matter to them emotionally or socially? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>4. How tall is your character? Does it affect them negatively, positively, or neutrally? </b><br>
|
||||
She is pretty sure her short stature prevents her from being taken seriously in some circles. <br>
|
||||
<br>
|
||||
<b>5. What is your character's body shape? Are they physically fit? What challenges or advantages does this present? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>6. Describe your character's facial features. What color are their eyes and hair? Be specific! </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>7. Do other people find your character physically attractive? Why or why not? </b><br>
|
||||
Yes. She is conventionally cute, polite, and knows how to push people's buttons. <br>
|
||||
<br>
|
||||
<b>8. What sort of clothing does your character wear? What colors are common? What does this style reflect? </b><br>
|
||||
Light, elegant colors, professional but feminine styles, propensity for sparkly or metallic fabrics like lurex or lame. <br>
|
||||
<br>
|
||||
<b>9. Does your character have any physical or mental disabilities? How does this affect your story? Is it a main point of your plot? </b><br>
|
||||
I'm not going to armchair diagnose her with anything, but she's a jerk. <br>
|
||||
<br>
|
||||
<b>10. What does your character do for money? If they are unemployed, how do they live? Does money matter to your character? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>11. Does your character have specified family members? Describe their relationship with their family. </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>12. What is your character's marital status? Are they involved in a relationship? How is this emotional taxation present in your story? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>13. Who are your character's closest friends? How do they know each other? How do they act around each other? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>14. Who are your character's minor enemies? Why do they not get along? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>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? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>16. How does your character speak, and what does their voice sound like? How does this reflect their personality, if at all? </b><br>
|
||||
Her voice is sweet and high-pitched like a bell. She took speech classes as a child, and it shows in her deliberate articulation. <br>
|
||||
<br>
|
||||
<b>17. Is there anything significant about your character's movement? Is it important? </b><br>
|
||||
She has perfect posture; she's good at walking silently and sneaking around; I don't know lol no. <br>
|
||||
<br>
|
||||
<b>18. Who does your character live with, or do they live alone? How does this arrangement affect your character's lifestyle? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>19. What traits does your character value in their friends? </b><br>
|
||||
Someone intelligent, someone who gets where she comes from, someone who respects her. <br>
|
||||
<br>
|
||||
<b>20. What are your character's main pet peeves? Does this play a role in your story? </b><br>
|
||||
Being belittled, being called cute, being carded for things. It's part of her impetus for purchasing a section of the Abyssal Cave. <br>
|
||||
<br>
|
||||
<b>21. Where does your character live? Are they happy? Describe the scenery. How does this affect your story? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>22. What is your character's opinion of the society they live in? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>23. Briefly summarize your character's childhood. </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>24. What are your character's darkest secrets? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>25. Has anyone close to your character died in the past? How did your character deal with this? Did it have a lasting impact? </b><br>
|
||||
Haven't thought about it. <br>
|
||||
<br>
|
||||
<b>26. What is your character's social status? Are they happy with it? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>27. Is your character a hero, a villain, or neither? How do they see themselves, as opposed to how others see them? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>28. Is your character conservative and disapproving of change, or liberal and willing to accept? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>29. It is said that every character has a fatal flaw. What is your character's? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>30. What are your character's special talents? Are they supernatural, or normal? Can few other people do them? </b><br>
|
||||
She is the only one with the GDP wand, stolen from the magic caves. She can control the hand of the market. <br>
|
||||
<br>
|
||||
<b>31. What specific activities does your character lack skill for? What challenges does this present? </b><br>
|
||||
Keeping secrets. Competitors and worse had an eye on Lucrest before she did. <br>
|
||||
<br>
|
||||
<b>32. What are your character's major wishes in life? These are not goals, simply things they wish would happen without work. </b><br>
|
||||
Her dad would approve of her relationship with Koda. <br>
|
||||
<br>
|
||||
<b>33. When your character looks in the mirror, what do they think of themselves? Is it positive or negative? </b><br>
|
||||
She's definitely nitpicking, rearranging her hair, touching up her makeup, but she's ultimately confident in her appearance. <br>
|
||||
<br>
|
||||
<b>34. What is your character's most precious material object? What would happen if they lost it? Why is it so important? </b><br>
|
||||
Her magic wand. Unthinkable. Without it, she'd actually have to formulate her own effective economic policies, and she's never tried that before. <br>
|
||||
<br>
|
||||
<b>35. Is your character more creative, or more logical? </b><br>
|
||||
Maybe creative? <br>
|
||||
<br>
|
||||
<b>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? </b><br>
|
||||
I feel like all her flaws are major. <br>
|
||||
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. <br>
|
||||
She also has maturity issues. If someone gets under her skin, she'll hold the pettiest <br>
|
||||
<br>
|
||||
<b>37. Is your character envied? By whom? Who does your character envy? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>38. Does your character deceive others often? Do they attempt to deceive themselves? How and why? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>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? </b><br>
|
||||
She's Episcopalian on the Sabbath but lacks a deep belief in God. <br>
|
||||
<br>
|
||||
<b>40. Describe your character's uncommon beliefs. Do they believe in fate? Karma? Multiple heavens and hells? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>41. Is your character well known or little known? Why? </b><br>
|
||||
She's as well-known as any random daughter of a high-ranking politician who has served in the government for 40 years. <br>
|
||||
<br>
|
||||
<b>42. Is your character more optimistic, or more pessimistic? </b><br>
|
||||
Aggressively pessimistic. So much so that she rarely relies on others or luck. <br>
|
||||
<br>
|
||||
<b>43. Does your character have a lot of hope? Are there points in your story in which they lose hope? </b><br>
|
||||
She feels like she's getting away with it. Cracks start to show over time. <br>
|
||||
<br>
|
||||
<b>44. What traits make your character unique? Do they have special abilities, or a unique facial feature? Be specific. </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>45. Is your character moody or even? Is there a cause? What are the consequences? </b><br>
|
||||
She keeps it together most of the time, but she gets into slapfights with her predestined enemies. <br>
|
||||
<br>
|
||||
<b>46. What is your character's mental capacity? Are they brilliant, or slow to learn? </b><br>
|
||||
She's very bright and quick on her feet, but she doesn't trust herself enough to actually use her brain. <br>
|
||||
<br>
|
||||
<b>47. Does your character sport charisma to influence others? How do they use this? If not, how does it affect them? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>48. What is your character's first memory? Why? What was its impact? Was it good or bad? Describe it in detail. </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>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? </b><br>
|
||||
Definitely. She tries to foresee how people will fit into Lucrest. She always does her professional best to make a good impression on everyone. <br>
|
||||
<br>
|
||||
<b>50. How does your character view authorities? How do they react to taking orders? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>51. What are your character's goals? Long term? Short term? </b><br>
|
||||
Definitely CEO business magnate over an empire. Or something. Just so long as her father's finally proud. <br>
|
||||
<br>
|
||||
<b>52. What does your character do when they need to relax? Does it work? Does it affect those around them? </b><br>
|
||||
Secret retreat with Koda. Long walks along the scenic avenues of Abyssal Cave. Push the shopkeepers around. <br>
|
||||
<br>
|
||||
<b>53. What events in your character's past have left major effects? Why and how? Are they good impacts, or bad? </b><br>
|
||||
<br>
|
||||
<b>54. What major changes has your character gone through recently? How do the people around them react to this? </b><br>
|
||||
<br>
|
||||
<b>55. What are your character's bad habits? Are they major, like smoking and drinking, or minor, like chewing their nails? </b><br>
|
||||
<br>
|
||||
<b>56. What is your character a perfectionist about? </b><br>
|
||||
<br>
|
||||
<b>57. Who are your character's distant family? Does this play a role in your story? </b><br>
|
||||
<br>
|
||||
<b>58. What recent events have strengthened or weakened your character? What do they think of their changes? </b><br>
|
||||
<br>
|
||||
<b>59. Who were your character's childhood friends? Do they play a role in your story? How? </b><br>
|
||||
<br>
|
||||
<b>60. What major things does your character ignore? Purposefully? Or are they simply ignorant? </b><br>
|
||||
<br>
|
||||
<b>61. What are your character's major fears? How does this challenge them? </b><br>
|
||||
<br>
|
||||
<b>62. What does your character want that is unusual? </b><br>
|
||||
<br>
|
||||
<b>63. What does your character like that is unusual? </b><br>
|
||||
<br>
|
||||
<b>64. What is your character's favorite color? Does this reflect their personality? How? </b><br>
|
||||
<br>
|
||||
<b>65. Is your character ahead of their time? Behind? At the correct pace? </b><br>
|
||||
<br>
|
||||
<b>66. Does your character have much free time? What do they do with it? </b><br>
|
||||
<br>
|
||||
<b>67. Does your character have goals that are unattainable? </b><br>
|
||||
<br>
|
||||
<b>68. How does your character dream while they are asleep? Vividly? Rarely? Do they frequently have nightmares? Describe some of their dreams. </b><br>
|
||||
<br>
|
||||
<b>69. Does your character have health problems? Do they need medication or medical care? How does this challenge them? </b><br>
|
||||
<br>
|
||||
<b>70. What are your character's inner fears? Do they tell people about them? Why or why not? </b><br>
|
||||
<br>
|
||||
<b>71. What is your character's taste in food? Is this specific to the setting of your story? How does it affect your story? </b><br>
|
||||
<br>
|
||||
<b>72. Is your character more selfish, or more generous? </b><br>
|
||||
<br>
|
||||
<b>73. What is your character's stress level? Why? What do they do to resolve it? </b><br>
|
||||
<br>
|
||||
<b>74. What effects do social pressures, like money and the media, have on your character? </b><br>
|
||||
<br>
|
||||
<b>75. Is your character interested in a more lavish lifestyle, or simple? </b><br>
|
||||
<br>
|
||||
<b>76. What weather does your character prefer? Why? How do they react when that weather is not present? </b><br>
|
||||
<br>
|
||||
<b>77. What is your character's favorite time of day? Why? </b><br>
|
||||
<br>
|
||||
<b>78. Of what importance are holidays to your character? Which holidays? </b><br>
|
||||
<br>
|
||||
<b>79. What odd traits belonging to your character tend to drive people away? Why? </b><br>
|
||||
<br>
|
||||
<b>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? </b><br>
|
||||
<br>
|
||||
<b>81. Does your character place significant value in common sense? Does your character have a lot of common sense? </b><br>
|
||||
<br>
|
||||
<b>82. What is your character's taste in music? Why? Do they make music? </b><br>
|
||||
<br>
|
||||
<b>83. Is your character satisfied with their life? Why or why not? </b><br>
|
||||
<br>
|
||||
<b>84. What motivates your character to make changes and move forward in life? </b><br>
|
||||
<br>
|
||||
<b>85. What are your character's least favorite activities? </b><br>
|
||||
<br>
|
||||
<b>86. List several activities that your character will refuse to do and explain. </b><br>
|
||||
<br>
|
||||
<b>87. What does your character do to relieve boredom? </b><br>
|
||||
<br>
|
||||
<b>88. Is your character more lazy, or more studious? </b><br>
|
||||
<br>
|
||||
<b>89. Is your character more athletic and active, or more lazy? </b><br>
|
||||
<br>
|
||||
<b>90. Is your character social, or a loner? </b><br>
|
||||
<br>
|
||||
<b>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? </b><br>
|
||||
<br>
|
||||
<b>92. What does your character find beautiful? What does your character find ugly? </b><br>
|
||||
<br>
|
||||
<b>93. What are your character's redeeming traits? </b><br>
|
||||
<br>
|
||||
<b>94. Is your character easily distracted? If so, why, and what challenges does this present? If not, how does this help them? </b><br>
|
||||
<br>
|
||||
<b>95. How does your character interact with nature? Why? </b><br>
|
||||
<br>
|
||||
<b>96. What are the major lasting effects that your character will tend to have on other people, if any? </b><br>
|
||||
<br>
|
||||
<b>97. How self-centered is your character? Why? What do other people think of this? </b><br>
|
||||
<br>
|
||||
<b>98. Does your character judge people, and on what premises? Race? Gender? Age? </b><br>
|
||||
<br>
|
||||
<b>99. Briefly summarize the major events in the time line of your character's life. </b><br>
|
||||
<br>
|
||||
<b>100. Finally, and perhaps most importantly, what is your character's role in the story? </b><br>
|
||||
<br>
|
||||
<br>
|
||||
Last updated August 31, 2022 <br>
|
||||
<br>
|
||||
@@ -0,0 +1,42 @@
|
||||
<!--210218,210107-->
|
||||
<h1>the achievement system is the central nervous system of my game (part 1) </h1>
|
||||
april 2, 2021<br>
|
||||
#gamedev #gamedesign #achievements #world-progression #character-progression <br>
|
||||
<br>
|
||||
<p>What's the difference between winning a trophy or earning a quest reward for killing 10 rats? Probably nothing. <br></p>
|
||||
<img src="/static/img/ent/rpgachievement_samepicture.png" alt="(meme: “Corporate needs you to find the differences between this picture and this picture” for Dragon's Dogma achievements like “Defeated an evil eye” and “Defeated 3,000 enemies” vs. quest journal entries like “Slay 25 crows.”)"> <br>
|
||||
<p>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 <a href="https://partner.steamgames.com/doc/features/achievements/ach_guide">Steam</a> or other platforms, but they have their own documentation. <br></p>
|
||||
<br>
|
||||
<h2>platform achievements, quest rewards: there's no difference </h2>
|
||||
<p><b>Achievement</b> 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 <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=2008271826">Transmission Received achievement</a> 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. <br></p>
|
||||
<br>
|
||||
<p>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 <a href="https://steamcommunity.com/stats/221910/achievements">The Stanley Parable's Go Outside achievement</a>: <i>don't play for five years</i>.) <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>blessfrey's achievement system doubles as the character/world progression system </h2>
|
||||
<p>Blessfrey feeds <i>every</i> in-game event through its achievement system, and its reward delivery is flexible enough not only to give a trophy but to cause <i>anything</i> 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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>what is it going to look like? </h2>
|
||||
<p>So realistically, how do I plan to use this system? <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>I'm not kidding when I say <i>everything</i> 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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>stay tuned </h2><br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<br>
|
||||
Last updated July 28, 2022 <br>
|
||||
<br>
|
||||
@@ -0,0 +1,42 @@
|
||||
<!--210218,210107-->
|
||||
<h1>the achievement system is the central nervous system of my game (part 1) </h1>
|
||||
april 2, 2021<br>
|
||||
#gamedev #gamedesign #achievements #world-progression #character-progression <br>
|
||||
<br>
|
||||
<p>What's the difference between winning a trophy or earning a quest reward for killing 10 rats? Probably nothing. <br></p>
|
||||
<img src="/static/img/ent/rpgachievement_samepicture.png" alt="(meme: “Corporate needs you to find the differences between this picture and this picture” for Dragon's Dogma achievements like “Defeated an evil eye” and “Defeated 3,000 enemies” vs. quest journal entries like “Slay 25 crows.”)"> <br>
|
||||
<p>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 <a href="https://partner.steamgames.com/doc/features/achievements/ach_guide">Steam</a> or other platforms, but they have their own documentation. <br></p>
|
||||
<br>
|
||||
<h2>platform achievements, quest rewards: there's no difference </h2>
|
||||
<p><b>Achievement</b> 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 <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=2008271826">Transmission Received achievement</a> 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. <br></p>
|
||||
<br>
|
||||
<p>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 <a href="https://steamcommunity.com/stats/221910/achievements">The Stanley Parable's Go Outside achievement</a>: <i>don't play for five years</i>.) <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>blessfrey's achievement system doubles as the character/world progression system </h2>
|
||||
<p>Blessfrey feeds <i>every</i> in-game event through its achievement system, and its reward delivery is flexible enough not only to give a trophy but to cause <i>anything</i> 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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>what is it going to look like? </h2>
|
||||
<p>So realistically, how do I plan to use this system? <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>I'm not kidding when I say <i>everything</i> 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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>stay tuned </h2><br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<br>
|
||||
Last updated July 28, 2022 <br>
|
||||
<br>
|
||||
@@ -0,0 +1,54 @@
|
||||
<!--210218,210107-->
|
||||
<h1>designing an achievement system (part 2) </h1>
|
||||
april 2, 2021<br>
|
||||
#gamedev #gamedesign #achievements <br>
|
||||
<br>
|
||||
<p>Designing an achievement system without any octopus tangles. <br></p>
|
||||
<img src="/static/img/ent/rpgachievement_octopus.png" alt="(illustration: an octopus tangling up UI, Dialog, and other game systems.)"> <br>
|
||||
<h2>a trusty mailman </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>Instead, Blessfrey's achievement system is broken into three main, self-contained pieces: event handlers, the Knowledge Base, and the MessageBus. <br></p>
|
||||
<br>
|
||||
<p>Let's define the terms: <br></p>
|
||||
<br>
|
||||
<ul>
|
||||
<li><b>knowledge:</b> each granular action or world event that contributes to earning an achievement </li>
|
||||
<li><b>key:</b> an id number that identifies a piece of knowledge </li>
|
||||
<li><b>topic:</b> just arrays of keys; used to categorize knowledge into groups </li>
|
||||
<li><b>event handlers:</b> they subscribe to topics, waiting for news that a specific piece of knowledge has been encountered </li>
|
||||
<li><b>Knowledge Base:</b> a singleton that stores all knowledge and facilitates the learning and forgetting of pieces of knowledge. <li><b>MessageBus:</b> a singleton that acts as a mailman; receives information about encountered knowledge and passes it off to all event handlers subscribed to that topic. </li>
|
||||
</ul><br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>an example</h2>
|
||||
<p>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. <br></p>
|
||||
<a target="_blank" href="/static/img/ent/rpgachievement_KnowledgeBaseDiagram.png">
|
||||
<img src="/static/img/ent/rpgachievement_KnowledgeBaseDiagram.png" alt="(diagram: a zigzagging depiction of the list below.)">
|
||||
</a><br>
|
||||
<ol>
|
||||
<li>(Event Handler) At ready, event handlers call the MessageBus and subscribe to topics. </li>
|
||||
<li>(Nurse's Office) The player enters the Nurse's Office. The room object sends itself to the MessageBus. </li>
|
||||
<li>(MessageBus) Receives room object + sends it to all event handlers subscribed to the "place_entered" topic. </li>
|
||||
<li>(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. </li>
|
||||
<li>(MessageBus) Receives the knowledge key + sends it to the Knowledge Base. </li>
|
||||
<li>(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. </li>
|
||||
<li>(MessageBus) Receives the knowledge key + sends it to all "learned" event handlers. </li>
|
||||
<li>(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. </li>
|
||||
</ol><br>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<br>
|
||||
<h2>summary</h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<ul>
|
||||
<li>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. </li>
|
||||
<li>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. </li>
|
||||
<li>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. </li>
|
||||
<li>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. </li>
|
||||
<br>
|
||||
<br>
|
||||
Last updated July 28, 2022 <br>
|
||||
<br>
|
||||
@@ -0,0 +1,54 @@
|
||||
<!--210218,210107-->
|
||||
<h1>designing an achievement system (part 2) </h1>
|
||||
april 2, 2021<br>
|
||||
#gamedev #gamedesign #achievements <br>
|
||||
<br>
|
||||
<p>Designing an achievement system without any octopus tangles. <br></p>
|
||||
<img src="/static/img/ent/rpgachievement_octopus.png" alt="(illustration: an octopus tangling up UI, Dialog, and other game systems.)"> <br>
|
||||
<h2>a trusty mailman </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>Instead, Blessfrey's achievement system is broken into three main, self-contained pieces: event handlers, the Knowledge Base, and the MessageBus. <br></p>
|
||||
<br>
|
||||
<p>Let's define the terms: <br></p>
|
||||
<br>
|
||||
<ul>
|
||||
<li><b>knowledge:</b> each granular action or world event that contributes to earning an achievement </li>
|
||||
<li><b>key:</b> an id number that identifies a piece of knowledge </li>
|
||||
<li><b>topic:</b> just arrays of keys; used to categorize knowledge into groups </li>
|
||||
<li><b>event handlers:</b> they subscribe to topics, waiting for news that a specific piece of knowledge has been encountered </li>
|
||||
<li><b>Knowledge Base:</b> a singleton that stores all knowledge and facilitates the learning and forgetting of pieces of knowledge. <li><b>MessageBus:</b> a singleton that acts as a mailman; receives information about encountered knowledge and passes it off to all event handlers subscribed to that topic. </li>
|
||||
</ul><br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>an example</h2>
|
||||
<p>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. <br></p>
|
||||
<a target="_blank" href="/static/img/ent/rpgachievement_KnowledgeBaseDiagram.png">
|
||||
<img src="/static/img/ent/rpgachievement_KnowledgeBaseDiagram.png" alt="(diagram: a zigzagging depiction of the list below.)">
|
||||
</a><br>
|
||||
<ol>
|
||||
<li>(Event Handler) At ready, event handlers call the MessageBus and subscribe to topics. </li>
|
||||
<li>(Nurse's Office) The player enters the Nurse's Office. The room object sends itself to the MessageBus. </li>
|
||||
<li>(MessageBus) Receives room object + sends it to all event handlers subscribed to the "place_entered" topic. </li>
|
||||
<li>(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. </li>
|
||||
<li>(MessageBus) Receives the knowledge key + sends it to the Knowledge Base. </li>
|
||||
<li>(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. </li>
|
||||
<li>(MessageBus) Receives the knowledge key + sends it to all "learned" event handlers. </li>
|
||||
<li>(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. </li>
|
||||
</ol><br>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<br>
|
||||
<h2>summary</h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<ul>
|
||||
<li>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. </li>
|
||||
<li>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. </li>
|
||||
<li>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. </li>
|
||||
<li>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. </li>
|
||||
<br>
|
||||
<br>
|
||||
Last updated July 28, 2022 <br>
|
||||
<br>
|
||||
@@ -0,0 +1,52 @@
|
||||
<!--220728,220811-->
|
||||
<h1>artfight 2022: team bloom </h1>
|
||||
august 25, 2022<br>
|
||||
#personal #artfight #art <br>
|
||||
<br>
|
||||
<h2>what's artfight? </h2>
|
||||
<b>Artfight</b> 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. <br></p>
|
||||
<br>
|
||||
<p>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! <br></p>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
<h2>my attacks </h2>
|
||||
<p>These are the characters I drew. <br></p>
|
||||
<img src="/static/img/ent/AF22_Abbey_Lune_Arcon_SanoAmaterasu_goddess.png" alt="(pixelart: Sano Amaterasu in a lupine field, playing her harp.)"><br>
|
||||
<img src="/static/img/ent/AF22_Abbey_Lune_Arcon_SanoAmaterasu_goddess_big.png" alt="(pixelart: same but larger size)"><br>
|
||||
My pixelart of Lune_Archon's Sano Amaterasu, a horned goddess with her harp. (75x75px, 45 colors) <br>
|
||||
<br>
|
||||
<img src="/static/img/ent/AF22_Abbey_Skye_0723_Aisu+LunaStarleaf.png" alt="(pixelart: Aisu, a blue winged man in a sweater standing behind his seated blonde wife with a pink shirt.)"><br>
|
||||
<img src="/static/img/ent/AF22_Abbey_Skye_0723_Aisu+LunaStarleaf_big.png" alt="(pixelart: same but larger size.)"><br>
|
||||
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) <br>
|
||||
<br>
|
||||
<img src="/static/img/ent/AF22_Abbey_EmmArrGus_Brody+Char.png" alt="(pixelart: Brody, a scruffy fisherman sitting on a bench with his anthro shark girlfriend Char.)"><br>
|
||||
<img src="/static/img/ent/AF22_Abbey_EmmArrGus_Brody+Char_big.png" alt="(pixelart: same but larger size.)"><br>
|
||||
My pixelart of EmmArrGus's fisherman Brody and his shark girlfriend Char. (150x123px, 54 colors) <br>
|
||||
<br>
|
||||
<img src="/static/img/ent/AF22_Abbey_BlackReshiram_Lilac_dragongirl.png" alt="(pixelart: a fluffy pink dragon girl named Lilac.)"><br>
|
||||
<img src="/static/img/ent/AF22_Abbey_BlackReshiram_Lilac_dragongirl_big.png" alt="(pixelart: same but larger size.)"><br>
|
||||
My pixelart of BlackReshiram's Lilac, a fluffy pink dragon girl. (51 colors) <br>
|
||||
<br>
|
||||
<h2>my defenses </h2>
|
||||
<p>These are my characters, drawn by other people. <br></p>
|
||||
<img src="/static/img/ent/AF22_CawfeeCakes_Abbey_Rune_sadlittleguy.png" alt="(image: a bust of a sad Rune in a dark hoodie)"><br>
|
||||
CawfeeCakes's bust of Rune. He's so sad, he's droopy! <br>
|
||||
<br>
|
||||
<img src="/static/img/ent/AF22_Lune_Archon_Abbey_TessaSkyeStMartin.jpeg" alt="(image: Tessa with a vampy lip!)"><br>
|
||||
Lune_Archon's bust of Tessa with a vampy lip! <br>
|
||||
<br>
|
||||
<img src="/static/img/ent/AF22_BlackReshiram_Abbey_floofdrago.png" alt="(image: Abbey in an adorable style!)"><br>
|
||||
BlackReshiram's illustration of Abbey in an adorable style! <br>
|
||||
<br>
|
||||
<br>
|
||||
<h2>do you recommend this game? </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<br>
|
||||
Last updated June 4, 2022 <br>
|
||||
<br>
|
||||
@@ -0,0 +1,52 @@
|
||||
<!--220728,220811-->
|
||||
<h1>artfight 2022: team bloom </h1>
|
||||
august 25, 2022<br>
|
||||
#personal #artfight #art <br>
|
||||
<br>
|
||||
<h2>what's artfight? </h2>
|
||||
<b>Artfight</b> 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. <br></p>
|
||||
<br>
|
||||
<p>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! <br></p>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
<h2>my attacks </h2>
|
||||
<p>These are the characters I drew. <br></p>
|
||||
<img src="/static/img/ent/AF22_Abbey_Lune_Arcon_SanoAmaterasu_goddess.png" alt="(pixelart: Sano Amaterasu in a lupine field, playing her harp.)"><br>
|
||||
<img src="/static/img/ent/AF22_Abbey_Lune_Arcon_SanoAmaterasu_goddess_big.png" alt="(pixelart: same but larger size)"><br>
|
||||
My pixelart of Lune_Archon's Sano Amaterasu, a horned goddess with her harp. (75x75px, 45 colors) <br>
|
||||
<br>
|
||||
<img src="/static/img/ent/AF22_Abbey_Skye_0723_Aisu+LunaStarleaf.png" alt="(pixelart: Aisu, a blue winged man in a sweater standing behind his seated blonde wife with a pink shirt.)"><br>
|
||||
<img src="/static/img/ent/AF22_Abbey_Skye_0723_Aisu+LunaStarleaf_big.png" alt="(pixelart: same but larger size.)"><br>
|
||||
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) <br>
|
||||
<br>
|
||||
<img src="/static/img/ent/AF22_Abbey_EmmArrGus_Brody+Char.png" alt="(pixelart: Brody, a scruffy fisherman sitting on a bench with his anthro shark girlfriend Char.)"><br>
|
||||
<img src="/static/img/ent/AF22_Abbey_EmmArrGus_Brody+Char_big.png" alt="(pixelart: same but larger size.)"><br>
|
||||
My pixelart of EmmArrGus's fisherman Brody and his shark girlfriend Char. (150x123px, 54 colors) <br>
|
||||
<br>
|
||||
<img src="/static/img/ent/AF22_Abbey_BlackReshiram_Lilac_dragongirl.png" alt="(pixelart: a fluffy pink dragon girl named Lilac.)"><br>
|
||||
<img src="/static/img/ent/AF22_Abbey_BlackReshiram_Lilac_dragongirl_big.png" alt="(pixelart: same but larger size.)"><br>
|
||||
My pixelart of BlackReshiram's Lilac, a fluffy pink dragon girl. (51 colors) <br>
|
||||
<br>
|
||||
<h2>my defenses </h2>
|
||||
<p>These are my characters, drawn by other people. <br></p>
|
||||
<img src="/static/img/ent/AF22_CawfeeCakes_Abbey_Rune_sadlittleguy.png" alt="(image: a bust of a sad Rune in a dark hoodie)"><br>
|
||||
CawfeeCakes's bust of Rune. He's so sad, he's droopy! <br>
|
||||
<br>
|
||||
<img src="/static/img/ent/AF22_Lune_Archon_Abbey_TessaSkyeStMartin.jpeg" alt="(image: Tessa with a vampy lip!)"><br>
|
||||
Lune_Archon's bust of Tessa with a vampy lip! <br>
|
||||
<br>
|
||||
<img src="/static/img/ent/AF22_BlackReshiram_Abbey_floofdrago.png" alt="(image: Abbey in an adorable style!)"><br>
|
||||
BlackReshiram's illustration of Abbey in an adorable style! <br>
|
||||
<br>
|
||||
<br>
|
||||
<h2>do you recommend this game? </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<br>
|
||||
Last updated June 4, 2022 <br>
|
||||
<br>
|
||||
@@ -0,0 +1,46 @@
|
||||
<!--210501,210402-->
|
||||
<h1>an enemy patrol in godot </h1>
|
||||
april 29, 2021<br>
|
||||
#ai #knowledgebase <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
<h2>fast explanation of the knowledge base </h2><br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
I discuss its design and use more in other articles. <br>
|
||||
<br>
|
||||
<h2>why involve the achievement system? </h2><br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
<h2>getting back into the patrol flow </h2><br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
<h2>pathfinding and moving </h2><br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
<h2>cleaning up </h2><br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
<h2>finally - the enemy patrol! </h2><br>
|
||||
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! <br>
|
||||
<br>
|
||||
<br>
|
||||
Last updated April 30, 2021 <br>
|
||||
<br>
|
||||
@@ -0,0 +1,41 @@
|
||||
<!--210610,200429-->
|
||||
<h1>how to attack a moving target </h1>
|
||||
july 8, 2021<br>
|
||||
#ai #character #combat #design #movement <br>
|
||||
<br>
|
||||
I'll share my tentative design for the attack-movement loop. <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>
|
||||
<center><a target="_blank" href="/static/img/ent/attack-movement-loop-diagram.png">
|
||||
<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>
|
||||
<br>
|
||||
Too fast: <br>
|
||||
<center><img src="/static/img/ent/attack-follow.gif" alt="(image: Angel follows slime)"></center>
|
||||
<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 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>
|
||||
<br>
|
||||
<br>
|
||||
Last Updated November 13, 2021
|
||||
<br>
|
||||
@@ -0,0 +1,34 @@
|
||||
<!--201217,200903-->
|
||||
<h1>what is blessfrey? </h1>
|
||||
august 6, 2020<br>
|
||||
#game <br>
|
||||
<br>
|
||||
<b>Blessfrey</b> is a 2D action RPG developed for PC by Chimchooree. <br>
|
||||
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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! <br></p>
|
||||
<br>
|
||||
<p>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?).<br></p>
|
||||
<br>
|
||||
<p>I'll put an HTML5 demo up here soon-ish. Keep checking! Learn more on the <a href="/demo">Blessfrey page</a>. <br></p>
|
||||
<br>
|
||||
<p><a href="/blessfrey-presskit">Presskit is available here.</a> <br></p>
|
||||
|
||||
<br>
|
||||
<a target="_blank" href="/static/img/ent/screenshot_June292019.png">
|
||||
<img src="/static/img/ent/screenshot_June292019.png" alt="(image: Lots of Angels and other characters at a shopping center)" width="500" height="278.66">
|
||||
</a><br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
Blessfrey has been lots of fun to work on. I hope you enjoy it once a demo and eventually a game drops. <br>
|
||||
<br>
|
||||
Last updated June 8, 2021 <br>
|
||||
<br>
|
||||
@@ -0,0 +1,43 @@
|
||||
<!--200806,210527-->
|
||||
<h1>blessfrey graphic updates + mockups </h1>
|
||||
december 24, 2020<br>
|
||||
#mockups #screenshots<br>
|
||||
<br>
|
||||
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.)<br>
|
||||
<br>
|
||||
<center>
|
||||
<a target="_blank" href="/static/img/ent/screenshot_August152018.jpeg">
|
||||
<img src="/static/img/ent/screenshot_August152018.jpeg" alt="(image: Cassia and Bad Cat on the pink carpet tilemap)" width="500" height="313">
|
||||
</a><br>
|
||||
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). <br>
|
||||
<br><br>
|
||||
<a target="_blank" href="/static/img/ent/screenshot_January132019.jpeg">
|
||||
<img src="/static/img/ent/screenshot_January132019.jpeg" alt="(image: Angel in a periwinkle room full of Bad Cats)" width="500" height="330.72">
|
||||
</a><br>
|
||||
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. <br>
|
||||
<br><br>
|
||||
<a target="_blank" href="/static/img/ent/screenshot_April232019.png">
|
||||
<img src="/static/img/ent/screenshot_April232019.png" alt="(image: Angel blasting a neighborhood coyote with fire)" width="500" height="375">
|
||||
</a><br>
|
||||
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. <br>
|
||||
<br><br>
|
||||
<a target="_blank" href="/static/img/ent/screenshot_May252019.png">
|
||||
<img src="/static/img/ent/screenshot_May252019.png" alt="(image: Angel and Chloe in front of a slanted house)" width="500" height="375.18">
|
||||
</a><br>
|
||||
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. <br>
|
||||
<br><br>
|
||||
<a target="_blank" href="/static/img/ent/screenshot_June292019.png">
|
||||
<img src="/static/img/ent/screenshot_June292019.png" alt="(image: Lots of Angels and other characters at a shopping center)" width="500" height="278.66">
|
||||
</a><br>
|
||||
June 29, 2019 - Trying a shopping center level now. It's reeally spaced apart. It's inspired by a real shopping center;; <br>
|
||||
<br><br>
|
||||
<a target="_blank" href="/static/img/ent/screenshot_July252020.png">
|
||||
<img src="/static/img/ent/screenshot_July252020.png" alt="(image: Angel and some slimes in a cavern)" width="500" height="281.04">
|
||||
</a><br>
|
||||
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. <br>
|
||||
<br><br>
|
||||
</center>
|
||||
<h2>you're up to date.</h2>
|
||||
<br>
|
||||
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."<br>
|
||||
<br>
|
||||
@@ -0,0 +1,117 @@
|
||||
<!--221006,220825-->
|
||||
<h1>church girls + animal parade: a collection in two parts </h1>
|
||||
july 28, 2022<br>
|
||||
#fashion #capsule-wardrobe #collection <br>
|
||||
<br>
|
||||
<p>The pandemic drags everything out, so these two collections run together. <br></p>
|
||||
<img src="/static/img/ent/everythingscomingtogether_home.png" alt="(screenshot: Blessfrey homepage)"><br>
|
||||
<br>
|
||||
<h2>two in one </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>church girls </h2>
|
||||
<p><p><b>Church girls</b> 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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
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 <i>me</i> but flavoring them with discordant sources of inspiration and sentimentality. I take each design's name from scattered memories. <br></p>
|
||||
<br>
|
||||
<h2>animal parade </h2>
|
||||
<img src="/static/img/fash/churchgirls+animalparade/hikari.png" alt="(screenshot: Hikari)">
|
||||
<div class="caption">(Hikari from Harvest Moon: Animal Parade, snapped from a <a href="https://www.youtube.com/watch?v=bNi5A047aoo&list=PLqNTe2pSF5Fr3JdFjksSbq0p4KtbcL9Fz">NaVi(ナビ) YouTube video</a>)</div>
|
||||
<p>I wasn't prepared to unlock a 00s fashion time capsule when I found a copy of <b>Animal Parade</b>. 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. <br></p>
|
||||
<br>
|
||||
<p>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.<br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
|
||||
|
||||
|
||||
|
||||
<h2>let's appreciate what we have! </h2>
|
||||
<p>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! <br></p>
|
||||
<br>
|
||||
<br>
|
||||
Last updated July 28, 2022 <br>
|
||||
<br>
|
||||
|
||||
|
||||
<br>
|
||||
<hr>
|
||||
|
||||
<hr>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<div class="verse">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. <br></div>
|
||||
<i>(Psalm 30:1-5)</i> <br>
|
||||
<br>
|
||||
<div class="verse">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. <br></div>
|
||||
<i>(Song of Solomon 2:10-12)</i> <br>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/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)">>
|
||||
<img src="/static/img/fash/churchgirls+animalparade/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)">
|
||||
</a><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 <a href="https://www.ebay.com/itm/124967194636?hash=item1d18a0100c:g:1K8AAOSw7PdhctB3">BB Dakota design</a>. 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. <br>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<b>Mock Turtle</b>: 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. <br>
|
||||
<br><br>
|
||||
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/capsulewardrobe_sketches1.png">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/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>
|
||||
<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>
|
||||
<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>
|
||||
<br><br>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/capsulewardrobe_sketches3.png">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/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>
|
||||
<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>
|
||||
<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 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. <br>
|
||||
<br>
|
||||
<h2>pattern-making and sewing so far</h2>
|
||||
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. <br>
|
||||
<br>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/capsulewardrobe_nakimushi_pattern.png">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/capsulewardrobe_nakimushi_pattern.png" alt="(image: pattern pieces for the button-down shirt and a ruler and curve tool. )" width="500">
|
||||
</a><br>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/capsulewardrobe_mockturtle_pattern.png">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/capsulewardrobe_mockturtle_pattern.png" alt="(image: pattern pieces for the button-down shirt and a ruler and curve tool. )" width="500">
|
||||
</a><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/capsulewardrobe_nakimushi.png">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/capsulewardrobe_nakimushi.png" alt="(image: incomplete button-down shirt with disconnected sleeves. )" width="500">
|
||||
</a><br>
|
||||
<h2>designer</h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h3>design statement</h3>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
<!--221006,220922,221103-->
|
||||
<h1>coroutines in godot engine </h1>
|
||||
august 11, 2022<br>
|
||||
#gamedev #coroutines #godotengine #programming #demo<br>
|
||||
<br>
|
||||
<p>Demonstrating coroutines in Godot Engine with a simple application. <br></p>
|
||||
<img src="/static/img/ent/stoplight_screenshot.png" alt="(screenshot: a simple tech demo with a stoplight and a walk button.)"><br>
|
||||
<br>
|
||||
<h2>defining coroutines </h2>
|
||||
<p>Coroutines are functions that, instead of running to completion, yield until certain criteria are met. Godot Engine supports coroutines through <a href="https://docs.godotengine.org/en/stable/classes/class_@gdscript.html#class-gdscript-method-yield">yield()</a>, <a href="https://docs.godotengine.org/en/stable/classes/class_gdscriptfunctionstate.html#class-gdscriptfunctionstate-method-resume">resume()</a>, and the <a href="https://docs.godotengine.org/en/stable/classes/class_gdscriptfunctionstate.html">GDScriptFunctionState</a> object. <br></p>
|
||||
<br>
|
||||
<h2>why use a coroutine? </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>stoplight example </h2>
|
||||
<p>As a simple demonstration, I made a stoplight. Follow along with my code on <a href="https://gitlab.com/chimchooree/stoplight">GitLab</a>. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<a target="_blank" href="/static/img/ent/stoplight_demonstration.gif">
|
||||
<img src="/static/img/ent/stoplight_demonstration.gif" alt="(gif: demonstration)" width="500" height="281.67">
|
||||
</a><br>
|
||||
<br>
|
||||
<h2>how is it written? </h2>
|
||||
<h3>node hierarchy </h3>
|
||||
<img src="/static/img/ent/stoplight_nodehierarchy.png" alt="(screenshot: node hierarchy in the editor. Root is a node named Main. It's children are TextureRect BG, AnimatedSprite Stoplight, Sprite WalkButton, and a Label. Stoplight's child is a Sprite. WalkButton's child is a TextureButton.)"><br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h3>animation</h3>
|
||||
<img src="/static/img/ent/stoplight_animationframes.png" alt="(image: the AnimatedSprite Stoplight has 4 animations - default (which is no light), green, red, and yellow.)"><br>
|
||||
<p>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. <br></p>
|
||||
<h3>the code </h3>
|
||||
This project has two scripts: Main.gd, which is attached to the root node, and Label.gd, which is attached to the Label. <br>
|
||||
<br>
|
||||
<h4>Main.gd - available on <a href="https://gitlab.com/chimchooree/stoplight/-/blob/master/Main.gd">GitLab</a></h4>
|
||||
<pre><code>extends Node
|
||||
|
||||
onready var stoplight = $Stoplight
|
||||
|
||||
func _ready():
|
||||
stoplight.play()
|
||||
|
||||
var result = wait(5, 'green')
|
||||
$WalkButton/TextureButton.connect('pressed', result, 'resume',
|
||||
['interrupted on green'], CONNECT_ONESHOT)
|
||||
yield(result, 'completed')
|
||||
|
||||
result = wait(5, 'yellow')
|
||||
$WalkButton/TextureButton.connect('pressed', result, 'resume',
|
||||
['interrupted on yellow'], CONNECT_ONESHOT)
|
||||
yield(result, 'completed')
|
||||
|
||||
result = wait(5, 'red')
|
||||
$WalkButton/TextureButton.connect('pressed', result, 'resume',
|
||||
['interrupted on red'], CONNECT_ONESHOT)
|
||||
yield(result, 'completed')
|
||||
|
||||
func wait(time, color):
|
||||
print('waiting for: ' + color)
|
||||
var result = yield(get_tree().create_timer(time), 'timeout')
|
||||
if result:
|
||||
print(result)
|
||||
stoplight.animation = color
|
||||
print('done: ' + color)
|
||||
|
||||
func _on_completed():
|
||||
print('completed')
|
||||
|
||||
func _on_WalkButton_gui_input(event):
|
||||
if event is InputEventMouseButton and event.pressed:
|
||||
print ("Walk Button not functioning.")</code></pre><br>
|
||||
<br>
|
||||
<h4>Label.gd - available on <a href="https://gitlab.com/chimchooree/stoplight/-/blob/master/Label.gd">GitLab</a></h4>
|
||||
<pre><code>extends Label
|
||||
var time_start = 0
|
||||
var time_now = 0
|
||||
|
||||
func _ready():
|
||||
time_start = OS.get_unix_time()
|
||||
set_process(true)
|
||||
|
||||
func _process(delta):
|
||||
time_now = OS.get_unix_time()
|
||||
var elapsed = time_now - time_start
|
||||
var minutes = elapsed / 60
|
||||
var seconds = elapsed % 60
|
||||
var str_elapsed = "%02d" % [seconds]
|
||||
text = str(str_elapsed)</code></pre><br>
|
||||
<br>
|
||||
<h2>how does it work? </h2>
|
||||
<p>At <span class="code">_ready()</span>, <span class="code">wait()</span> is assigned to the GDScriptFunctionState <span class="code">result</span> and is called for the first color, green. <span class="code">_ready()</span> yields until <span class="code">wait()</span> is completed. <br></p>
|
||||
<br>
|
||||
<p>The wait method yields for the given amount of seconds then sets the stoplight to the given color. <br></p>
|
||||
<br>
|
||||
<p>At <span class="code">wait()</span>'s completion, <span class="code">_ready()</span> calls <span class="code">wait()</span> for yellow, then red. Each is called one at a time, waiting for the color to complete before moving on. <br></p>
|
||||
<br>
|
||||
<h3>interrupting the stoplight </h3>
|
||||
<p>The Wait Button interrupts the wait times between colors. Before <span class="code">_ready()</span> yields, it connects the <span class="code">'pressed'</span> signal on the Wait Button. <br></p>
|
||||
<br>
|
||||
<p>If the Wait Button is clicked during <span class="code">wait()</span>'s yield, the GDScriptFunctionState <span class="code">result</span> resumes immediately, ignoring <span class="code">wait()</span>'s yield timer. This time, <span class="code">result</span> has a string arg <span class="code">"interrupted on green,"</span> so it will print the result, change the stoplight's color, then print <span class="code">"done: green."</span> The <span class="code">wait</span> method is complete, so <span class="code">_ready()</span> resumes and calls <span class="code">wait()</span> for the next color. <br></p>
|
||||
<br>
|
||||
<h2>play it yourself </h2>
|
||||
<iframe frameborder="0" src="https://itch.io/embed/1643944?dark=true" width="552" height="167"><a href="https://chimchooree.itch.io/stoplight">stoplight by chimchooree</a></iframe><br>
|
||||
<br>
|
||||
<h2>applications </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>Coroutines enable practical ways to improve the flow and interactivity of games, so practice the concept a lot! <br></p>
|
||||
<br>
|
||||
<br>
|
||||
Last updated July 31, 2022 <br>
|
||||
<br>
|
||||
@@ -0,0 +1,268 @@
|
||||
<!---->
|
||||
<h1>100q to develop dia </h1>
|
||||
? ??, 2022<br>
|
||||
#?? <br>
|
||||
<br>
|
||||
Random DeviantART questionnaire because why not? <br>
|
||||
<br>
|
||||
<h2>Mayor Dia De Luna </h2>
|
||||
<br>
|
||||
Filling out <a href="https://www.deviantart.com/iciaa">Iciaa</a>'s questionnaire for Dia because I'm feeling nostalgic for these overly long questionnaires. Also, Dia isn't that detailed of a character yet. <br>
|
||||
<br>
|
||||
<b>1. What is your character's name? Do they have a nickname? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>2. Is your character male or female? What is their sexuality? What role does it play in your story? </b><br>
|
||||
Female, straight. She isn't above manipulating guys' feelings to get what she wants. <br>
|
||||
<br>
|
||||
<b>3. How old is your character? Does their age matter to them emotionally or socially? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>4. How tall is your character? Does it affect them negatively, positively, or neutrally? </b><br>
|
||||
She is pretty sure her short stature prevents her from being taken seriously in some circles. <br>
|
||||
<br>
|
||||
<b>5. What is your character's body shape? Are they physically fit? What challenges or advantages does this present? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>6. Describe your character's facial features. What color are their eyes and hair? Be specific! </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>7. Do other people find your character physically attractive? Why or why not? </b><br>
|
||||
Yes. She is conventionally cute, polite, and knows how to push people's buttons. <br>
|
||||
<br>
|
||||
<b>8. What sort of clothing does your character wear? What colors are common? What does this style reflect? </b><br>
|
||||
Light, elegant colors, professional but feminine styles, propensity for sparkly or metallic fabrics like lurex or lame. <br>
|
||||
<br>
|
||||
<b>9. Does your character have any physical or mental disabilities? How does this affect your story? Is it a main point of your plot? </b><br>
|
||||
I'm not going to armchair diagnose her with anything, but she's a jerk. <br>
|
||||
<br>
|
||||
<b>10. What does your character do for money? If they are unemployed, how do they live? Does money matter to your character? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>11. Does your character have specified family members? Describe their relationship with their family. </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>12. What is your character's marital status? Are they involved in a relationship? How is this emotional taxation present in your story? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>13. Who are your character's closest friends? How do they know each other? How do they act around each other? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>14. Who are your character's minor enemies? Why do they not get along? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>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? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>16. How does your character speak, and what does their voice sound like? How does this reflect their personality, if at all? </b><br>
|
||||
Her voice is sweet and high-pitched like a bell. She took speech classes as a child, and it shows in her deliberate articulation. <br>
|
||||
<br>
|
||||
<b>17. Is there anything significant about your character's movement? Is it important? </b><br>
|
||||
She has perfect posture; she's good at walking silently and sneaking around; I don't know lol no. <br>
|
||||
<br>
|
||||
<b>18. Who does your character live with, or do they live alone? How does this arrangement affect your character's lifestyle? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>19. What traits does your character value in their friends? </b><br>
|
||||
Someone intelligent, someone who gets where she comes from, someone who respects her. <br>
|
||||
<br>
|
||||
<b>20. What are your character's main pet peeves? Does this play a role in your story? </b><br>
|
||||
Being belittled, being called cute, being carded for things. It's part of her impetus for purchasing a section of the Abyssal Cave. <br>
|
||||
<br>
|
||||
<b>21. Where does your character live? Are they happy? Describe the scenery. How does this affect your story? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>22. What is your character's opinion of the society they live in? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>23. Briefly summarize your character's childhood. </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>24. What are your character's darkest secrets? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>25. Has anyone close to your character died in the past? How did your character deal with this? Did it have a lasting impact? </b><br>
|
||||
Haven't thought about it. <br>
|
||||
<br>
|
||||
<b>26. What is your character's social status? Are they happy with it? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>27. Is your character a hero, a villain, or neither? How do they see themselves, as opposed to how others see them? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>28. Is your character conservative and disapproving of change, or liberal and willing to accept? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>29. It is said that every character has a fatal flaw. What is your character's? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>30. What are your character's special talents? Are they supernatural, or normal? Can few other people do them? </b><br>
|
||||
She is the only one with the GDP wand, stolen from the magic caves. She can control the hand of the market. <br>
|
||||
<br>
|
||||
<b>31. What specific activities does your character lack skill for? What challenges does this present? </b><br>
|
||||
Keeping secrets. Competitors and worse had an eye on Lucrest before she did. <br>
|
||||
<br>
|
||||
<b>32. What are your character's major wishes in life? These are not goals, simply things they wish would happen without work. </b><br>
|
||||
Her dad would approve of her relationship with Koda. <br>
|
||||
<br>
|
||||
<b>33. When your character looks in the mirror, what do they think of themselves? Is it positive or negative? </b><br>
|
||||
She's definitely nitpicking, rearranging her hair, touching up her makeup, but she's ultimately confident in her appearance. <br>
|
||||
<br>
|
||||
<b>34. What is your character's most precious material object? What would happen if they lost it? Why is it so important? </b><br>
|
||||
Her magic wand. Unthinkable. Without it, she'd actually have to formulate her own effective economic policies, and she's never tried that before. <br>
|
||||
<br>
|
||||
<b>35. Is your character more creative, or more logical? </b><br>
|
||||
Maybe creative? <br>
|
||||
<br>
|
||||
<b>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? </b><br>
|
||||
I feel like all her flaws are major. <br>
|
||||
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. <br>
|
||||
She also has maturity issues. If someone gets under her skin, she'll hold the pettiest <br>
|
||||
<br>
|
||||
<b>37. Is your character envied? By whom? Who does your character envy? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>38. Does your character deceive others often? Do they attempt to deceive themselves? How and why? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>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? </b><br>
|
||||
She's Episcopalian on the Sabbath but lacks a deep belief in God. <br>
|
||||
<br>
|
||||
<b>40. Describe your character's uncommon beliefs. Do they believe in fate? Karma? Multiple heavens and hells? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>41. Is your character well known or little known? Why? </b><br>
|
||||
She's as well-known as any random daughter of a high-ranking politician who has served in the government for 40 years. <br>
|
||||
<br>
|
||||
<b>42. Is your character more optimistic, or more pessimistic? </b><br>
|
||||
Aggressively pessimistic. So much so that she rarely relies on others or luck. <br>
|
||||
<br>
|
||||
<b>43. Does your character have a lot of hope? Are there points in your story in which they lose hope? </b><br>
|
||||
She feels like she's getting away with it. Cracks start to show over time. <br>
|
||||
<br>
|
||||
<b>44. What traits make your character unique? Do they have special abilities, or a unique facial feature? Be specific. </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>45. Is your character moody or even? Is there a cause? What are the consequences? </b><br>
|
||||
She keeps it together most of the time, but she gets into slapfights with her predestined enemies. <br>
|
||||
<br>
|
||||
<b>46. What is your character's mental capacity? Are they brilliant, or slow to learn? </b><br>
|
||||
She's very bright and quick on her feet, but she doesn't trust herself enough to actually use her brain. <br>
|
||||
<br>
|
||||
<b>47. Does your character sport charisma to influence others? How do they use this? If not, how does it affect them? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>48. What is your character's first memory? Why? What was its impact? Was it good or bad? Describe it in detail. </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>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? </b><br>
|
||||
Definitely. She tries to foresee how people will fit into Lucrest. She always does her professional best to make a good impression on everyone. <br>
|
||||
<br>
|
||||
<b>50. How does your character view authorities? How do they react to taking orders? </b><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<b>51. What are your character's goals? Long term? Short term? </b><br>
|
||||
Definitely CEO business magnate over an empire. Or something. Just so long as her father's finally proud. <br>
|
||||
<br>
|
||||
<b>52. What does your character do when they need to relax? Does it work? Does it affect those around them? </b><br>
|
||||
Secret retreat with Koda. Long walks along the scenic avenues of Abyssal Cave. Push the shopkeepers around. <br>
|
||||
<br>
|
||||
<b>53. What events in your character's past have left major effects? Why and how? Are they good impacts, or bad? </b><br>
|
||||
<br>
|
||||
<b>54. What major changes has your character gone through recently? How do the people around them react to this? </b><br>
|
||||
<br>
|
||||
<b>55. What are your character's bad habits? Are they major, like smoking and drinking, or minor, like chewing their nails? </b><br>
|
||||
<br>
|
||||
<b>56. What is your character a perfectionist about? </b><br>
|
||||
<br>
|
||||
<b>57. Who are your character's distant family? Does this play a role in your story? </b><br>
|
||||
<br>
|
||||
<b>58. What recent events have strengthened or weakened your character? What do they think of their changes? </b><br>
|
||||
<br>
|
||||
<b>59. Who were your character's childhood friends? Do they play a role in your story? How? </b><br>
|
||||
<br>
|
||||
<b>60. What major things does your character ignore? Purposefully? Or are they simply ignorant? </b><br>
|
||||
<br>
|
||||
<b>61. What are your character's major fears? How does this challenge them? </b><br>
|
||||
<br>
|
||||
<b>62. What does your character want that is unusual? </b><br>
|
||||
<br>
|
||||
<b>63. What does your character like that is unusual? </b><br>
|
||||
<br>
|
||||
<b>64. What is your character's favorite color? Does this reflect their personality? How? </b><br>
|
||||
<br>
|
||||
<b>65. Is your character ahead of their time? Behind? At the correct pace? </b><br>
|
||||
<br>
|
||||
<b>66. Does your character have much free time? What do they do with it? </b><br>
|
||||
<br>
|
||||
<b>67. Does your character have goals that are unattainable? </b><br>
|
||||
<br>
|
||||
<b>68. How does your character dream while they are asleep? Vividly? Rarely? Do they frequently have nightmares? Describe some of their dreams. </b><br>
|
||||
<br>
|
||||
<b>69. Does your character have health problems? Do they need medication or medical care? How does this challenge them? </b><br>
|
||||
<br>
|
||||
<b>70. What are your character's inner fears? Do they tell people about them? Why or why not? </b><br>
|
||||
<br>
|
||||
<b>71. What is your character's taste in food? Is this specific to the setting of your story? How does it affect your story? </b><br>
|
||||
<br>
|
||||
<b>72. Is your character more selfish, or more generous? </b><br>
|
||||
<br>
|
||||
<b>73. What is your character's stress level? Why? What do they do to resolve it? </b><br>
|
||||
<br>
|
||||
<b>74. What effects do social pressures, like money and the media, have on your character? </b><br>
|
||||
<br>
|
||||
<b>75. Is your character interested in a more lavish lifestyle, or simple? </b><br>
|
||||
<br>
|
||||
<b>76. What weather does your character prefer? Why? How do they react when that weather is not present? </b><br>
|
||||
<br>
|
||||
<b>77. What is your character's favorite time of day? Why? </b><br>
|
||||
<br>
|
||||
<b>78. Of what importance are holidays to your character? Which holidays? </b><br>
|
||||
<br>
|
||||
<b>79. What odd traits belonging to your character tend to drive people away? Why? </b><br>
|
||||
<br>
|
||||
<b>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? </b><br>
|
||||
<br>
|
||||
<b>81. Does your character place significant value in common sense? Does your character have a lot of common sense? </b><br>
|
||||
<br>
|
||||
<b>82. What is your character's taste in music? Why? Do they make music? </b><br>
|
||||
<br>
|
||||
<b>83. Is your character satisfied with their life? Why or why not? </b><br>
|
||||
<br>
|
||||
<b>84. What motivates your character to make changes and move forward in life? </b><br>
|
||||
<br>
|
||||
<b>85. What are your character's least favorite activities? </b><br>
|
||||
<br>
|
||||
<b>86. List several activities that your character will refuse to do and explain. </b><br>
|
||||
<br>
|
||||
<b>87. What does your character do to relieve boredom? </b><br>
|
||||
<br>
|
||||
<b>88. Is your character more lazy, or more studious? </b><br>
|
||||
<br>
|
||||
<b>89. Is your character more athletic and active, or more lazy? </b><br>
|
||||
<br>
|
||||
<b>90. Is your character social, or a loner? </b><br>
|
||||
<br>
|
||||
<b>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? </b><br>
|
||||
<br>
|
||||
<b>92. What does your character find beautiful? What does your character find ugly? </b><br>
|
||||
<br>
|
||||
<b>93. What are your character's redeeming traits? </b><br>
|
||||
<br>
|
||||
<b>94. Is your character easily distracted? If so, why, and what challenges does this present? If not, how does this help them? </b><br>
|
||||
<br>
|
||||
<b>95. How does your character interact with nature? Why? </b><br>
|
||||
<br>
|
||||
<b>96. What are the major lasting effects that your character will tend to have on other people, if any? </b><br>
|
||||
<br>
|
||||
<b>97. How self-centered is your character? Why? What do other people think of this? </b><br>
|
||||
<br>
|
||||
<b>98. Does your character judge people, and on what premises? Race? Gender? Age? </b><br>
|
||||
<br>
|
||||
<b>99. Briefly summarize the major events in the time line of your character's life. </b><br>
|
||||
<br>
|
||||
<b>100. Finally, and perhaps most importantly, what is your character's role in the story? </b><br>
|
||||
<br>
|
||||
<br>
|
||||
Last updated August 31, 2022 <br>
|
||||
<br>
|
||||
@@ -0,0 +1,59 @@
|
||||
<!--221006,220811,220922-->
|
||||
<h1>eyeshadow singles heading into Fall '22 </h1>
|
||||
july 28, 2022<br>
|
||||
#offtopic #makeup <br>
|
||||
<br>
|
||||
<p>Fall colors and blue. <br></p>
|
||||
<br>
|
||||
<h2>my fall </h2>
|
||||
<p>The weather may be staying hot through the day, but every morning dip has me feeling <i>this</i> 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. <br></p>
|
||||
<br>
|
||||
<p>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?) <br></p>
|
||||
<img src="/static/img/ent/-.png" alt="(palette)"><br>
|
||||
<img src="/static/img/ent/-.png" alt="(swatches)"><br>
|
||||
<br>
|
||||
<h3>discoveries</h3>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>Eyeshadows in the <a href="https://www.etsy.com/shop/anothersoul">anothersoul (Etsy)</a> essential 8-pan palette <br></p>
|
||||
<ul>
|
||||
<li>Sydney Grace - Beyond (matte dark brown) </li>
|
||||
<li>Sydney Grace - Chocolate Bar (shimmery dark brown) </li>
|
||||
<li>ColourPop - Limoncello (matte butterscotch orange from the Lil Ray of Sunshine palette) </li>
|
||||
<li>Terra Moons - Sundazed (black-based multichrome that shifts to every color between coppery red to burnished green) </li>
|
||||
<li>Sydney Grace - Queen of Hearts (shimmery red) </li>
|
||||
<li>Sydney Grace - Ivy League (matte olive) </li>
|
||||
<li>Sydney Grace - Red Chameleon (duochrome that shifts green but buffs out brick red) </li>
|
||||
<li>Sydney Grace - Green Mist (white shimmer that shifts green) </li>
|
||||
</ul>
|
||||
<br>
|
||||
<h2>blue indulgence </h2>
|
||||
<p>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? <br></p>
|
||||
<img src="/static/img/ent/-.png" alt="(palette)"><br>
|
||||
<img src="/static/img/ent/-.png" alt="(swatches)"><br>
|
||||
<br>
|
||||
<h3>discoveries</h3>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>Eyeshadows in the Sydney Grace 9-pan palette <br></p>
|
||||
<ul>
|
||||
<li>Sydney Grace - Super Star (shimmery silvery blue) </li>
|
||||
<li>Sydney Grace - Boy Crazy (satiny cobalt blue) </li>
|
||||
<li>Sydney Grace - Indiana Love (matte navy) </li>
|
||||
<li>Sydney Grace - Below Zero (shimmery indigo with a purple shift) </li>
|
||||
<li>Sydney Grace - Perfect Storm (matte pastel blue) </li>
|
||||
<li>Sydney Grace - Deep Waters (shimmery navy) </li>
|
||||
<li>Looxi Beauty - Luna (not an eyeshadow but an icy blue highlighter) </li>
|
||||
</ul>
|
||||
<br>
|
||||
<h2>custom palettes over premade any day! </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h2>disclaimer </h2>
|
||||
<p>I buy my own makeup and don't have any affiliation with the brands mentioned. <br></p>
|
||||
<br>
|
||||
<br>
|
||||
Last updated October 10, 2022 <br>
|
||||
<br>
|
||||
@@ -0,0 +1,124 @@
|
||||
<!--210429,210402-->
|
||||
<h1>follow a moving target </h1>
|
||||
june 10, 2021<br>
|
||||
#ai #character #movement <br>
|
||||
<br>
|
||||
After redesigning the movement system to support <a href="../entries/210429">patrols</a>, I realized the path remains static even if the target moves. Time to tweak the design again. <br>
|
||||
<br>
|
||||
<h2>what must be done </h2><br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
<h2>upgrading the movement system </h2><br>
|
||||
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. <br>
|
||||
<br>
|
||||
Before, it only set the next waypoint and built a path between the character and the waypoint. <br>
|
||||
<br>
|
||||
<h3>old path_to_object </h3><br>
|
||||
<code># Set Dots Between Character + Given Object<br>
|
||||
func path_to_object(goal):<br>
|
||||
if goal.is_in_group("waypoint"):<br>
|
||||
set_next(goal)<br>
|
||||
else: <br>
|
||||
room.add_waypoint(goal.get_gpos())<br>
|
||||
path_to_position(goal.get_gpos())<br>
|
||||
<br>
|
||||
# Set Dots Between Character + Given Position<br>
|
||||
func path_to_position(goal_pos):<br>
|
||||
set_dots(find_dots_pos(goal_pos))</code><br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
<h3>the character receives a waypoint instead of the target, so he is unaware of his target's movement </h3><br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
<h3>constantly updating the path overwhelms the character </h3><br>
|
||||
If the target is moving, pathfinding needs to be reassessed periodically. However, it isn't as simple as calling the pathfinding method every tick. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
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... <br>
|
||||
<br>
|
||||
<h3>new path_to_object </h3><br>
|
||||
# Set Dots Between Character + Given Object<br>
|
||||
func path_to_object(goal):<br>
|
||||
# Next Waypoint<br>
|
||||
set_next(goal)<br>
|
||||
var goal_pos = goal.get_gpos()<br>
|
||||
var dots = get_dots()<br>
|
||||
var cd = get_current_dot()<br>
|
||||
# If no current dot, set dots between user and goal<br>
|
||||
if cd == null:<br>
|
||||
set_dots(find_dots_pos(get_gpos(), goal_pos))<br>
|
||||
MessageBus.publish("moved", self)<br>
|
||||
return<br>
|
||||
var last_dot = cd if len(dots) == 0 else dots.back()<br>
|
||||
# Make sure goal has moved significantly<br>
|
||||
if goal_pos.distance_to(last_dot) <= get_intimate_space():<br>
|
||||
return<br>
|
||||
# If goal moved further away<br>
|
||||
if get_gpos().distance_to(last_dot) > find_distance(goal):<br>
|
||||
# If no dots, generate new ones<br>
|
||||
if len(dots) == 0:<br>
|
||||
set_dots(find_dots_pos(get_gpos(), goal_pos))<br>
|
||||
MessageBus.publish("moved", self)<br>
|
||||
return<br>
|
||||
# If dots, only recalculate part of the path<br>
|
||||
var near = get_dots()[0]<br>
|
||||
for dot in get_dots():<br>
|
||||
if dot.distance_to(goal_pos) < near.distance_to(goal_pos):<br>
|
||||
near = dot<br>
|
||||
var i = get_dots().find(near)<br>
|
||||
set_dots(get_dots().slice(0, i - 1) +<br> find_dots_pos(get_dots()[i-1], goal_pos))<br>
|
||||
# If goal moved closer<br>
|
||||
else:<br>
|
||||
set_dots(find_dots_pos(last_dot, goal_pos))<br>
|
||||
MessageBus.publish("moved", self)</code><br>
|
||||
<br>
|
||||
<h2>testing </h2><br>
|
||||
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.<br>
|
||||
<br>
|
||||
<code>var time = 0
|
||||
|
||||
func _process(delta):
|
||||
time += delta
|
||||
var mod = Vector2(delta, cos(time) * 2)
|
||||
set_gpos(get_gpos() + mod)</code><br>
|
||||
<br>
|
||||
<br>
|
||||
<h3>the character never stops autopathing, even after picking up the item </h3>
|
||||
<br>
|
||||
Okay, one more fix, then I'll have it. <br>
|
||||
<br>
|
||||
Previously, the movement AI relied on conditional statements in its process to detemine arrival at the goal. Instead, the <a href="../entries/210402">achievement system</a> 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. <br>
|
||||
<br>
|
||||
Moving the conditional statements from _process to the function that handles the outcome of movement events. <br>
|
||||
<br>
|
||||
<h3>new result code </h3><br>
|
||||
<code>#enum MOVED {ARRIVED, NOT_MOVING, TOO_SLOW, WRONG_DIRECTION}<br>
|
||||
func handle_moved_result(result, new_user):<br>
|
||||
if result == 0:<br>
|
||||
new_user.think("UserMove/Arrived")<br>
|
||||
if get_user().get_target() != null:<br>
|
||||
if track:<br>
|
||||
if get_user().find_distance_to_target() <= get_user().get_intimate_space():<br>
|
||||
emit_signal('item_arrived')<br>
|
||||
get_waypoints().pop_front()<br>
|
||||
new_user.clear_movement()<br>
|
||||
return</code><br>
|
||||
<br>
|
||||
<h2>just a few changes makes a big difference </h2><br>
|
||||
<center>
|
||||
<img src="/static/img/ent/follow.gif" alt="(image: Angel adjusts her pathfinding to follow a moving item.)"></center><br>
|
||||
<br>
|
||||
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! <br>
|
||||
<br>
|
||||
(I haven't considered moving items before. They're pretty cool. It's like catching butterflies in Skyrim.) <br>
|
||||
<br>
|
||||
Last Updated October 29, 2021
|
||||
<br>
|
||||
@@ -0,0 +1,102 @@
|
||||
<!--200806,201015-->
|
||||
<h1>playing FlightRising with spreadsheets </h1>
|
||||
may 13, 2021<br>
|
||||
#offtopic #spreadsheets #petsites <br>
|
||||
My dragon breeding spreadsheet is really coming together, so I thought sharing it would be a fun break from AI. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<h2>spreadsheets </h2><br>
|
||||
<br>
|
||||
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 <a href="/download/fr_projects.ods">Calc</a> or <a href="/download/fr_projects.xlsx">Excel</a>. I use <a href="https://www.libreoffice.org/discover/calc/">LibreOffice Calc</a> 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. <br>
|
||||
<h3>individual dragons </h3><br>
|
||||
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. <br>
|
||||
<center><img src="/static/img/ent/fr_singles.png" alt="(image: screenshot from the Singles tab.)" style="display:block;" width="500"></center> <br>
|
||||
<h4>sex </h4><br>
|
||||
The sex field is limited to ♂ or ♀ and can be selected using a dropdown menu. The content will color the cell blue or pink. <br>
|
||||
<br>
|
||||
I made the dropdown menu through Data Validity (Data > Validity...). <br>
|
||||
<center><img src="/static/img/ent/FR_datavalidity.jpg" alt="(image: Validity>Criteria. Allow: Cell range. Source: $Calculator.$i$3.$I$4.)" width="500"></center> <br>
|
||||
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). <br>
|
||||
<center><img src="/static/img/ent/fr_conditionalformatting.png" alt="(image: Managing Conditional Formatting. Condition 1: cell value is equal to '♀'. .)" width="500"></center> <br>
|
||||
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. <br>
|
||||
<center><img src="/static/img/ent/fr_newstyle.png" alt="(image: Apply Style>New Style...>Background.)" width="500"></center> <br>
|
||||
<h4>breeding status </h4><br>
|
||||
Depending on the breed's cooldown and date of last breeding, the cell will say "Ready" or "Cooldown" in green or red. <br>
|
||||
<center><img src="/static/img/ent/fr_status_formula.png" alt="(image: =IF(H2<=TODAY(),'Ready','Cooldown'))"></center> <br>
|
||||
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. <br>
|
||||
<h4>breed </h4><br>
|
||||
The breed, like the sex, is a Data Validity-determined dropdown menu. The list of breeds is sourced from a column in Calculator. <br>
|
||||
<center><img src="/static/img/ent/fr_breeds.png" alt="(image: The Calculator Sheet has a column for the Breed and a column for its Cooldown.)" width="500"></center> <br>
|
||||
<h4>breed's cooldown </h4><br>
|
||||
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. <br>
|
||||
<center><img src="/static/img/ent/fr_vlookup.png" alt="(image: =VLOOKUP($D2,$Calculator.$G$3:$H$18,2,0))"></center> <br>
|
||||
<h4>date bred </h4><br>
|
||||
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. <br>
|
||||
<h4>nest ready </h4><br>
|
||||
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. <br>
|
||||
<center><img src="/static/img/ent/fr_nestready.png" alt="(image: =F2+6)"></center> <br>
|
||||
<h4>date ready to breed again </h4>
|
||||
This is another simple formula - the date bred + the cooldown. <br>
|
||||
<center><img src="/static/img/ent/fr_dateready.png" alt="(image: =F2+E2)"></center> <br>
|
||||
<h4>cooldown countdown </h4><br>
|
||||
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. <br>
|
||||
<center><img src="/static/img/ent/fr_cooldown.png" alt="(image: =IF($H2-TODAY()>0,CONCAT($H2-TODAY(),' days'),''))"></center> <br>
|
||||
<h3>dragon pairs </h3><br>
|
||||
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. <br>
|
||||
<center><img src="/static/img/ent/fr_pairs.png" alt="(image: screenshot of the Pairs sheet)" width="500"></center> <br>
|
||||
<h4>project</h4> <br>
|
||||
I add the project, so I know my goal for the pair. It's helpful when prioritizing or sorting. <br>
|
||||
<h4>male + female</h4> <br>
|
||||
I add the dragon pair's names here. Data validity makes sure the name corresponds to a dragon from the Singles sheet. <br>
|
||||
<center><img src="/static/img/ent/fr_dragonvalidity.png" alt="(image: Data Validity by cell range. Source: $Singles.$A:$Singles.$A.)" width="500"></center><br>
|
||||
<h4>status </h4> <br>
|
||||
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. <br>
|
||||
<center><img src="/static/img/ent/fr_status.png" alt="(image: =IF(AND((VLOOKUP($B2,$Singles.$A:$C,3,)='Ready'),(VLOOKUP(C2,$Singles.A:C,3,)='Ready')),'Ready','Cooldown'))"></center> <br>
|
||||
<h4>date ready </h4><br>
|
||||
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. <br>
|
||||
<center><img src="/static/img/ent/fr_ready.png" alt="(image: =MAX(VLOOKUP($B3,$Singles.$A:$H,8,),VLOOKUP($C3,$Singles.$A:$H,8,)))"></center> <br>
|
||||
<h4>countdown </h4><br>
|
||||
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. <br>
|
||||
<center><img src="/static/img/ent/fr_countdown.png" alt="(image: =IF($E2-TODAY()>0,CONCAT($E2-TODAY(), ' days'),''))"></center> <br>
|
||||
<h4>colors + genes</h4> <br>
|
||||
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. <br>
|
||||
<center><img src="/static/img/ent/fr_genetics.png" alt="(image: a screenshot from FlightRising of a dragon's genetics.)"></center> <br>
|
||||
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. <br>
|
||||
<h4>best son + best daughter</h4> <br>
|
||||
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. <br>
|
||||
<h3>calculator + data </h3><br>
|
||||
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. <br>
|
||||
<center><img src="/static/img/ent/fr_calculator.png" alt="(image: screenshot of the Calculator sheet.)" width="500"></center> <br>
|
||||
<h4>colors </h4><br>
|
||||
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 <a href="https://flightrising.com/main.php?p=lair&tab=userpage&id=66886">Rauxel</a> and also contains the original, much smaller color range. <br>
|
||||
<center><img src="/static/img/ent/fr_colorwheel.png" alt="(image: the color wheel by Rauxel.)" width="500"></center> <br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<center><img src="/static/img/ent/fr_magnitude.png" alt="(image: =ABS(MATCH($C3,$F$2:$F$178, )-MATCH($B3,$F$2:$F$178, )))" width="500"></center> <br>
|
||||
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. <br>
|
||||
<center><img src="/static/img/ent/fr_direction.png" alt="(image: =IF((MATCH($C3,$F$2:$F$178,)-MATCH($B3,$F$2:$F$178,))>0,'↓','↑'))"></center> <br>
|
||||
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. <br>
|
||||
<h4>breeding info</h4> <br>
|
||||
These are the columns used by the breeding pages for validity and VLOOKUP. <br>
|
||||
<h4>breeding day calculator</h4> <br>
|
||||
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. <br>
|
||||
<h3>project sheets </h3><br>
|
||||
Here I list the dragons by project, tracking their genealogy, sex, colors, genes, and average distance from goal colors. <br>
|
||||
<center><img src="/static/img/ent/fr_project.png" alt="(image: screenshot of the Boyfriend project sheet)" width="500"></center> <br>
|
||||
<h4>father + mother </h4><br>
|
||||
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. <br>
|
||||
<h4>sex </h4><br>
|
||||
Male or female, with colored conditional formatting so I can scan by sex more easily. <br>
|
||||
<h4>primary, secondary, + tertiary colors </h4><br>
|
||||
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. <br>
|
||||
<h4>gene 1, 2, + 3 </h4><br>
|
||||
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. <br>
|
||||
<h4>average </h4><br>
|
||||
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. <br>
|
||||
<h2>that's all~ </h2>
|
||||
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! <br>
|
||||
<center><img src="/static/img/ent/fr_dragons.png" alt="(image: Sand (male Sand Giraffe / Shadow Toxin / Rose Smoke Fae), Abbey (male Platinum Skink / Smoke Peregrine / Pearl Basic Tundra), Rune (male Eldritch Sphinxmoth / Eldritch Hawkmoth / Eldritch Runes Veilspun with eternal youth and dark sclera), Laguna (female Honeydew Cherub / Sanddollar Butterfly / Marigold Firefly Skydancer.)" width="500"></center>
|
||||
<br>
|
||||
Last updated May 26, 2021 <br>
|
||||
<br>
|
||||
@@ -0,0 +1,115 @@
|
||||
<!--230112,230601-->
|
||||
<h1>gator swimsuit </h1>
|
||||
august 25, 2022<br>
|
||||
#fashion #swimwear #design-process #animalparade <br>
|
||||
<br>
|
||||
<p>A swimsuit designed just for me. <br></p>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/gator.jpg">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/gator.jpg" alt="(photo: quick photo of the finished garment, hanging against my door.)">
|
||||
</a><br>
|
||||
<br>
|
||||
<h2>concept </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>All the designs are named after important animals in my life. The swimsuit is named <i>Gator</i> because of the gator who lives in my swampy subdivision. I've seen him during walks. Absolutely unnerving. <br>
|
||||
<br>
|
||||
<h2>design process </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h3>one-and-a-half-piece </h3>
|
||||
<p>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. <br></p>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/collage.png">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/collage.png" alt="(collage: variety of swimsuits from online stores)">
|
||||
</a><br>
|
||||
<p>I iterated over the concept in sketches a little. <br></p>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/sketch-twopiece.jpg">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/sketch-twopiece.jpg" alt="(sketch: a series of rough pencil croquis with different variations of two-pieces.)">
|
||||
</a><br>
|
||||
<p>Ideas: <br></p>
|
||||
<ul>
|
||||
<li>Connecting the top and bottom with interlocked tricot loops, criss-crossing over the belly and lower back. </li>
|
||||
<li>Overlapping hanging petals of tricot over a tiered swim skirt. </li>
|
||||
<li>Long-sleeve mock turtleneck shirt under a spaghetti strap wrap one piece</li>
|
||||
<li>Flowing panel under the bust line, worn over a tiered swim skirt</li>
|
||||
<li>Ruched bodysuit worn under a structured balconette tank</li>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/sketch-chiffon.jpg">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/sketch-chiffon.jpg" alt="(sketch: realized version)">
|
||||
</a><br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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?) <br></p>
|
||||
<br>
|
||||
<p>Back to the drawing board! <br></p>
|
||||
<br>
|
||||
<h3>made for me</h3>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<ul>
|
||||
<li>I want less skin showing, but I want to feel the water on some part of my body. </li>
|
||||
<li>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. </li>
|
||||
<li>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. <li>
|
||||
<li>Mock turtlenecks are just the best. I have a long neck, so they look good on me. </li>
|
||||
</ul>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/sketch-raglan.jpg">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/sketch-raglan.jpg" alt="(sketch: realized version)">
|
||||
</a><br>
|
||||
<p>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 <i>so</i> much fabric. <br></p>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/ZuhairMurad_PreFall2019_00015-Zuhair-Paris-Pre-Fall-19-credit-Emmanuel-Giraud.jpg">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/ZuhairMurad_PreFall2019_00015-Zuhair-Paris-Pre-Fall-19-credit-Emmanuel-Giraud.jpg" alt="(fashion photography: two looks. One is a bodycon black dress with a Mandarin collar, plunging neckline, and fringe ’sleeves’, topped with a textured black obi belt with long tassels. The other is cropped black dress pants worn with a garment at the intersection of tailored blazer and kimono, with fringe falling from the shoulders, topped with a black velvet obi belt tied with tassels. )">
|
||||
</a><br>
|
||||
<i>Zuhair Murad presented some of my favorite obi belt looks during the Pre-Fall 2019 show. Photo credit to Emmanuel Giraud. <br>(Wait, a design like this wouldn't take as much fabric...Hmmm.) <br></i>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/final.jpg">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/final.jpg" alt="(sketch: realized version)">
|
||||
</a><br>
|
||||
<p>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. <br></p>
|
||||
<h2>material</h2>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/fabricshopping.png">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/fabricshopping.png" alt="(screenshot: pastel seafoam, mauve, and sulfur neoprene with a swamp print)">
|
||||
</a><br>
|
||||
<i><a href="https://www.moodfabrics.com/mystic-swamp-digitally-printed-stretch-neoprene-scuba-knit-307451">Mood Fabric's Mystic Swamp Digitally Printed Stretch Neoprene/Scuba Knit</a></i> <br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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 <i>never</i> 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 <a href="https://www.pantone.com/articles/past-colors-of-the-year/color-of-the-year-2021">PANTONE's 2021 Color of the Year</a>. I <i>adore</i> this fabric. <br></p>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/neoprene.jpg">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/neoprene.jpg" alt="(photo: my cut of neoprene)">
|
||||
</a><br>
|
||||
<p>I paired it with a seafoam invisible zipper, pastel rainbow thread, and gray thread. <br></p>
|
||||
<h2>pattern-making</h2>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/pattern.jpg">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/pattern.jpg" alt="(photo: my paper pattern pieces, hanging with the rest of my patterns)">
|
||||
</a><br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/tieredpanels.png">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/tieredpanels.png" alt="(MS paint sketch: panels underlay the tiers. In-between each panel of the skirt, a gathered tier begins. This contrasts economically with a skirt where every tier begins at the waist.)">
|
||||
</a><br>
|
||||
<h2>cut and sew </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<h2>outcome</h2>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/gator.jpg">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/gator.jpg" alt="(photo: quick photo of the finished garment, hanging against my door.)">
|
||||
</a><br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<br>
|
||||
Last updated July 31, 2022
|
||||
<br>
|
||||
@@ -0,0 +1,105 @@
|
||||
<!--210610,200429-->
|
||||
<h1>gator swimsuit </h1>
|
||||
october 20, 2022<br>
|
||||
#fashion #swimwear #design-process #animalparade <br>
|
||||
<br>
|
||||
<h2>concept </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>All the designs are named after important animals in my life. The swimsuit is named <i>Gator</i> because of the gator who lives in my subdivision. I've seen him during walks. Absolutely unnerving. <br>
|
||||
<br>
|
||||
<h2>design process </h2>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<h3>1.5 piece </h3>
|
||||
<p>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. <br></p>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/collage.png">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/collage.png" alt="(collage: variety of swimsuits from online stores)">
|
||||
</a><br>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/sketch-twopiece.jpg">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/sketch-twopiece.jpg" alt="(sketch: a series of rough pencil croquis with different variations of two-pieces.)">
|
||||
</a><br>
|
||||
<p>Ideas: <br></p>
|
||||
<ul>
|
||||
<li>Connecting the top and bottom with interlocked tricot loops, criss-crossing over the belly and lower back. </li>
|
||||
<li>Overlapping hanging petals of tricot over a tiered swim skirt. </li>
|
||||
<li>Long-sleeve mock turtleneck shirt under a spaghetti strap wrap one piece</li>
|
||||
<li>flowing panel under the bust line, worn over a tiered swim skirt</li>
|
||||
<li>Ruched bodysuit worn under a structured balconette tank</li>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/sketch-chiffon.jpg">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/sketch-chiffon.jpg" alt="(sketch: realized version)">
|
||||
</a><br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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! <br></p>
|
||||
<p>Back to the drawing board! <br></p>
|
||||
<br>
|
||||
<h3>made for me</h3>
|
||||
<p>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! <br></p>
|
||||
<br>
|
||||
<ul>
|
||||
<li>I want less skin showing, but I want to feel the water on some part of my body. </li>
|
||||
<li>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. </li>
|
||||
<li>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. <li>
|
||||
<li>Mock turtlenecks are just the best. I have a long neck, so they look good on me. </li>
|
||||
</ul>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/sketch-raglan.jpg">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/sketch-raglan.jpg" alt="(sketch: realized version)">
|
||||
</a><br>
|
||||
<p>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 <i>so</i> much fabric. <br></p>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/ZuhairMurad_PreFall2019_00015-Zuhair-Paris-Pre-Fall-19-credit-Emmanuel-Giraud.jpg">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/ZuhairMurad_PreFall2019_00015-Zuhair-Paris-Pre-Fall-19-credit-Emmanuel-Giraud.jpg" alt="(fashion photography: two looks. One is a bodycon black dress with a Mandarin collar, plunging neckline, and fringe ’sleeves’, topped with a textured black obi belt with long tassels. The other is cropped black dress pants worn with a garment at the intersection of tailored blazer and kimono, with fringe falling from the shoulders, topped with a black velvet obi belt tied with tassels. )">
|
||||
</a><br>
|
||||
<i>Zuhair Murad presented some of my favorite obi belt looks during the Pre-Fall 2019 show. Photo credit to Emmanuel Giraud. <br></i>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/final.jpg">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/final.jpg" alt="(sketch: realized version)">
|
||||
</a><br>
|
||||
<p>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. <br></p>
|
||||
<h2>material</h2>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/fabricshopping.png">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/fabricshopping.png" alt="(screenshot: pastel seafoam, mauve, and sulfur neoprene with a swamp print)">
|
||||
</a><br>
|
||||
<i><a href="https://www.moodfabrics.com/mystic-swamp-digitally-printed-stretch-neoprene-scuba-knit-307451">Mood Fabric's Mystic Swamp Digitally Printed Stretch Neoprene/Scuba Knit</a></i> <br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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 <i>never</i> 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 <a href="https://www.pantone.com/articles/past-colors-of-the-year/color-of-the-year-2021">PANTONE's 2021 Color of the Year</a>. I <i>adore</i> this fabric. <br></p>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/neoprene.jpg">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/neoprene.jpg" alt="(photo: my cut of neoprene)">
|
||||
</a><br>
|
||||
<p>I paired it with a seafoam invisible zipper, pastel rainbow thread, and gray thread. <br></p>
|
||||
<h2>pattern-making</h2>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/pattern.jpg">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/pattern.jpg" alt="(photo: my paper pattern pieces, hanging with the rest of my patterns)">
|
||||
</a><br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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.<br></p>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/tieredpanels.png">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/tieredpanels.png" alt="(MS paint sketch: panels underlay the tiers. In-between each panel of the skirt, a gathered tier begins. This contrasts economically with a skirt where every tier begins at the waist.)">
|
||||
</a><br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<h2>outcome</h2>
|
||||
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/Gator/gator.jpg">
|
||||
<img src="/static/img/fash/churchgirls+animalparade/Gator/gator.jpg" alt="(photo: quick photo of the finished garment, hanging against my door.)">
|
||||
</a><br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>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. <br></p>
|
||||
<br>
|
||||
<p>Then when I was done, I immediately sewed four mock turtleneck undershirts based off this pattern and love them, too! <br></p>
|
||||
<br>
|
||||
<br>
|
||||
Last updated July 28, 2022
|
||||
<br>
|
||||
@@ -0,0 +1,39 @@
|
||||
<!--210318,210304-->
|
||||
<h1>writing a game design document </h1>
|
||||
may 27, 2021<br>
|
||||
#gamedesign #gdd #worldbuilding <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
<h2>why keep a GDD if everyone's already on the same page? </h2><br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
<h2>download the GDD template </h2><br>
|
||||
Download my <a href="/download/DesignDocumentTemplate.docx">GDD template</a> 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. <br>
|
||||
<br>
|
||||
<h2>worldbuilding bible </h2><br>
|
||||
I feel it's easier to keep some parts in a different format from my GDD. For worldbuilding, I use a modified version of <a href="https://ellenbrockediting.com/worldbuilding-bible-template/">Ellen Brock's worldbuilding questionnaire</a>. 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. <br>
|
||||
<br>
|
||||
<center><img src="/static/img/ent/gdd_worldbuilding.png" alt="(image: Ellen Brock's worldbuilding questionnaire.)"></center> <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
<h2>story + dialog </h2><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<center>
|
||||
<a target="_blank" href="/static/img/ent/gdd_diagram.png">
|
||||
<img src="/static/img/ent/gdd_diagram.png" alt="(image: event diagram with an unnecessary amount of choices)" width="500" height="313">
|
||||
</a></center><br>
|
||||
<br>
|
||||
To make my flowcharts, I open diagramming software like <a href="https://wiki.gnome.org/Apps/Dia">Dia</a> 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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
<h2>backing up your GDD </h2><br>
|
||||
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! <br>
|
||||
<br>
|
||||
Last updated May 26, 2021 <br>
|
||||
<br>
|
||||
@@ -0,0 +1,63 @@
|
||||
<!--210527,210402-->
|
||||
<h1>how to make a plugin for godot engine </h1>
|
||||
april 15, 2021<br>
|
||||
#godotengine <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
<h2>how to make a plugin </h2><br>
|
||||
<br>
|
||||
Navigate to your project folder. Within it, make a folder called <b>addons</b>. 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. <br>
|
||||
<br>
|
||||
<h3>plugin.cfg </h3><br>
|
||||
Within the plugin file, make a file called <b>plugin.cfg</b>. Open it in a simple text editor like Notepad and use this template to make your config: <br>
|
||||
<br>
|
||||
[plugin]<br>
|
||||
name="World"<br>
|
||||
description="A world system."<br>
|
||||
author="chimchooree"<br>
|
||||
version="0.4"<br>
|
||||
script="custom_node.gd"<br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
<br>
|
||||
<h3>custom_node.gd </h3><br>
|
||||
Within the plugin file, make another file called <b>custom_node.gd</b>. The contents of this node should look like this: <br>
|
||||
<br>
|
||||
tool <br>
|
||||
extends EditorPlugin<br>
|
||||
<br>
|
||||
func _enter_tree():<br>
|
||||
add_custom_type("Room", "Node2D", preload("room.gd"), preload("World.png"))<br>
|
||||
<br>
|
||||
func _exit_tree():<br>
|
||||
remove_custom_type("Room")<br>
|
||||
<br>
|
||||
To add a type, supply the <b>add_custom_type</b> 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. <br>
|
||||
<br>
|
||||
<br>
|
||||
<h3>.gd files </h3><br>
|
||||
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. <br>
|
||||
<br>
|
||||
Since my example calls for a Node2D with a "room.gd", I can make a file within the plugins folder called <b>room.gd</b>. I'll keep the contents extremely simple for now: <br>
|
||||
<br>
|
||||
extends Node2D <br>
|
||||
<br>
|
||||
<br>
|
||||
<h3>icon </h3><br>
|
||||
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. <br>
|
||||
<br>
|
||||
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 <a href="https://github.com/godotengine/godot/blob/master/LOGO_LICENSE.md">git repo</a>. <img src="/static/img/ent/plugin_icon.png" alt="(image: Squished Godot head)"> <br>
|
||||
<br>
|
||||
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." <br>
|
||||
<br>
|
||||
<br>
|
||||
<h2>how to add a plugin </h2><br>
|
||||
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. <br>
|
||||
<br>
|
||||
Happy coding! <br>
|
||||
<br>
|
||||
<br>
|
||||
Last updated April 30, 2021 <br>
|
||||
<br>
|
||||
@@ -0,0 +1,91 @@
|
||||
<!--220310,220224-->
|
||||
<h1>hostility</h1>
|
||||
january 27, 2022<br>
|
||||
#design #mechanic<br>
|
||||
<br>
|
||||
<br>
|
||||
<h2>what is hostility? </h2><br>
|
||||
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 <a href="https://wiki.guildwars.com/wiki/Aggro">aggro</a> in Guild Wars because weaving through patrol patterns and balling mobs is one of my favorite things from any game. <br>
|
||||
<br>
|
||||
<h3>when does a character become hostile? </h3><br>
|
||||
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. <br>
|
||||
<br>
|
||||
Usually, if an NPC is hostile, that means a threat got too close. Currently, proximities in Blessfrey mirror <a href="https://en.wikipedia.org/wiki/Proxemics">Edward T. Hall's zoning</a> 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. <br>
|
||||
<center><a href="https://en.wikipedia.org/wiki/Proxemics#/media/File:Personal_Space.svg"><img src="/static/img/ent/Personal_Space.svg" alt="(image: A visualization of proxemics by WebHamster of Wikipedia. Around someone are 4 concentric circles with varying diameters: within 25 feet is their public space, 12 feet is their social space, 4 feet is their personal space, and 1.5 feet is their intimate space.)" width="500" height="267.72"></a></center>
|
||||
(By <a href="//commons.wikimedia.org/wiki/User:WebHamster" title="User:WebHamster";>WebHamster</a> - <span class="int-own-work" lang="en">Own work</span>, <a href="https://creativecommons.org/licenses/by-sa/3.0" title="Creative Commons Attribution-Share Alike 3.0">CC BY-SA 3.0</a>, <a href="https://commons.wikimedia.org/w/index.php?curid=6147809">Link</a>) <br>
|
||||
<br>
|
||||
An NPC will become hostile under a few conditions: <br>
|
||||
<ul>
|
||||
<li>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. </li>
|
||||
<li>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.) </li>
|
||||
<li>Someone was damaged or attacked by it. Once again, if their opponent isn't in range, they will begin the hunt. </li>
|
||||
<li>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. </li>
|
||||
<li>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. </li>
|
||||
</ul>
|
||||
<br>
|
||||
<h3>what changes when a character is hostile? </h3><br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
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 <a href="">Aion aggro sound effect</a> in my head.) <br>
|
||||
<br>
|
||||
<h3>when is a character no longer hostile? </h3><br>
|
||||
An NPC will lose hostility under a few conditions:
|
||||
<ul>
|
||||
<li>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. </li>
|
||||
<li>Its opponent exits the NPC's territory. Some NPCs have lines they will not cross. </li>
|
||||
<li>Its opponent or itself dies. </li>
|
||||
<li>The opponent no longer belongs to a conflicting faction. </li>
|
||||
</ul>
|
||||
<br>
|
||||
<h3>what happens after a character is no longer hostile? </h3><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<h2>hostility in action </h2><br>
|
||||
This next section is mostly for me. Let's run through some faction clash examples after illustrating the relationship of teammates and allies.<br>
|
||||
<br>
|
||||
<br>
|
||||
<h3>team hierarchy </h3><br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
<center><img src="/static/img/ent/team_hierarchy.png" alt="(A diagram of team hierarchy. )" width="500" height="375"></center> <br>
|
||||
<br>
|
||||
<h3>scenarios </h3><br>
|
||||
<center><img src="/static/img/ent/teams_collide.png" alt="(An illustration of the chain resulting from paladins allying with a necromancer who summons a vampire who converts a ghoul who is friends with a chaos dwarf who build a war golem.)" width="500" height="375"></center> <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
<ul>
|
||||
<li>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. </li>
|
||||
<li>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. </li>
|
||||
<li>A one-hit-kills V from a safe distance. A becomes hostile and searches for an opponent. Team 2 is oblivious. </li>
|
||||
<li>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. </li>
|
||||
<li>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. </li>
|
||||
<li>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. </li>
|
||||
<li>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. </li>
|
||||
<li>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. </li>
|
||||
</ul>
|
||||
<br>
|
||||
<h3>ally chains </h3><br>
|
||||
<br>
|
||||
<center><img src="/static/img/ent/ally_chain.png" alt="(An illustration of the chain resulting from paladins allying with a necromancer who summons a vampire who converts a ghoul who is friends with a chaos dwarf who build a war golem.)" width="500" height="375"></center> <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
If the necromancer dies, the lich and paladins will no longer restrain themselves from becoming hostility towards each other. <br>
|
||||
<br>
|
||||
<br>
|
||||
<h2>what I learned </h2><br>
|
||||
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. <br>
|
||||
<br>
|
||||
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! <br>
|
||||
<br>
|
||||
Last updated January 31, 2022
|
||||
<br>
|
||||
@@ -0,0 +1,40 @@
|
||||
<!--200917,201112-->
|
||||
<h1>inventory as a system diagram </h1>
|
||||
january 7, 2021<br>
|
||||
#design #systemdiagram #gamemechanics<br>
|
||||
<br>
|
||||
<b>System diagrams</b> 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. <br>
|
||||
<br>
|
||||
<br>
|
||||
<h2>stop + plan before coding </h2><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<br>
|
||||
<h2>list out your nouns </h2><br>
|
||||
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. <br>
|
||||
<br>
|
||||
<center><img src="/static/img/ent/systemdiagram_inventory.jpeg" alt="(image: system diagram for inventory)" width="500" height="250"></center> <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
(blessfrey has three different kinds of items. <br>
|
||||
<br><ul>
|
||||
<li><b>Base Item</b>: holds all the data regardless of how the item is currently expressed </li>
|
||||
<li><b>Floor Item</b>: sits on the ground and gets picked up by characters. </li>
|
||||
<li><b>Inventory Item</b>: displayed in inventories, store windows, containers, etc </li>
|
||||
</ul><br>
|
||||
Floor + Inventory Items hold a base item inside them that gets popped out and traded around as the item gets expressed in different forms.) </br>
|
||||
<br>
|
||||
<h2>connect your nouns with verbs </h2><br>
|
||||
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. <br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
<br>
|
||||
<h2>write the code </h2><br>
|
||||
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). <br>
|
||||
<br>
|
||||
<br>
|
||||
<h2>conclusion </h2><br>
|
||||
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. <br>
|
||||
<br>
|
||||
@@ -0,0 +1,140 @@
|
||||
<!--210610,200429-->
|
||||
<h1>css grid with angular (break into 2?)</h1>
|
||||
may 5, 2022<br>
|
||||
#angular #css #webdev <br>
|
||||
<br>
|
||||
<h2>start from the beginning</h2><br>
|
||||
<a href="https://angular.io/guide/setup-local">Angular's documentation</a> shares the process for beginning a new project, but I'll explain it, too. <br>
|
||||
<br>
|
||||
<ul>
|
||||
<li>Installation process will differ depending on your operating system. These commands are for Linux Mint, downstream from Ubuntu and Debian. </li>
|
||||
<li><a href="https://nodejs.org/en/">Install Node.js </a> </li>
|
||||
<li><code>sudo curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash</code></li>
|
||||
<li><code>sudo apt-get install -y nodejs</code></li>
|
||||
<li><code>sudo apt install -y build-essential</code></li>
|
||||
<li><code>sudo npm install -g @angular/cli</code> (you can decide whether to share analytics) </li>
|
||||
</ul>
|
||||
<br>
|
||||
<h2>grab the template </h2>
|
||||
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 <a href="https://github.com/angular/angular-cli">Angular's github</a>. <br>
|
||||
<br>
|
||||
<ul>
|
||||
<li><code>ng new Example</code> (accept Angular routing and CSS) Change out the name 'Example' with your project name. </li>
|
||||
<li>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. </li>
|
||||
</ul>
|
||||
<h2>test run </h2>
|
||||
Now you can run your example project in the browser. <br>
|
||||
<br>
|
||||
<ul>
|
||||
<li><code>cd Example/ </code></li>
|
||||
<li><code>npm start </code><li>
|
||||
<li>Now you can browse to your project. By default, it used port 4200, so it's viewable @ <a href="http://localhost:4200/">http://localhost:4200/</a> </li>
|
||||
<li>When you're done, stop the script by entering ctrl + c into the terminal. </li>
|
||||
</ul>
|
||||
<br>
|
||||
If you see the page below, you have everything you need to get started on your own project. <br>
|
||||
<center><a target="_blank" href="/static/img/ent/angular_examplepage.png">
|
||||
<img src="/static/img/ent/angular_examplepage.png" alt="(image: the example webpage that comes with the skeleton files.)" width="500" height="505">
|
||||
</a></center><br>
|
||||
<br>
|
||||
<br>
|
||||
<h2>adding custom components </h2>
|
||||
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 <a href="https://angular.io/guide/component-overview">component</a> to be styled by the grid. <br>
|
||||
<br>
|
||||
I'll use the petsite browser game I'm making as an example: <br>
|
||||
<center><a target="_blank" href="/static/img/ent/lemonland_cssgrid.png">
|
||||
<img src="/static/img/ent/lemonland_cssgrid.png" alt="(image: planned layout of my example page: two buffers at the sides named Left and Right, Header at the top, Footer at the bottom, Chatter in between Header and Footer and left of Right, Zone and PDA in the second row from the top, Alert in the third, and Action and Partner in the fourth.)" width="500" height="478">
|
||||
</a></center><br>
|
||||
<br>
|
||||
This webpage has some major elements that will be reused on many pages, which I would like to keep in a general grid. <br>
|
||||
<ul>
|
||||
<li>header - wgill hold the logo, home page link, account links </li>
|
||||
<li>left - a centering buffer, will have a background </li>
|
||||
<li>right - a centering buffer, will have a background </li>
|
||||
<li>footer - hold copyright, footer links </li>
|
||||
</ul>
|
||||
Then I'd like to nest a grid inside to contain elements more specific to this kind of page. <br>
|
||||
<ul>
|
||||
<li>zone - a graphic representing the player's location </li>
|
||||
<li>pda - a control panel with news, email, friend's list, quick links, inventory, etc </li>
|
||||
<li>alert - a window for dialog, system messages, etc </li>
|
||||
<li>action - a window containing player choices and dialog responses </li>
|
||||
<li>partner - basic info about the active pet </li>
|
||||
<li>chatter - a live-time chat box </li>
|
||||
</ul>
|
||||
<br>
|
||||
Each of these will need to be added as components via the terminal. <br>
|
||||
<br>
|
||||
<ul>
|
||||
<li><code>cd app/ </code></li>
|
||||
<li><code>ng g c header </code></li>
|
||||
<li><code>ng g c zone </code></li>
|
||||
<li>...and so on. </li>
|
||||
</ul>
|
||||
These commands fill your app folder with components for your grid. <br>
|
||||
<br>
|
||||
<center><a target="_blank" href="/static/img/ent/angular_componentdir.pngid.png">
|
||||
<img src="/static/img/ent/angular_componentdir.png" alt="(image: screenshot of each folder generated for each component inside the app folder.)" width="500" height="273">
|
||||
</a></center><br>
|
||||
<br>
|
||||
<h2>writing the css grid </h2>
|
||||
There's a few HTML files and a few CSS files in your project folder. <br>
|
||||
<ul>
|
||||
<li><code>src/index.html</code> is the basic webpage </li>
|
||||
<li><code>src/app/app.component.html</code> is the app displayed in the webpage </li>
|
||||
<li>Then there's an HTML file for each component, like <code>src/app/partner/partner.component.html</code> </li>
|
||||
<br>
|
||||
<h3>index.html + styles.css </h3>
|
||||
I'm keeping these two very general, since most of the content on the page is part of the game. <br>
|
||||
<code><!doctype html></code><br>
|
||||
<code><html lang="en"></code><br>
|
||||
<code><head></code><br>
|
||||
<code> <meta charset="utf-8"></code><br>
|
||||
<code> <title>lemonland</title></code><br>
|
||||
<code> <base href="/"></code><br>
|
||||
<code> <meta name="viewport" content="width=device-width, initial-scale=1"></code><br>
|
||||
<code> <link rel="icon" type="image/x-icon" href="favicon.ico"></code><br>
|
||||
<code></head></code><br>
|
||||
<code><body></code><br>
|
||||
<code><router-outlet></router-outlet></code><br>
|
||||
<code> <div class="app-container"></code><br>
|
||||
<code> <app-root></app-root></code><br>
|
||||
<code> </div></code><br>
|
||||
<code></body></code><br>
|
||||
<code></html></code><br>
|
||||
<br>
|
||||
Then the CSS... <br>
|
||||
<code>* {</code><br>
|
||||
<code> padding: 0;</code><br>
|
||||
<code> margin: 0;</code><br>
|
||||
<code> font-family: verdana;</code><br>
|
||||
<code> font-size: 18px;</code><br>
|
||||
<code>}</code><br>
|
||||
<code>body {</code><br>
|
||||
<code> background-color: black;</code><br>
|
||||
<code> color: MidnightBlue;</code><br>
|
||||
<code>}</code><br>
|
||||
<br>
|
||||
<h3>app.component.html + app.component.css </h3>
|
||||
These two contain all the subcomponents generated earlier. <br>
|
||||
<code><div class="container"></code><br>
|
||||
<code> <app-header></app-header></code><br>
|
||||
<code> <app-left></app-left></code><br>
|
||||
<code> <router-outlet></router-outlet></code><br>
|
||||
<code> <div class="content-grid"></code><br>
|
||||
<code> <app-zone></app-zone></code><br>
|
||||
<code> <app-pda></app-pda></code><br>
|
||||
<code> <app-chatter></app-chatter></code><br>
|
||||
<code> <app-alert></app-alert></code><br>
|
||||
<code> <app-action></app-action></code><br>
|
||||
<code> <app-partner></app-partner></code><br>
|
||||
<code> </div></code><br>
|
||||
<code> <app-right></app-right></code><br>
|
||||
<code> <app-footer></app-footer></code><br>
|
||||
<code></div></code><br>
|
||||
<br>
|
||||
Then the CSS grid takes place in the CSS file. <br>
|
||||
<br>
|
||||
<br>
|
||||
Last updated April 12, 2022
|
||||
<br>
|
||||
@@ -0,0 +1,90 @@
|
||||
<!--201001,201112-->
|
||||
<h1>blessfrey in japanese </h1>
|
||||
october 29, 2020<br>
|
||||
#godot #internationalization #localization #translation<br>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
I followed along with GoTut's <a href="https://www.gotut.net/localisation-godot/">"Localisation in Godot"</a> 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. <br>
|
||||
<br>
|
||||
<h2>step 1 - make your spreadsheet </h2>
|
||||
<br>
|
||||
<center>
|
||||
<a target="_blank" href="/static/img/ent/internationalization_spreadsheet.png">
|
||||
<img src="/static/img/ent/internationalization_spreadsheet.png" alt="(image: spreadsheet with three columns - id, en, and ja. id has ids, en has English text, and ja has Japanese text.)" width="500" height="232.26">
|
||||
</a><br>
|
||||
</center>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
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 <a href="https://docs.godotengine.org/en/latest/tutorials/i18n/locales.html#doc-locales">Godot Docs</a>. <br>
|
||||
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. <br>
|
||||
<br>
|
||||
Save your spreadsheet as a .CSV file. <br>
|
||||
<br>
|
||||
<br>
|
||||
<h2>step 2 - import your spreadsheet </h2>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
<center>
|
||||
<img src="/static/img/ent/internationalization_translations.png" alt="(image: Project Settings>Localization>Translations shows a TRANSLATION file for each language.)"><br>
|
||||
</center>
|
||||
<br>
|
||||
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. <br>
|
||||
<br>
|
||||
<br>
|
||||
<h2>step 3 - refer to your ids in your scripts </h2>
|
||||
<br>
|
||||
<center>
|
||||
<img src="/static/img/ent/internationalization_script.png" alt="(image: example of an id used in a script)"><br>
|
||||
</center>
|
||||
<br>
|
||||
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 <code>label.set_text("quit")</code>, you'd write <code>label.set_text(tr("quit_game"))</code>. In this example, the id is "quit_game" and its corresponding text in English is "quit."
|
||||
<br>
|
||||
<br>
|
||||
<h2>step 4 - set the game's language </h2>
|
||||
<br>
|
||||
<center>
|
||||
<img src="/static/img/ent/internationalization_setlocale.png" alt="(image: example of setting the locale in a script)"><br>
|
||||
</center>
|
||||
<br>
|
||||
Set the locale in your script, somewhere like _ready() or on a 'change language' button. Here's the line for setting the locale: <code><a href="https://docs.godotengine.org/en/stable/classes/class_translationserver.html">TranslationServer</a>.<a href="https://docs.godotengine.org/en/stable/classes/class_translationserver.html#class-translationserver-method-set-locale">set_locale</a>(<a href="https://docs.godotengine.org/en/stable/tutorials/i18n/locales.html">"ja"</a>)</code>
|
||||
<br>
|
||||
<br>
|
||||
<h2>step 5 - continue adding to your spreadsheet </h2>
|
||||
<br>
|
||||
Now that everything's in place, you can keep adding new ids and translations, and Godot will automatically use your changes in-game. <br>
|
||||
<br>
|
||||
<br>
|
||||
<h2>step 6 - insert values into text </h2>
|
||||
<br>
|
||||
Languages differ in syntax, so use format strings. <br>
|
||||
<br>
|
||||
In your spreadsheet, write <code>%s</code> where your inserted text will go.
|
||||
<br>
|
||||
<center>
|
||||
<img src="/static/img/ent/internationalization_formatcsv.png" alt="(image: in the .CSV, id= character_level, en= Level %s, ja= レバル %s)"><br>
|
||||
</center>
|
||||
<br>
|
||||
Then in your script, write <code>tr("key") % inserted_val</code> in place of the formatted string. <br>
|
||||
<br>
|
||||
<center>
|
||||
<img src="/static/img/ent/internationalization_formatscript.png" alt="(image: in the script, set_text(tr("character_level") % String(level))"><br>
|
||||
</center>
|
||||
<br>
|
||||
Now the formatted string will appear in-game. <br>
|
||||
<br>
|
||||
<center>
|
||||
<img src="/static/img/ent/internationalization_formatgame.png" alt="(image: screenshot: Level 1)"><img src="/static/img/ent/internationalization_formatgame2.png" alt="(image: screenshot: レベル 1)"><br>
|
||||
</center>
|
||||
<br>
|
||||
<h2>that's the basics </h2>
|
||||
<center>
|
||||
<img src="/static/img/ent/internationalization_japanese.png" alt="(image: Blessfrey screenshot in Japanese)" width="500" height="370.46"><br>
|
||||
</center>
|
||||
<br>
|
||||
It all comes together for an old screenshot of Blessfrey's main menu in my broken Japanese. やべーな! <br>
|
||||
<br>
|
||||
Last updated June 8, 2021 <br>
|
||||
<br>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user