hashtags are links in snippets and features

small-nav
chimchooree 3 years ago
parent b2c922e79e
commit 0a83927bbc

7
.gitignore vendored

@ -1 +1,8 @@
venv/ venv/
*.png~
*.gif~
*.jpeg~
*.jpeg~
*.kra
*.kra~

@ -1,5 +1,5 @@
<!--210601,210801--> <!--210601,210801-->
<h1>june 2020: mostly sewing </h1> <h1>june 2020: attack and movement </h1>
july 1, 2021<br> july 1, 2021<br>
#diary <br> #diary <br>
<br> <br>
@ -97,12 +97,13 @@ Your browser does not support the video tag to play the Will Smith "where all th
<br> <br>
<h3>saturday, june 26 </h3> <h3>saturday, june 26 </h3>
<ul> <ul>
<li>Officially started househunting and put my first offer on a house down today. It's a seller's market, but it's also getting more expensive to rent than own. Househunting is unexpectedly time-consuming with all the tours and negotiations. My parents never moved houses, so this is a completely new process to me. </li> <li>Officially started househunting and put my first offer on a house down today. It's a wild market, but it's also getting more expensive to rent than own. Househunting is unexpectedly time-consuming with all the tours and negotiations. My parents never moved houses, so this is a completely new process to me. </li>
<li>Apparently, people are flooding over from California and buying houses that they've only seen pictures of, waiving inspections, offering 50k over the asking price, and paying in cash. A realtor friend said some realtors are even buying cruises for the sells as part of the deal. </li>
</ul> </ul>
<br> <br>
<h3>sunday, june 27 </h3> <h3>sunday, june 27 </h3>
<ul> <ul>
<li>Player follows Slime Rally during attack loop </li> <li>Player follows Slime Rally during attack loop </li>
<br> <br>
Last Updated July 9, 2021 <br> Last Updated July 10, 2021 <br>
<br> <br>

@ -1,15 +1,39 @@
<!--210624,200806--> <!--210610,200429-->
<h1>moving update </h1> <h1>how to attack a moving target </h1>
july 8, 2021<br> july 8, 2021<br>
#offtopic <br> #ai #character #combat #design #movement <br>
<br> <br>
After two weeks of house tours and negotiations, an offer went through! I can't imagine inspections and closing will be as hectic as driving all over town was. Packing and moving will take some time, but hopefully I'll be able to get some solid gamedev for now. <br> Househunting has been unexpectedly time-consuming, but I'll share my work in progress towards the attack-movement loop. Hopefully now that an offer was accepted, I'll find more time to iron out the design. <br>
<br> <br>
Currently, I'm working on the attack loop, so that the character maintains attack range while attacking. Hopefully will have some diagrams up soon and maybe even get it working in-game. Right now, she follows moving targets but never actually attacks. <br> Currently, I'm working on the attack loop, so that the character maintains 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.<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>
<center><img src="/static/img/ent/attack-follow.gif" alt="(image: Angel follows slime)"></center> <center><img src="/static/img/ent/attack-follow.gif" alt="(image: Angel follows slime)"></center>
<br> <br>
It's not pretty, but that's my first gif recorded and edited entirely in FFMPEG. I'm slowly getting the hang of writing my own scripts instead of relying on forums. The man page is so much easier to understand and search through than the website. <br> I'll work it out sooner or later, dependent on how hectic moving turns out to be. <br>
<br>
(By the way, that's my first gif recorded and edited entirely in ffmpeg. It's not pretty, but at least I could write my bash script without relying on copypasta code from forums this time. I was trying to follow the documentation website before, but it's unreadable. The man page is so much easier to understand and search through.) <br>
<br> <br>
<br> <br>
Last Updated July 9, 2021 Last Updated July 10, 2021
<br> <br>

@ -1,75 +1,21 @@
<!--210601,210801--> <!--210701,210901-->
<h1>june 2020: mostly sewing </h1> <h1>july 2020: mostly moving </h1>
july 1, 2021<br> august 1, 2021<br>
#diary <br> #diary <br>
<br> <br>
<h3>friday, june 4 </h3> <h3>sunday, july 4 - Independence Day </h3>
<ul> <ul>
<li>I ordered some rayon rib knit for a mock turtleneck, but customer service emailed me saying that it's out of stock. They had tons in stock when I ordered, and there's still 70 yards left today...How is 70 out of stock? ;-; </li> <li>My favorite holiday! I celebrate every year by making a red-white-and-blue dessert and watching the fireworks. This year, I tried blueberry and strawberry crepes. Surprisingly, they aren't any harder to make than omelets. I think I'll be able to cook these more regularly! I followed <a href="https://www.iheartnaptime.net/strawberry-crepes/">I Heart Nap Time's recipe</a> but used almond flour instead. </li>
<li>I want the setting for Blessfrey to be like the United States but not quite. I was using something along the lines of Harry Turtledove's Southern Victory series. The Confederate States is definitely an interesting place to study, but I was just using it as an obvious example of an alternative history setting. Really thinking about it, though, the failed U.S. state that interests me the most is Nickajack. The interior of the Confederacy was speckled with pro-Union enclaves trapped within pro-Sucession states. If a particular secession movement succeeded, north Alabama and parts of Tennessee and Georgia would have become the pro-Union state of Nickajack. The idea of Nickajack has captured my imagination since I was a kid, since it comes up in local politics and rants from grownups every once in a while. The disconnect between north and south Alabama persists to this day. Huntsville is a modern booming Southern city, outpacing the other big Alabama cities Birmingham, Montogomery, and Mobile, but the state refuses to recognize Huntsville as a bigger district. Huntsville also pays a lot of tax money into Alabama, but spending disproportionately favors southern Alabama. Not only that, but there's a distinct cultural disconnect, with northern Alabama's history of technology, connection to Nazi Germany, and general higher levels of education, income, racial diversity, and Democrat voters compared to the largely agricultural south. I'm not even sure how accurate this stuff is, though, since this is my summary of years of angry grownup hearsay, I didn't intentionally follow local politics until high school, and I've never lived long enough in southern Alabama to gain a sense of any significant cultural or political differences. At least my husband went to school in southern Alabama, but I don't have access to much more than his experiences. The idea of resolving the general north-south tension through secession is wacky to me. Alabama's political history has a lot of absurd events and figures, too. The Confederate States are interesting and all, but I think Nickajack is a lot more personal and unusual for use as a story setting. </li>
<li>When I went online to learn more about Nickajack, the amount of sources was shockingly small compared to how often I've heard it discussed. About the best I could do is find books about it that are luckily available at my local library. I guess I should have checked the library first, since the only times Nickajack's come up in my reading have been while reading local historical journals and newspapers in the library's archives. Makes sense, since I only hear about other secession struggles directly from people who used to live in states with similar tension. (Superior vs. Michigan is one I learned through a Michigan-born classmate in 5th grade.) </li>
<li>Even if I'm not setting my game immediately into the Confederate States, Nickajack is definitely strongly tied to the Civil War and Confederate States. A modern Confederate setting is just extremely controversial these days, even if it would have probably freed its slaves hundreds of years ago and legally recognized the equality of its citizens regardless of race. (It's not like even the general population of a Civil War-era Confederate setting really supported slavery either, but whatever.) The reality of the Confederacy or my representation of it doesn't really matter, though, since it's been reduced to a conversial symbol, representing either (by the left) racism, slavery, and radical right politics or (by the right) the rejection of the expanding government and progressive policies invading the private lives of citizens. No matter what I do with it, it's going to immediately mean virulent angry things to people. The setting of Nickajack really interests me, especially way more than a vanilla rural South, so I'll probably do it anyway because it's unique, but it's probably going to be controversial if anyone ends up playing my game at all. </li>
<li>To make it worse, slavery actually is a relatively major theme of my setting, but it's more similar to modern day slavery. We still use slavery in labor to lower the prices of consumer goods, but instead of keeping slavery domestic and regulated, we have exported it. Slavery today's just as bad if not worse than the experience of Southern slavery, but it's out of sight, out of mind. That idea is kind of represented in Blessfrey's setting's exploitation of the hollow earth to support its unsustainable local economy (because the controversial hollow earth theory's in my setting, too, lol). </li>
<li>Whatever. I checked out some cool library books about local history, though. It'll be fun to intentionally study it instead of generally learn it through osmosis. </li>
</ul>
<br> <br>
<h3>sunday, june 6 </h3> <h3>friday, july 8 </h3>
<ul> <ul>
<li>I feel like I've been so busy with translating manga, sewing new clothes, and socializing that I haven't worked on Blessfrey enough. I kinda forgot I'm so close to my first demo release. That would be so cool. Today I worked on refactoring movement. </li> <li>I ordered some rayon rib knit for a mock turtleneck, but customer service emailed me yet again saying that it's out of stock. There were over 100 yards in stock when I placed my order...all I want is 2 yards. I thought the housing market was unreasonable, but the basic black fabric market is brutal. </li>
</ul> <li>Urban Decay announced their new <a href="https://www.temptalia.com/urban-decay-vice-hydrating-lipstick-for-summer-2021/">Vice Hydrating Lipstick</a> for Summer 2021. It's official. My all-time favorite lipstick line is discontinued, and they're replacing it with a bland color range with (going off their recent releases) inconsistent quality. "35 Los Angeles-inspired shades from sheer pink and everyday nude to bold." Good-bye gunmetals, blacks, and purples. They don't even have my MLBB mauve anymore. I can't believe the "Does Pink Make You Puke?" brand that designed their lipsticks after bullets is trying to act like a cookie-cutter LA influencer now. </li>
<br> <br>
<h3>tuesday, june 8 </h3> <h3>friday, july 9 </h3>
<ul> <ul>
<li>First time going by myself to work on my laptop at the cafe since 2018! They let you go maskless if you're vaccinated and it's usually empty anyway, so I finally got to smile at the barista. </li> <li>Learned how to add WebMs to my website. </li>
<li>Finally got to wear my new lipstick, too. Too bad my rosy mauve Rush expired, and Urban Decay's discontinuing their perfect Vice lipsticks. Maybe I should have bought one last bullet, but I couldn't resist a fancy closeout Becca lipstick. Mauve Truffle was out of stock, so I got pink Sorbet. I wore it with Looxi Genesis and JD Glow Good Gawd for a silver-lavender eye with a green shift. </li> <li>Learning how to record in ffmpeg. </li>
<li>If I keep moving at a good pace, I can finish 3 mock turtlenecks, a button shirt, a bodice, pants, a jacket, a kimono, two pajama sets, a silk turban, some silk scrunchies, and a pair of pajama pants for my husband. If I go faster, I can also include the two shorts I have planned. Too bad if not, but it's still a big step up from wearing hand-me-downs and my husband's clothes all the time. Plus, pajamas that actually fit will be so great. </li>
</ul>
<br>
<h3>wednesday, june 9 </h3>
<ul>
<li>Finally, the character follows a moving target. </li>
</ul>
<br>
<h3>thursday, june 10 </h3>
<ul>
<li>I got groceries at Target, so I had to peak into the Gamestop next-door. What happened? Even the Nintendo game section is tiny now, and 70% of the store is dedicated to Star Wars and anime clothes and toys. It's been trending this way for years, but at least they had a wall of Nintendo games before. They only had a few used games and controllers, and I didn't see any consoles at all. It might as well be Hot Topic now, minus the band merch. </li>
<li>Target had lots of corpo pride displays scattered through the store, but Gamestop didn't have any at all lol. </li>
<li>Did some blogging </li>
</ul>
<br>
<h3>saturday, june 12 </h3>
<ul>
<li>OBS hasn't been able to capture my windows since around February, so I stopped recording GIFs. (lol) I really do want some GIFs for my dev diary, so after looking around, it's apparently a widespread issue for Linux users with no real fix in sight. Dang, I guess it's a real issue. I'm not a fancy streamer with lots of scenes or anything, so I can just record my screen, but that's not good news for OBS at all. For now, my crops are just going to have be taken from the entire screen instead of just the little window. </li>
<li>At least ffmpeg, though very difficult to write, is able to make nice gifs. If OBS gets worse, I guess I'll have to use it for screen capture, too. </li>
<li>Anyway, now my latest article has a GIF, and I can get rid of the following-moving-target test assets. </li>
</ul>
<br>
<h3>tuesday, june 15 </h3>
<ul>
<li>Made move-to-skill-target work more similarly to move-to-item-target </li>
<li>Added Slime Rally, a test enemy that constantly patrols between two points and never attacks. </li>
<li>Began documenting the attack loop better and fixing minor issues </li>
<br>
<h3>thursday, june 17 </h3>
<ul>
<li>Added Training Dummy back, since the old version was incompatible </li>
<br>
<h3>friday, june 18 </h3>
<ul>
<li>Fixed UI target bars to accurately reflect target's HP </li>
<br>
<h3>monday, june 21 </h3>
<ul>
<li>updated the player's attack loop and connected it to the achievement system </li>
<br>
<h3>saturday, june 26 </h3>
<ul>
<li>Officially started househunting and put my first offer on a house down today. It's a seller's market, but it's also getting more expensive to rent than own. Househunting is unexpectedly time-consuming with all the tours and negotiations. My parents never moved houses, so this is a completely new process to me. </li>
</ul>
<br>
<h3>sunday, june 27 </h3>
<ul>
<li>Player follows Slime Rally during attack loop </li>
<br> <br>
Last Updated July 9, 2021 <br> Last Updated July 9, 2021 <br>
<br> <br>

@ -208,6 +208,18 @@ def list_snippets(articles):
result.append(a) result.append(a)
return result return result
# Return list of files with given tag
def pull_tag(files, tag):
print(files)
print(tag)
pull = []
for f in files:
tags = find_tags(article2list(str(f), 'diary/entries/'))
if "#" + tag in tags:
pull.append(f)
pull.sort()
return pull
# Return line count of file # Return line count of file
def count_lines(fname): def count_lines(fname):
with open(fname) as f: with open(fname) as f:
@ -411,6 +423,22 @@ def extra(page):
TEMPLATE_PATH.insert(0, abs_views_path ) TEMPLATE_PATH.insert(0, abs_views_path )
return template(os.path.join(abs_views_path,'feature.tpl'), info) return template(os.path.join(abs_views_path,'feature.tpl'), info)
# Start on first Diary tag page if no page given
@route('/diary/tag/<tagin>')
def tag2(tagin):
return tag(tagin, 0)
# Tag Page - Diary Tag Template - list all articles for tag
@route('/diary/tag/<tagin>/<page:int>')
def tag(tagin, page):
"""tag page"""
loc = 'diary/entries/'
assert isinstance(tagin, str)
assert isinstance(page, int)
print(tagin)
info = {'css': 'diary', 'title': 'blessfrey - developer diary', 'year': find_year(), 'snippets': list_snippets(pull_tag(gather_and_sort(loc), tagin)), 'latest': list_headlines(gather_and_sort(loc)[0:5]), 'total': len(curate_files(gather_files(loc))), 'limit': 8, 'cluster': 3, 'page': page}
return template('diary.tpl', info)
# Personal Page - Box Template # Personal Page - Box Template
@route('/box') @route('/box')
def box(): def box():

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

@ -7,14 +7,14 @@
<language>en-us</language> <language>en-us</language>
<webMaster>chimchooree@mail.com (chimchooree)</webMaster> <webMaster>chimchooree@mail.com (chimchooree)</webMaster>
<item> <item>
<title>moving update </title> <title>how to attack a moving target </title>
<link>https://www.blessfrey.me/diary/entries/210708</link> <link>https://www.blessfrey.me/diary/entries/210708</link>
<description>After two weeks of house tours and negotiations, an offer went through! I can't imagine inspections ... </description> <description>Househunting has been unexpectedly time-consuming, but I'll share my work in progress towards the ... </description>
<pubDate>Thu, 08 Jul 2021 05:00:05 GMT</pubDate> <pubDate>Thu, 08 Jul 2021 05:00:05 GMT</pubDate>
<guid>https://www.blessfrey.me/diary/entries/210708</guid> <guid>https://www.blessfrey.me/diary/entries/210708</guid>
</item> </item>
<item> <item>
<title>june 2020: mostly sewing </title> <title>june 2020: attack and movement </title>
<link>https://www.blessfrey.me/diary/entries/210701</link> <link>https://www.blessfrey.me/diary/entries/210701</link>
<description>friday, june 4 I ordered some rayon rib knit for a mock turtleneck, but customer service ... </description> <description>friday, june 4 I ordered some rayon rib knit for a mock turtleneck, but customer service ... </description>
<pubDate>Thu, 01 Jul 2021 05:00:05 GMT</pubDate> <pubDate>Thu, 01 Jul 2021 05:00:05 GMT</pubDate>

@ -116,7 +116,9 @@
<div class=snippet-tags> <div class=snippet-tags>
% for j in s[5]: % for j in s[5]:
<div class="snippet-tag"> <div class="snippet-tag">
{{j}} % tagless = j.replace('#', '')
% print(j)
<a href=/diary/tag/{{tagless}}>{{j}}</a>
</div> </div>
% end % end
</div> </div>

@ -16,7 +16,8 @@
<div class=diary-tags> <div class=diary-tags>
% for t in entry[5]: % for t in entry[5]:
<div class="diary-tag"> <div class="diary-tag">
{{t}} % tagless = t.replace('#', '')
<a href=/diary/tag/{{tagless}}>{{t}}</a>
</div> </div>
% end % end
</div> </div>

Loading…
Cancel
Save