website update; added bash scripts
This commit is contained in:
Binary file not shown.
@@ -0,0 +1,28 @@
|
||||
<!--200810-->
|
||||
<h1>my favorite GDC talks </h1>
|
||||
september 18, 2020<br>
|
||||
game design, marketing<br>
|
||||
<br>
|
||||
I really should be keeping a list of these with descriptions, so why not keep them in an article? <br>
|
||||
<br>
|
||||
<h2><a href="https://www.youtube.com/watch?v=W20t1zCZv8M">Automated Testing and Instant Replays in Retro City Rampage </a></h2><br>
|
||||
Vblank Entertainment's Brian Provinciano (2015) <br>
|
||||
log button inputs to replay the game, for use in preproducing bugs, sharing replays on the community leaderboard, running cutscenes, and even controlling AI. It is 100% accurate in deterministic engines but also helpful in less deterministic engines.
|
||||
<br>
|
||||
<ul>
|
||||
<li><a href="/static/extra/SimpleInputRec.cpp">I backed up the code he shared here. </a> It is a simple example of how to record and playback button input, written in C++.</li>
|
||||
</ul>
|
||||
<br>
|
||||
<br>
|
||||
<h2><a href="https://www.youtube.com/watch?v=UJiv14uPOac">Empathizing with Steam: How People Shop for Your Game </a></h2><br>
|
||||
Chris Zukowski (2020) <br>
|
||||
tips for how to design your Steam store page based on Zukowski's screenshare and shopping diary observations of ordinary people shopping on Steam <br>
|
||||
<br>
|
||||
<ul>
|
||||
<li>Essentially, make your gameplay genre absolutely clear within the first 4 screenshots and in the short description so that people will wishlist your game to buy during a seasonal Steam Sale. </li>
|
||||
<li>Approach your wishlisters as complete newcomers. Jazz up your Steam page before a Steam Sale. Release an update, post in your forums, put a Santa hat on your character. When wishlisters return to your page, they will see an active game and be sold on it all over again. </li>
|
||||
<li>His conclusions are very similar to how I shop on Steam, except I could care less for the tag section. </li>
|
||||
<li>The romantic indie fiction section on Amazon dwarves the indie game section on Steam. To be immediately visible to their audience, romance authors follow a clear visual language on their covers to communicate their genres and sub-genres. Zukowski uses this as an extreme method for attracting your audience using the tropes of your genre, pointing out common UI elements and the shooter guy on every FPS cover. </li>
|
||||
<li>More notes @ <a href="/diary/entries/extra/gdc-design-steam-store">/diary/entries/extra/gdc-design-steam-store </a>
|
||||
</ul>
|
||||
<br>
|
||||
@@ -0,0 +1,35 @@
|
||||
<!--200810-->
|
||||
<h1>slimeAI - state transition diagram </h1>
|
||||
december 10, 2020<br>
|
||||
#ai #programming<br>
|
||||
<br>
|
||||
<br>
|
||||
blessfrey's slimes use finite state machines. <b>Finite state machines</b> (FSM) are models with a finite number of states that either decide to generate output or transition to a new state based on input. They can only be in one state at a time. <br>
|
||||
<br>
|
||||
<br>
|
||||
<h2>why use a finite state machine? </h2><br>
|
||||
Because they are simple and flexible, while still allowing for interesting behavior. FSMs reflect our own mental model of how slimes behave (attack mode, wander mode, sleep mode, etc). These different modes or states are written as manageable chunks that easy to code, debug, update, and refactor. It's also efficient with processor time, since the behavior is abstracted to basic conditionals. <br>
|
||||
<br>
|
||||
A state can be as broad or specific as you need, so long as it's granular. So they can be more easily debugged and swapped out with one another, it's a good idea to have one entry point and one exit point for all your states.<br>
|
||||
<br>
|
||||
Of course, since FSMs can be used for anything with states and transitions. You can think of specific menus, mechanics or even your entire game in terms of states. I'm just using them here for understanding the AI for my slime monster. <br>
|
||||
<br>
|
||||
<br>
|
||||
<h2>designing AI </h2><br>
|
||||
Planning ahead is extra important, since any dead-ends will halt your slime. I used a state transition diagram to design the slime's AI. In the diagram, circles represent states and arrows represent transitions, triggered by some kind of event. I marked the initial state with a star, but Buckland recommends a double circle. <br>
|
||||
<br>
|
||||
The slime is a simple creature. It idles, chases anything that gets too close, and attacks until its target dies. Here's the diagram version of that:<br>
|
||||
<br><center>
|
||||
<img src="/static/img/ent/slimeai_diagram.png" alt="(image: a state transition diagram for slime ai.)" width="500" height="250"><br>
|
||||
</center>
|
||||
<br>
|
||||
The states are Idle, Choose Target, Attack, and Move to Target. The initial state is Idle. <br>
|
||||
<br>
|
||||
If there's a valid target, the slime enters Choose Target. If there's no longer a valid target, it returns to Idle. If it successfully gets a target, it begins moving to target. If the target becomes invalid, it returns to Idle. Once the target is in attack range, it enters Attack. If the foe moves out of range, it returns to Move to Target. If the target becomes invalid, it returns to Choose Target. And the cycle continues. <br>
|
||||
<br>
|
||||
No matter how you follow the arrows, there are no dead-ends and all states can be reached eventually, so it'll work okay when it's implemented as code. <img src="/static/img/emo/heart.gif" alt="<3"><br>
|
||||
<br>
|
||||
<br>
|
||||
<h2>reference </h2><br>
|
||||
<a href="https://www.goodreads.com/book/show/161139.Programming_Game_AI_by_Example"><b>Programming Game AI by Example by Mat Buckland</b></a>. It's an easy to understand introduction to game math + AI concepts. The code examples are in C++, but they are still useful for understanding the underlying principles. I didn't even know where to begin before I started reading and it got me pretty decent groundwork for AI creatures with different behavior that reacts to the players.<img src="/static/img/emo/heart.gif" alt="<3"> <br>
|
||||
<br>
|
||||
@@ -0,0 +1,28 @@
|
||||
<!--200810-->
|
||||
<h1>my favorite GDC talks </h1>
|
||||
january 7, 2020<br>
|
||||
#gamedesign #marketing<br>
|
||||
<br>
|
||||
I really should be keeping a list of these with descriptions, so why not keep them in an article? <br>
|
||||
<br>
|
||||
<h2><a href="https://www.youtube.com/watch?v=W20t1zCZv8M">Automated Testing and Instant Replays in Retro City Rampage </a></h2><br>
|
||||
Vblank Entertainment's Brian Provinciano (2015) <br>
|
||||
log button inputs to replay the game, for use in preproducing bugs, sharing replays on the community leaderboard, running cutscenes, and even controlling AI. It is 100% accurate in deterministic engines but also helpful in less deterministic engines.
|
||||
<br>
|
||||
<ul>
|
||||
<li><a href="/static/extra/SimpleInputRec.cpp">I backed up the code he shared here. </a> It is a simple example of how to record and playback button input, written in C++.</li>
|
||||
</ul>
|
||||
<br>
|
||||
<br>
|
||||
<h2><a href="https://www.youtube.com/watch?v=UJiv14uPOac">Empathizing with Steam: How People Shop for Your Game </a></h2><br>
|
||||
Chris Zukowski (2020) <br>
|
||||
tips for how to design your Steam store page based on Zukowski's screenshare and shopping diary observations of ordinary people shopping on Steam <br>
|
||||
<br>
|
||||
<ul>
|
||||
<li>Essentially, make your gameplay genre absolutely clear within the first 4 screenshots and in the short description so that people will wishlist your game to buy during a seasonal Steam Sale. </li>
|
||||
<li>Approach your wishlisters as complete newcomers. Jazz up your Steam page before a Steam Sale. Release an update, post in your forums, put a Santa hat on your character. When wishlisters return to your page, they will see an active game and be sold on it all over again. </li>
|
||||
<li>His conclusions are very similar to how I shop on Steam, except I could care less for the tag section. </li>
|
||||
<li>The romantic indie fiction section on Amazon dwarves the indie game section on Steam. To be immediately visible to their audience, romance authors follow a clear visual language on their covers to communicate their genres and sub-genres. Zukowski uses this as an extreme method for attracting your audience using the tropes of your genre, pointing out common UI elements and the shooter guy on every FPS cover. </li>
|
||||
<li>More notes @ <a href="/diary/entries/extra/gdc-design-steam-store">/diary/entries/extra/gdc-design-steam-store </a>
|
||||
</ul>
|
||||
<br>
|
||||
@@ -0,0 +1,94 @@
|
||||
<!--200810-->
|
||||
<h1>questionnaire for making a fantasy race </h1>
|
||||
march 4, 2021, 2020<br>
|
||||
#design #lore #worldbuilding<br>
|
||||
<br>
|
||||
<h2>Aspects of Culture </h2>
|
||||
General things to consider about your fantasy race to fill out their culture. Obviously not every point is going to be relevant. <br>
|
||||
<br>
|
||||
<h3>Basics </h3>
|
||||
<ul>
|
||||
<li>Basic Needs </li>
|
||||
<li>Reproduction </li>
|
||||
<li>Survival </li>
|
||||
<li>Climate </li>
|
||||
<li>Enemies </li>
|
||||
<li>Allies </li>
|
||||
</ul>
|
||||
<br>
|
||||
<h3>Lifecycles </h3>
|
||||
<ul>
|
||||
<li>Birth - how and where are offspring born? who is allowed to give birth? </li>
|
||||
<li>Parenthood </li>
|
||||
<li>Childhood </li>
|
||||
<li>Coming of Age </li>
|
||||
<li>Love </li>
|
||||
<li>Mating </li>
|
||||
<li>Marriage </li>
|
||||
<li>Death </li>
|
||||
<li>Education </li>
|
||||
<li>Career </li>
|
||||
</ul>
|
||||
<br>
|
||||
<h3>Religion + Legend </h3>
|
||||
<ul>
|
||||
<li>Dominant Religions </li>
|
||||
<li>Denominations </li>
|
||||
<li>Cults </li>
|
||||
<li>Atheism </li>
|
||||
<li>Religious Figures </li>
|
||||
<li>Central themes of the religious teachings </li>
|
||||
<li>Explanations for the natural world - how the world came to be? the origin of Man? </li>
|
||||
<li>Afterlife - where do they go after they die? </li>
|
||||
<li>Evidence for religion </li>
|
||||
<li>Local legends </li>
|
||||
</ul>
|
||||
<br>
|
||||
<h3>Climate </h3>
|
||||
<ul>
|
||||
<li>Preferred climate, climates inhabitted </li>
|
||||
<li>How do they adapt to their climate? </li>
|
||||
<li>Danger </li>
|
||||
<li>How does their climate connect and separate them from other cultures? </li>
|
||||
<li>What raw materials are available to them? </li>
|
||||
<li>What seasons do they have? </li>
|
||||
<li>Weather </li>
|
||||
</ul>
|
||||
<br>
|
||||
<h3>History </h3>
|
||||
<ul>
|
||||
<li>How is history recorded and shared? Is it accurate? </li>
|
||||
<li>Origin of their people, nation </li>
|
||||
<li>Significant events - expansion, wars, diaspora, exile, mass murder, transfers of power </li>
|
||||
<li>Local history - early settlement, original population, development, local heroes, times that national events or figures that visited the local area </li>
|
||||
</ul>
|
||||
<br>
|
||||
<h3>Culture </h3>
|
||||
<ul>
|
||||
<li>Cultural Identity </li>
|
||||
<li>Housing </li>
|
||||
<li>Cuisine, Dining </li>
|
||||
<li>Leading Industries, Imports, Exports, Trade </li>
|
||||
<li>Class Stratification, Castes </li>
|
||||
<li>Factions, Politics </li>
|
||||
<li>Gender, Gender Roles </li>
|
||||
<li>Race, Sub-race - Where and when did the other races or subraces arrive? Where do they tend to live? Influence on the greater culture, and vice versa? Race relations? Stereotypes? How are biracial people perceived? </li>
|
||||
<li>Foreign culture - immigration policies to and from, perception of immigrants </li>
|
||||
<li>Crime - Forms of crime, punishment </li>
|
||||
<li>Health </li>
|
||||
<li>Beauty, Fashion - Beauty Standards/Desired traits for mating, Differences among different demographics + factions, Influences </li>
|
||||
<li>Rituals, Holidays, Festivals, Fairs, Masquerades </li>
|
||||
<li>Language </li>
|
||||
<li>Naming practices - when are names received? how many names are given? are names ever changed? what are naming conventions and how do they differ among the different factions? are there naming authorities or rules? </li>
|
||||
<li>Etiquette </li>
|
||||
<li>Art - Architecture </li>
|
||||
<li>Entertainment - sports, hobbies</li>
|
||||
<li>Symbols, Color associations </li>
|
||||
</ul>
|
||||
<br>
|
||||
<h3>Others </h3>
|
||||
<ul>
|
||||
<li>Time </li>
|
||||
<li>
|
||||
</ul>
|
||||
<br>
|
||||
@@ -0,0 +1,15 @@
|
||||
<!--reading-journal-->
|
||||
<h1>Magic: A Fantastic Comedy in a Prelude and Three Acts</b> - G.K. Chesterton (1913) </h1>
|
||||
january 8, 2020<br>
|
||||
<br>
|
||||
<br>
|
||||
Did you know G.K. Chesterton wrote a play? Its existence really surprised me while browsing Project Gutenberg. I know him mostly as the author of The Everlasting Man and lots of other books about philosophy and religion. He's not stuffy, though. His style is so poetic and dramaticized through use of personification, he makes the topics as enjoyable as fiction...at least, from what I remember. It's been 10 years since I read anything else by him. <br>
|
||||
<br>
|
||||
Apparently, George Bernard Shaw wrote a letter pressuring him into drama because he felt he was wasting his talent on journalist. (According to <a href="https://www.chesterton.org/lecture-25/">Chesterton University's Lecture 25: Magic by Dale Ahlquist</a>) <br>
|
||||
"I shall deliberately destroy your credit as an essayist, as a journalist, as a critic, as a Liberal, as everything that offers your laziness as a refuge, until starvation and shame drive you to serious dramatic parturition. I shall repeat my public challenge to you; vaunt my superiority; insult your corpulence; torture Belloc; if necessary, call on you and steal your wife’s affections by intellectual and athletic displays, until you contribute something to British drama." (also from that <a href="https://www.chesterton.org/lecture-25/">link</a>) <br>
|
||||
<br>
|
||||
You can read Magic, too, at <a href="https://www.gutenberg.org/files/19094/19094-h/19094-h.htm">Project Gutenberg</a>. Plays are meant to be performed, though, so hopefully you can find something on Youtube at least. <br>
|
||||
<br>
|
||||
|
||||
<br>
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
<!--reading-journal-->
|
||||
<h1>Drinker of Souls - Jo Clayton (1986) </h1>
|
||||
january 8, 2020<br>
|
||||
<br>
|
||||
<br>
|
||||
I usually read classics or philosophy, so I thought I'd cut loose and read my first 80s science fiction novel: Drinker of Souls, from Jo Clayton's Drinker of Souls trilogy. Unfortunately, Clayton's novels are probably all out of print and won't be entering the public domain for a long, long time. I found mine at a thrift store. <br>
|
||||
<br>
|
||||
I just picked up a random scifi book, but apparently the Skeen Trilogy by this author is more popular. <br>
|
||||
<br>
|
||||
Review here
|
||||
<br>
|
||||
I read half of the next book, Blue Magic, but it was kind of boring and the characters were less interesting for me. It explored more parallel worlds, all with dramatically different levels of technology and magic. It had that 'wizards using computers' aesthetic that isn't done often enough. The setting reminded me of the Sigil in Planescape: Torment, how characters from all over get trapped in Brann's world. There was the guy from a futuristic trapped there with his phaser, like that number tattoo guy in the Buried Village who tells you about his cyberpunk world. <br>
|
||||
<br>
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
<!--article,article-->
|
||||
<h1>title in lowercase </h1>
|
||||
date in lowercase<br>
|
||||
#accessibility #ai #apache #blogging #bottle #color #css #design #gamedescription #gamedesign #gamejam #gamemechanics #git #html #internationalization #json #localization #marketing #mockup #nginx #php #programming #python #regex #regularexpression #server #simpletemplate #skills #systemdiagram #webdev #webdesign #website<br>
|
||||
<br>
|
||||
<b>term</b> is etc. <br>
|
||||
<br>
|
||||
Capitalize some words. <br>
|
||||
<br>
|
||||
<ul>
|
||||
<li>CSS, HTML, JSON, PHP </li>
|
||||
<li>CSS Grid, Flexbox </li>
|
||||
<li>MMO, RPG </li>
|
||||
<li>NPC, WASD, XP </li>
|
||||
<li>.CSV </li>
|
||||
<li>IM, PC, UI, URL, VPS </li>
|
||||
<li>GDC, YouTube</li>
|
||||
<li>2D, 3D </li>
|
||||
<li>First Class, Second Class</li>
|
||||
</ul>
|
||||
<br>
|
||||
<br>
|
||||
<h2>lowercase </h2>
|
||||
<ul>
|
||||
<li>blessfrey, chimchooree, pixel joy, pixel sparrow </li>
|
||||
<li>gamedev, webdev </li>
|
||||
</ul>
|
||||
<br>
|
||||
<ul>
|
||||
<li>coroutine </li>
|
||||
<li>lol </li>
|
||||
</ul>
|
||||
<br>
|
||||
How to spell words... <br>
|
||||
<br>
|
||||
<ul>
|
||||
<li>Chatroom </li>
|
||||
<li>Cooldown </li>
|
||||
<li>Eye Shadow </li>
|
||||
<li>Freeform </li>
|
||||
<li>Gameplay </li>
|
||||
<li>Hello World</li>
|
||||
<li>Multiclassing </li>
|
||||
<li>Mockup </li>
|
||||
<li>Petsite </li>
|
||||
<li>Playstyle </li>
|
||||
<li>Plugin </li>
|
||||
<li>Premade </li>
|
||||
<li>Skillbar </li>
|
||||
<li>Subfunction </li>
|
||||
<li>Videogame </li>
|
||||
<li>Web Page </li>
|
||||
</ul>
|
||||
<br>
|
||||
<h2>subtitle </h2><br>
|
||||
spacing like this <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">
|
||||
<br><br>
|
||||
<h3>subsubtitle with BrandName or CSS or chloe </h3>
|
||||
<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>
|
||||
<br>
|
||||
@@ -0,0 +1,116 @@
|
||||
<!---->
|
||||
<h1>FlightRising badges </h1>
|
||||
january 8, 2020<br>
|
||||
<br>
|
||||
<br>
|
||||
A favorite activity in FR is collecting badges from community-run events. If I back them up here, I won't lose as many. :) <br>
|
||||
<br>
|
||||
<b>Fire - Lava Bank - 1/21</b> <br>
|
||||
<img src="/static/img/fr/XUdWkkW.gif" alt="(image: FlightRising badge)" width="100" height="100"><br>
|
||||
<img src="/static/img/fr/b1AOHoJ.gif" alt="(image: FlightRising badge)" width="100" height="100"><br>
|
||||
<br>
|
||||
<b>Fire vs Light - 12/20</b> <br>
|
||||
<img src="/static/img/fr/yaVmX6u.png" alt="(image: FlightRising badge)" width="100" height="100"><br>
|
||||
<img src="/static/img/fr/xDr8a1W.png" alt="(image: FlightRising badge)" width="258" height="100"><br>
|
||||
<br>
|
||||
<img src="/static/img/fr/ZVJmarp.png" alt="(image: FlightRising badge)" width="100" height="100"><br>
|
||||
<img src="/static/img/fr/tcCHz91.png" alt="(image: FlightRising badge)" width="100" height="100"><br>
|
||||
<img src="/static/img/fr/vnh3Mff.png" alt="(image: FlightRising badge)" width="100" height="100"><br>
|
||||
<img src="/static/img/fr/LYPRI6F.png" alt="(image: FlightRising badge)" width="100" height="100"><br>
|
||||
<img src="/static/img/fr/SjrQCts.png" alt="(image: FlightRising badge)" width="100" height="100"><br>
|
||||
<img src="/static/img/fr/GgpglGe.png" alt="(image: FlightRising badge)" width="100" height="100"><br>
|
||||
<img src="/static/img/fr/aaDmWw4.png" alt="(image: FlightRising badge)" width="100" height="100"><br>
|
||||
<br>
|
||||
<b>Arcane - 9/20</b> <br>
|
||||
<img src="/static/img/fr/rlMOyL9.png" alt="(image: FlightRising badge)" width="100" height="100"><br>
|
||||
<br>
|
||||
<b>Water - Dom Push - 9/20</b> <br>
|
||||
<img src="/static/img/fr/badge/qjHFcDc3_o.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/nZVpG4qA_o.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/zizf7QON_o.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/w6nm2ozw_o.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/j8UN9lFU_o.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/jp31RUVs_o.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<br>
|
||||
<img src="/static/img/fr/badge/BQ0130S_o.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/kEdMEAr.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/ooqpaDf.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/TPdrafh.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/uC4Bb27.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/xQhJ1xN.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/z9l1QrF.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<br>
|
||||
<b>Fire - Flameforger's Festival - Exalts, Geyser's Grocery Games - 8/20</b> <br>
|
||||
<img src="/static/img/fr/badge/xtPgVlw.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/4hr3mkF.png" alt="(image: FlightRising badge)" width="466" height="100">
|
||||
<img src="/static/img/fr/badge/JkzY8tq.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<br>
|
||||
<img src="/static/img/fr/badge/Ugwb1bB.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/Vsjjk1F.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/TikpO8M.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/9fWw4WY.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/aFpsZk8.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<br>
|
||||
<img src="/static/img/fr/badge/KBPvEjz.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/KBPvEjz.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/KBPvEjz.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<br>
|
||||
<b>Fire - Lava Bank - 8/20</b> <br>
|
||||
<img src="/static/img/fr/badge/5jRjhgz" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<br>
|
||||
<b>Lightning - Thundercrack Carnivale - 7/20</b> <br>
|
||||
<img src="/static/img/fr/badge/6sma760.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/UBTHVjT.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/yNi4cd2.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/Qku4U0s.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<br>
|
||||
<b>Fire - Shocking Safari Zone - 7/20</b> <br>
|
||||
<img src="/static/img/fr/badge/0QLVhCv.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<br>
|
||||
<b>Fire - Baldwin's Brew for the Bank Over 9000 - 7/20</b> <br>
|
||||
<img src="/static/img/fr/badge/Cauldron1.gif" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/bm199ed.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<br>
|
||||
<b>Ice - 7/20</b> <br>
|
||||
<img src="/static/img/fr/badge/ebTXM7P.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/d2Sm0UO.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<br>
|
||||
<b>Arcane - 7/20</b> <br>
|
||||
personality quiz result: Starseeker <br>
|
||||
<img src="/static/img/fr/badge/1532000966.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<br>
|
||||
<img src="/static/img/fr/badge/R1I3CHl.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/jy44Pp7.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/Y6Uxj5O.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<br>
|
||||
<img src="/static/img/fr/badge/p1lH9gN.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/wBDxnV5.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/t5oWqxC.gif" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<br>
|
||||
<b>Fire - Shining Safari Zone - 7/20</b> <br>
|
||||
<img src="/static/img/fr/badge/l3XfYkQ.gif" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<br>
|
||||
<b>Fire - Trash for Cash - 7/20</b> <br>
|
||||
<img src="/static/img/fr/badge/ASvvnTt.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/Pixel_Trash_for_Cash_v2.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<br>
|
||||
<b>Wind vs Plague - 6-7/20</b> <br>
|
||||
<img src="/static/img/fr/badge/wvpfire.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/hogZwcV.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/wvpwind.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<br>
|
||||
<img src="/static/img/fr/badge/dqixKfS.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/WvP-OOF-t1.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/WvP-OOF-t2.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<br>
|
||||
<img src="/static/img/fr/badge/Kp99Tes.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/Saa8Z5q.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/G130THg.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/vhzV2z9.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<br>
|
||||
<b>Fire - Subspecies Raffle - 5-6/20</b> <br>
|
||||
<img src="/static/img/fr/badge/Cake.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/Candles.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/Balloons.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<img src="/static/img/fr/badge/PartyHat.png" alt="(image: FlightRising badge)" width="100" height="100">
|
||||
<br>
|
||||
@@ -0,0 +1,288 @@
|
||||
<code>/******************************************************************************/</code>
|
||||
<code>// SIMPLE INPUT RECORD/PLAYBACK</code>
|
||||
<code>// (c) 2015 Brian Provinciano</code>
|
||||
<code>//</code>
|
||||
<code>// You are free to use this code for your own purposes, no strings attached.</code>
|
||||
//
|
||||
// This is a very basic sample to record and playback button input.
|
||||
// It's most useful when activated on startup, deactivated on shutdown for
|
||||
// global button recording/playback.
|
||||
//
|
||||
// For details on more advanced implementations, see my GDC 2015 session:
|
||||
// -> Automated Testing and Instant Replays in Retro City Rampage
|
||||
// The slides and full video will be available on the GDC Vault at a later date.
|
||||
/******************************************************************************/
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
// wrap it so it can be conditionally compiled in.
|
||||
// for example, set INPUTREPLAY_CAN_RECORD to 1 to play the game and record the input, set it to 0 when done
|
||||
// INPUTREPLAY_CAN_RECORD takes priority over INPUTREPLAY_CAN_PLAYBACK
|
||||
|
||||
#define INPUTREPLAY_CAN_PLAYBACK 1
|
||||
#define INPUTREPLAY_CAN_RECORD 1
|
||||
|
||||
#define INPUTREPLAY_INCLUDED (INPUTREPLAY_CAN_PLAYBACK || INPUTREPLAY_CAN_RECORD)
|
||||
/******************************************************************************/
|
||||
|
||||
#if INPUTREPLAY_INCLUDED
|
||||
|
||||
#define INPUT_BUTTONS_TOTAL 32 // up to 32
|
||||
#define MAX_REC_LEN 0x8000 // the buffer size for storing RLE compressed button input (x each button)
|
||||
|
||||
/******************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
unsigned short *rledata;
|
||||
unsigned short rlepos;
|
||||
unsigned short datalen;
|
||||
unsigned short currentrun;
|
||||
} ButtonRec;
|
||||
/******************************************************************************/
|
||||
|
||||
// if INPUTREPLAY_CAN_RECORD, as soon as this class is instanced, it will automatically record when instanced/created.
|
||||
// statically creating this as a global will blanket the entire play session
|
||||
//
|
||||
// if INPUTREPLAY_CAN_PLAYBACK, playback will begin as soon as LoadFile() is used
|
||||
//
|
||||
class SimpleInputRec
|
||||
{
|
||||
unsigned int m_buttonstate;
|
||||
ButtonRec m_buttons[INPUT_BUTTONS_TOTAL];
|
||||
bool m_bRecording;
|
||||
|
||||
unsigned char* m_data;
|
||||
|
||||
public:
|
||||
SimpleInputRec()
|
||||
: m_buttonstate(0)
|
||||
, m_data(NULL)
|
||||
, m_bRecording(true)
|
||||
{
|
||||
}
|
||||
|
||||
~SimpleInputRec()
|
||||
{
|
||||
if(m_data)
|
||||
{
|
||||
#if INPUTREPLAY_CAN_RECORD
|
||||
WriteToFile();
|
||||
#endif
|
||||
delete[] m_data;
|
||||
}
|
||||
}
|
||||
|
||||
// run each frame before the game uses the live button input.
|
||||
// when recording, it saves the live input
|
||||
// during playback, it overwrites the live input
|
||||
void Update(bool bForce = false);
|
||||
|
||||
// to start a playback
|
||||
#if INPUTREPLAY_CAN_PLAYBACK
|
||||
bool LoadFile(KSTR szfilename);
|
||||
#endif
|
||||
|
||||
// to finish recording
|
||||
#if INPUTREPLAY_CAN_RECORD
|
||||
void WriteToFile();
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
void SimpleInputRec::Update(bool bForce)
|
||||
{
|
||||
#if INPUTREPLAY_CAN_RECORD
|
||||
if(m_bRecording)
|
||||
{
|
||||
unsigned int newbuttons = nesinput.buttons;
|
||||
|
||||
// allocate and initialize
|
||||
if(!m_data)
|
||||
{
|
||||
m_data = new unsigned char[INPUT_BUTTONS_TOTAL * MAX_REC_LEN * 2];
|
||||
unsigned short* dataptr = (unsigned short*)m_data;
|
||||
|
||||
for(int i=0; i<INPUT_BUTTONS_TOTAL; ++i)
|
||||
{
|
||||
ButtonRec& btn = m_buttons[i];
|
||||
|
||||
btn.rledata = dataptr;
|
||||
dataptr += MAX_REC_LEN;
|
||||
|
||||
btn.rlepos = 0;
|
||||
btn.currentrun = 0;
|
||||
btn.datalen = MAX_REC_LEN;
|
||||
}
|
||||
}
|
||||
|
||||
// write RLE button bit streams
|
||||
for(int i=0; i<INPUT_BUTTONS_TOTAL; ++i)
|
||||
{
|
||||
ButtonRec& btn = m_buttons[i];
|
||||
|
||||
if(bForce || (newbuttons&(1<<i)) != (m_buttonstate&(1<<i)) || btn.currentrun==0x7FFF)
|
||||
{
|
||||
if(btn.currentrun)
|
||||
{
|
||||
int bit = (m_buttonstate>>i)&1;
|
||||
btn.rledata[btn.rlepos++] = (bit<<15) | btn.currentrun;
|
||||
}
|
||||
btn.currentrun = bForce? 0 : 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
++btn.currentrun;
|
||||
}
|
||||
}
|
||||
|
||||
m_buttonstate = newbuttons;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if INPUTREPLAY_CAN_PLAYBACK
|
||||
if(!m_bRecording)
|
||||
{
|
||||
bool bIsRunning = false;
|
||||
for(int i=0; i<INPUT_BUTTONS_TOTAL; ++i)
|
||||
{
|
||||
ButtonRec& btn = m_buttons[i];
|
||||
if(btn.rledata)
|
||||
{
|
||||
bIsRunning = true;
|
||||
if(!btn.currentrun && btn.rlepos<btn.datalen)
|
||||
{
|
||||
unsigned short value = btn.rledata[btn.rlepos++];
|
||||
btn.currentrun = value&0x7FFF;
|
||||
m_buttonstate &= ~(1<<i);
|
||||
m_buttonstate |= ((value>>15)&1)<<i;
|
||||
--btn.currentrun;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(btn.currentrun)
|
||||
{
|
||||
--btn.currentrun;
|
||||
}
|
||||
else if(btn.rlepos==btn.datalen)
|
||||
{
|
||||
btn.rledata = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(bIsRunning)
|
||||
{
|
||||
// TODO: this is where you can overwrite the live button state to the prerecorded one
|
||||
systeminput.buttons = m_buttonstate;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
#if INPUTREPLAY_CAN_PLAYBACK
|
||||
bool SimpleInputRec::LoadFile(KSTR szfilename)
|
||||
{
|
||||
for(int i=0; i<INPUT_BUTTONS_TOTAL; ++i)
|
||||
{
|
||||
ButtonRec& btn = m_buttons[i];
|
||||
|
||||
btn.datalen = 0;
|
||||
btn.rledata = NULL;
|
||||
btn.rlepos = 0;
|
||||
btn.currentrun = 0;
|
||||
}
|
||||
|
||||
delete[] m_data;
|
||||
m_bRecording = false;
|
||||
|
||||
if(fcheckexists(szfilename))
|
||||
{
|
||||
FILE* f = fopen(szfilename, "wb");
|
||||
if(f)
|
||||
{
|
||||
// WARNING: You'll want to do more error checking, but just to keep it simple...
|
||||
|
||||
fseek(f,0,SEEK_END);
|
||||
unsigned long filelen = ftell(f);
|
||||
fseek(f,0,SEEK_SET);
|
||||
|
||||
m_data = new unsigned char[filelen];
|
||||
fread(m_data, 1, filelen, f);
|
||||
fclose(f);
|
||||
|
||||
unsigned char* bufptr = m_data;
|
||||
int numbuttons = bufptr[0] | (bufptr[1]<<8);
|
||||
bufptr += 2;
|
||||
if(numbuttons <= INPUT_BUTTONS_TOTAL)
|
||||
{
|
||||
for(int i=0; i<numbuttons; ++i)
|
||||
{
|
||||
ButtonRec& btn = m_buttons[i];
|
||||
|
||||
btn.datalen = bufptr[0] | (bufptr[1]<<8);
|
||||
bufptr += 2;
|
||||
}
|
||||
|
||||
for(int i=0; i<numbuttons; ++i)
|
||||
{
|
||||
ButtonRec& btn = m_buttons[i];
|
||||
if(btn.datalen)
|
||||
{
|
||||
// WARNING: Endian dependent for simplcicity
|
||||
btn.rledata = (unsigned short*)bufptr;
|
||||
bufptr += btn.datalen*2;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
#if INPUTREPLAY_CAN_RECORD
|
||||
void SimpleInputRec::WriteToFile()
|
||||
{
|
||||
if(m_data && m_bRecording)
|
||||
{
|
||||
Update(true);
|
||||
|
||||
FILE* f = fopen("_autorec.rec","wb");
|
||||
if(f)
|
||||
{
|
||||
fputc(INPUT_BUTTONS_TOTAL, f);
|
||||
fputc(0, f);
|
||||
|
||||
for(int i=0; i<INPUT_BUTTONS_TOTAL; ++i)
|
||||
{
|
||||
ButtonRec& btn = m_buttons[i];
|
||||
|
||||
fputc((unsigned char)btn.rlepos, f);
|
||||
fputc(btn.rlepos >> 8, f);
|
||||
}
|
||||
for(int i=0; i<INPUT_BUTTONS_TOTAL; ++i)
|
||||
{
|
||||
ButtonRec& btn = m_buttons[i];
|
||||
|
||||
// WARNING: Endian dependent for simplcicity
|
||||
fwrite(btn.rledata, 2, btn.rlepos, f);
|
||||
}
|
||||
|
||||
fclose(f);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
#endif // INPUTREPLAY_INCLUDED
|
||||
</code>
|
||||
@@ -0,0 +1,36 @@
|
||||
<!--200918-->
|
||||
<h1>my favorite GDC talks: Empathizing with Steam: How People Shop for Your Game by Chris Zukowski (2020) </h1>
|
||||
september 18, 2020<br>
|
||||
marketing, sale, steam, wishlist<br>
|
||||
<br>
|
||||
<a href="https://www.youtube.com/watch?v=UJiv14uPOac">Empathizing with Steam: How People Shop for Your Game by Chris Zukowski (2020)</a> - tips for how to design your Steam store page based on Zukowski's screenshare and shopping diary observations of ordinary people shopping on Steam
|
||||
<ul>
|
||||
<li>Essentially, make your gameplay genre absolutely clear within the first 4 screenshots and in the short description so that people will wishlist your game to buy during a seasonal Steam Sale.</li>
|
||||
<li>Approach your wishlisters as complete newcomers. Jazz up your Steam page before a Steam Sale. Release an update, post in your forums, put a Santa hat on your character. When wishlisters return to your page, they will see an active game and be sold on it all over again.</li>
|
||||
<li>His conclusions are very similar to how I shop on Steam, except I could care less for the tag section.</li>
|
||||
<li>first 4 images are shown when hovering over thumbnail in Steam. Make them represent the pillars of your gameplay, so the genre is clear.</li>
|
||||
<li>don't try to coerce new audiences into trying your game. try to find your audience and show them exactly what they are looking for.
|
||||
<li>include UI in screenshots, so gamers can decipher the genre and some gameplay mechanics</li>
|
||||
<li>Gamers naturally compare new games with the leading games of their genres to decide whether they will enjoy it.</li>
|
||||
<li>indie romance authors (who compete on a market of 8 million vs. steam's 40 thousand) use clear visual language in their coverart: tartan kilt + sword + distant castle = highland romance; animal behind a hunk = shapeshifter romance; woman in front of group of hunks = reverse harem. So a reader who sees a cover with multiple guys and a wolf, she knows it's a reverse harem of shape-shifting wolf boys without any descriptions or trailers.</li>
|
||||
<li>applying the wisdom of the romance authors, understand your audience's genre interests as sub-sub-sub-genres and make your genre crystal clear in your store page.</li>
|
||||
<li>Apply the tropes of your genre. The FPS coverart guy with the gun on all CoD and BF games, the two Street Fighter healthbars on the top of any fighter game</li>
|
||||
<li>Part 4 - How to manage a Steam sale</li>
|
||||
<li>People check their wishlist during sales, looking for discounts.</li>
|
||||
<li>People don't remember why they wishlisted games, so your page must look fresh even to your wishlist crew. Before a sale, post an update, theme your capsule image, post an announcement, upload a small patch, and comment in the forums.</li>
|
||||
<li>People remember games that are always on sale. Frequent sales increase familiarity.</li>
|
||||
<li>Power users use gg.deals or steamdb to track historic lows. Strategically staircase your way down over time. Coincide your all-time-lows with Big Steam Sales. Harness the fear of missing out.</li>
|
||||
<li>How to get from wishlist to cart</li>
|
||||
<li>Before clicking 'buy,' they check developer and publisher for someone they recognize or trust. They check 'more from this studio' to check familiarity with the dev's other games.</li>
|
||||
<li>Release more games to build this trust and familiarity.</li>
|
||||
<li>They check the 'relevant to you' bar to see if the genre matches games they've played and that friends with similar taste also like the game.</li>
|
||||
<li>How to manage your sales pricing</li>
|
||||
<li>How to get from cart to library</li>
|
||||
<li>After loading cart, they ask their friends whether they should go for it.</li>
|
||||
<li>Your current customers have to become ambassadors to complete this purchase loop. Treat them well! </li>
|
||||
<li>Abandon cart recovery in other online retailers beckons shoppers back before the sale ends. Steam lacks this, potentially losing devs 10% in revenue - https://www.annexcloud.com/blog/31-shopping-cart-abandonment-statistics-for-2018/</li>
|
||||
<li>Do a second marketing push during the last day of a sale.</li>
|
||||
<li>5 - How to wishlisters into buyers</li>
|
||||
<li></li>
|
||||
</ul>
|
||||
<br>
|
||||
@@ -0,0 +1,514 @@
|
||||
abyssal whip
|
||||
adamantine
|
||||
airship
|
||||
alchemy
|
||||
aloe
|
||||
alpine
|
||||
amber fossil
|
||||
ambrosia
|
||||
amulet
|
||||
anachronism
|
||||
anagram
|
||||
animal parade
|
||||
aphrodisiac
|
||||
apple
|
||||
apothecary
|
||||
apricot
|
||||
asterism
|
||||
atelier
|
||||
aura
|
||||
baby's breath
|
||||
backhoe
|
||||
bad cat
|
||||
Baldur
|
||||
bamboo
|
||||
bandit camp
|
||||
bandit king
|
||||
basil
|
||||
bell tower
|
||||
birthday dress
|
||||
birthstone
|
||||
black bear
|
||||
black market
|
||||
The Black Hand
|
||||
black knight
|
||||
black water
|
||||
black widow
|
||||
blackguard
|
||||
bloodstone
|
||||
blue and yellow
|
||||
blue bell
|
||||
blue blood
|
||||
blue rose
|
||||
bluebell
|
||||
bonfire
|
||||
box garden
|
||||
breath of life
|
||||
bubble bath
|
||||
bubble tea
|
||||
bunny boy
|
||||
buried treasure
|
||||
butter cake
|
||||
butterfly woman
|
||||
café
|
||||
camel
|
||||
candlelight
|
||||
candy store
|
||||
caravan
|
||||
cashmere
|
||||
castle
|
||||
cat café
|
||||
cat familiar
|
||||
cat man
|
||||
catnip
|
||||
catacombs
|
||||
cathedral
|
||||
celestial
|
||||
cemetery
|
||||
centaur
|
||||
chained to rocks
|
||||
chain mail
|
||||
chalcedony
|
||||
chameleon
|
||||
chamomile
|
||||
chandelier
|
||||
charmeuse
|
||||
cheese bread
|
||||
chiffon
|
||||
chimera
|
||||
chives
|
||||
chocolate factory
|
||||
chronomancer
|
||||
chrysanthemum
|
||||
cipher
|
||||
citadel
|
||||
citrine
|
||||
city of the dead
|
||||
clipart
|
||||
clover
|
||||
coin flip
|
||||
cold iron
|
||||
confetti
|
||||
constellation
|
||||
cookie cutter
|
||||
copycat
|
||||
coral
|
||||
cotton
|
||||
couture
|
||||
cove
|
||||
crab
|
||||
crazy quilt
|
||||
Crossroad Keep
|
||||
crucibled
|
||||
crystal sea
|
||||
cucumber
|
||||
daeva
|
||||
dark horse
|
||||
dark hour
|
||||
dark paradise
|
||||
death's-head hawkmoth
|
||||
deep space
|
||||
diadem
|
||||
Diana
|
||||
diorama
|
||||
dimetrodon
|
||||
dire wolf
|
||||
dollhouse
|
||||
donkey
|
||||
doppelgänger
|
||||
double life
|
||||
dragonfruit
|
||||
dragonstone
|
||||
dreamweaver
|
||||
dump truck
|
||||
Dymer
|
||||
dystopia
|
||||
ectoplasm
|
||||
edelweiss
|
||||
egg hunt
|
||||
El Dorado
|
||||
elemental
|
||||
elipse
|
||||
elixir of life
|
||||
emberlight
|
||||
Entrana
|
||||
eventide
|
||||
epitaph
|
||||
Epsom salt
|
||||
eternal youth
|
||||
ettin
|
||||
evil twin
|
||||
fable
|
||||
falling leaves
|
||||
fairy lights
|
||||
fairy ring
|
||||
faun
|
||||
favored soul
|
||||
femme covert
|
||||
femme fatale
|
||||
fiery sword
|
||||
fire ball
|
||||
fire opal
|
||||
firebrand
|
||||
fishing village
|
||||
floating
|
||||
flower woman
|
||||
flying
|
||||
folklore
|
||||
fountain of youth
|
||||
forge
|
||||
fortress
|
||||
freezing fog
|
||||
fringe
|
||||
frog prince
|
||||
fullness of time
|
||||
gallows
|
||||
Garden of Eden
|
||||
gargoyle
|
||||
genie
|
||||
geode
|
||||
ghost orchid
|
||||
ghost ship
|
||||
ghost town
|
||||
gingham
|
||||
girl in the internet
|
||||
girl in white
|
||||
glow stick
|
||||
glow-in-the-dark stars
|
||||
goblin
|
||||
gold rush
|
||||
gold standard
|
||||
golden apple
|
||||
golden orb weaver
|
||||
golem
|
||||
gray weather
|
||||
griffon
|
||||
grove
|
||||
guild
|
||||
guilty pleasure
|
||||
hall of monuments
|
||||
halo
|
||||
hand of God
|
||||
the hanged man
|
||||
hanging garden
|
||||
happy place
|
||||
haunted house
|
||||
headscarf
|
||||
heart
|
||||
heather
|
||||
hermit
|
||||
hermit crab
|
||||
holly
|
||||
holy grail
|
||||
honeycomb
|
||||
honeydew
|
||||
honeysuckle
|
||||
horizon
|
||||
hot air balloon
|
||||
hot and cold game
|
||||
hot cocoa
|
||||
hydrangea
|
||||
igari makeup
|
||||
illuminated text
|
||||
imp
|
||||
incense
|
||||
invisible man
|
||||
iridescence
|
||||
iris
|
||||
ironwood
|
||||
ivory
|
||||
jack-o'-lantern
|
||||
jacquard
|
||||
jade chain
|
||||
jasmine
|
||||
jellyfish
|
||||
juicebox
|
||||
kaleidoscope
|
||||
kesi silk
|
||||
kigurumi
|
||||
kingdom
|
||||
La Belle Sans Merci
|
||||
labyrinth
|
||||
lady cat
|
||||
Lady of Shallot
|
||||
Lady of the Lake
|
||||
lady in black
|
||||
lake of fire
|
||||
lair
|
||||
lamentation
|
||||
lavender
|
||||
lemonade
|
||||
licorice
|
||||
life-giver
|
||||
lighthouse
|
||||
lily
|
||||
lip gloss
|
||||
lip oil
|
||||
Little Red Riding Hood
|
||||
lizardman
|
||||
lobster
|
||||
locket
|
||||
Lokasenna
|
||||
loner
|
||||
loom
|
||||
lost city
|
||||
lost continent
|
||||
lost soul
|
||||
lotus
|
||||
love letter
|
||||
love potion
|
||||
low poly
|
||||
lullaby
|
||||
lunar eclipse
|
||||
lust
|
||||
macramé
|
||||
mages guild
|
||||
magic carpet
|
||||
malachite
|
||||
man in the moon
|
||||
mandrake
|
||||
manna
|
||||
marine
|
||||
Mars
|
||||
mask
|
||||
masquerade
|
||||
mead of poetry
|
||||
mean girl
|
||||
melon soda
|
||||
memento mori
|
||||
memoir
|
||||
mercury rivers and lakes
|
||||
metamorphosis
|
||||
meteorite
|
||||
metropolis
|
||||
miasma
|
||||
Midas Touch
|
||||
Milky Way
|
||||
millennial moon
|
||||
mind game
|
||||
miniature
|
||||
mink
|
||||
mirage
|
||||
mire
|
||||
mirror of Venus
|
||||
mirror on the wall
|
||||
mithril
|
||||
monastery
|
||||
money tree
|
||||
monk's hood
|
||||
monkey and bear
|
||||
moon rock
|
||||
moonflower
|
||||
moonglow
|
||||
moonstone
|
||||
morning glory
|
||||
mossy cobblestone
|
||||
moth
|
||||
mudskipper
|
||||
mural
|
||||
muse
|
||||
naga
|
||||
necromancer
|
||||
nightlight
|
||||
nocturnality
|
||||
nymph
|
||||
oneiromancer
|
||||
oblivion
|
||||
odalisque
|
||||
olive
|
||||
omen
|
||||
opal
|
||||
orb
|
||||
orchid
|
||||
orichalcum
|
||||
orphan
|
||||
palace
|
||||
panda eyes
|
||||
paper crane
|
||||
paper fan
|
||||
paper lantern
|
||||
paragon
|
||||
pearl
|
||||
periwinkle
|
||||
personality test
|
||||
phantom residue
|
||||
phantom thief
|
||||
pharisee
|
||||
philosopher's stone
|
||||
pickpocketing
|
||||
pilgrimage
|
||||
pixie stick
|
||||
pinwheel
|
||||
planetary weather
|
||||
plastic vampire fangs
|
||||
plushie
|
||||
poetry and prose
|
||||
pomegranate
|
||||
poppy
|
||||
post-rock
|
||||
pretzel
|
||||
princess of Kentucky
|
||||
principality
|
||||
prism
|
||||
prison planet
|
||||
poinsettia
|
||||
popcorn
|
||||
porcelain
|
||||
propaganda
|
||||
prophecy
|
||||
proverb
|
||||
psalm
|
||||
pseudonym
|
||||
pumpkin carving
|
||||
quiz show
|
||||
rainbow
|
||||
raw honey
|
||||
reaper
|
||||
reclining woman
|
||||
red
|
||||
reverse trap
|
||||
road roller
|
||||
rogue
|
||||
rooibos tea
|
||||
rose gold
|
||||
rose petal
|
||||
rose quartz
|
||||
rosemary
|
||||
runestone
|
||||
s'more
|
||||
sailor fuku
|
||||
Sanctum
|
||||
sandalwood
|
||||
sandcastle
|
||||
sandman
|
||||
sandstone
|
||||
sanguine, my brother
|
||||
sardonic
|
||||
satire
|
||||
satyr
|
||||
scone
|
||||
scrying pool
|
||||
scythe
|
||||
sea foam
|
||||
sea glass
|
||||
sea of stars
|
||||
sea storm
|
||||
seastrand
|
||||
secret garden
|
||||
secret passageway
|
||||
secret room
|
||||
seven deadly sins
|
||||
seven heavenly virtues
|
||||
shapeshifter
|
||||
sheep
|
||||
shipwreck
|
||||
shoegaze
|
||||
shooting star
|
||||
silk
|
||||
silk embroidery
|
||||
singing sword
|
||||
skeleton
|
||||
skipping stone
|
||||
slide puzzle
|
||||
slime
|
||||
smartphone
|
||||
smoke and mirrors
|
||||
smoothie
|
||||
snow globe
|
||||
soma
|
||||
soulmate
|
||||
space cowboy
|
||||
spooky chews
|
||||
squid
|
||||
spellbook
|
||||
spelunking
|
||||
spice cookie
|
||||
spirit animal
|
||||
spy
|
||||
stained-glass
|
||||
star sapphire
|
||||
stardust
|
||||
stargazer
|
||||
starry sky
|
||||
statuesque
|
||||
sticker book
|
||||
stinky cat
|
||||
stone circle
|
||||
stone face
|
||||
stone people
|
||||
storm cloud
|
||||
strawberries and cream
|
||||
strawberry blonde
|
||||
strawberry shortcake
|
||||
streusel
|
||||
sunflower
|
||||
swamp light
|
||||
swan song
|
||||
sword in the stone
|
||||
taffy
|
||||
talking forest
|
||||
tatting
|
||||
tea garden
|
||||
tears of Guthix
|
||||
terrarium
|
||||
three women
|
||||
tide pool
|
||||
tiger's eye
|
||||
toasted marshmallow
|
||||
topaz
|
||||
topiary
|
||||
toy kingdom
|
||||
treasure trails
|
||||
tree of life
|
||||
treehouse
|
||||
trick or treat
|
||||
trickster
|
||||
tulip
|
||||
tungsten
|
||||
underwater
|
||||
underworld
|
||||
unicorn horn
|
||||
unstoppable mailman
|
||||
urban legend
|
||||
utopia
|
||||
vampire
|
||||
Venice
|
||||
vanity of vanities
|
||||
Venus
|
||||
waiting room
|
||||
waking dream
|
||||
walled city
|
||||
wallflower
|
||||
wampus cat
|
||||
wandering eye
|
||||
wanderlust
|
||||
wasp lady
|
||||
watchmen on the wall
|
||||
water bearer
|
||||
water nymph
|
||||
waterfall room
|
||||
waterlily
|
||||
weeping willow
|
||||
Whip-Poor-Will
|
||||
whisper
|
||||
white Christmas
|
||||
will-o'-wisp
|
||||
wind chimes
|
||||
wings
|
||||
wishing well
|
||||
wisteria
|
||||
witchhouse
|
||||
witching hour
|
||||
wizard tower
|
||||
wolf's-bane
|
||||
woman and serpent
|
||||
the woodsman
|
||||
workshop
|
||||
wormwood
|
||||
wreath
|
||||
wyvern
|
||||
yak
|
||||
Yggdrasil
|
||||
Ys
|
||||
zealot
|
||||
zoo
|
||||
@@ -0,0 +1,36 @@
|
||||
<!---->
|
||||
<h1>reading journal </h1>
|
||||
january 8, 2020<br>
|
||||
<br>
|
||||
<br>
|
||||
I'll collect summaries, thoughts, and excerpts as I read. I used to read so much more. I should read more. <br>
|
||||
<br>
|
||||
<b>reading now</b> <br>
|
||||
<ul>
|
||||
<li><b>The Goddess of Atvatabar: being the history of the discovery of the interior world, and conquest of Atvatabar</b> - William R. Bradshaw (1892) </li>
|
||||
<li><b>An American Tragedy</b> - Theodore Dreiser (1925) </li>
|
||||
<li><b>How Few Remain</b> - Harry Turtledove (1997) </li>
|
||||
</ul>
|
||||
<br>
|
||||
<br>
|
||||
<b>books to read next</b> <br>
|
||||
<ul>
|
||||
<li><b>The Divine Comedy</b> - Dante Alighieri (1320) </li>
|
||||
<li><b>The Pilgrim's Progress from This World, to That Which Is to Come</b> - John Bunyan (1678) </li>
|
||||
<li><b>The Faerie Queen</b> - Edmund Spenser (1590) </li>
|
||||
<li><b>Waiting for Godot</b> - Samuel Beckett (1953) </li>
|
||||
<li><b>Metamorphoses</b> - Ovid (8) </li>
|
||||
<li><b>The Canterbury Tales</b> - Geoffrey Chaucer (1320) </li>
|
||||
<li><b>Phantastes</b> - George MacDonald (1858) </li>
|
||||
<li><b>The Lady of Shalott</b> - Alfred Tennyson (1833, 1842) </li>
|
||||
</ul>
|
||||
<br>
|
||||
<br>
|
||||
<b>completed books</b> <br>
|
||||
<ul>
|
||||
<li><b>Candide</b> - Voltaire (1759) </li>
|
||||
<li><b>Drinker of Souls</b> - Jo Clayton (1986) </li>
|
||||
<li><b>Making of a Bigot</b> - Rose Macaulay (1914) </li>
|
||||
<li><b>Magic: A Fantastic Comedy in a Prelude and Three Acts</b> - G.K. Chesterton (1913) </li>
|
||||
</ul>
|
||||
<br>
|
||||
@@ -0,0 +1,7 @@
|
||||
<!--210201-->
|
||||
<h1>March for Trump </h1>
|
||||
january 6, 2020<br>
|
||||
<br>
|
||||
<br>
|
||||
Today, the March for Trump resulted in a Capitol break-in. The photos are like something out of a videogame. I took them from Twitter, so I can't easily credit. <br>
|
||||
<br>
|
||||
Reference in New Issue
Block a user