refactored gdd, more scalable

master
Mimi Momo 2 years ago
parent 10fc070e66
commit 0397a3ab24

@ -1,6 +1,3 @@
% rebase('frame.tpl')
<div class="content-grid">
<h1><a href="/gdd">blessfrey gdd</a> - IDs</h1>
<h2>description </h2>
<p>Entities need IDs for serving translations (even English is pulled in through the TranslationServer) and judging comparisons. <br></p>
<br>
@ -255,7 +252,5 @@
</ul>
<br>
<h3>ref ID </h3>
<p>Every entity with the base.gd script has a ref ID. It identifies a specific instance of an entity. The MessageBus assigns them sequentially as integers starting at 0 during the <span class="code">_ready</div> stage of each entity. The earlier the ref ID, the older the entity. <br></p>
<p>Every entity with the base.gd script has a ref ID. It identifies a specific instance of an entity. The MessageBus assigns them sequentially as integers starting at 0 during the <span class="code">_ready</span> stage of each entity. The earlier the ref ID, the older the entity. <br></p>
<br>
</div>

@ -0,0 +1 @@
<p>All acts of god are attributed to him. His steed is the MessageBus. He is technically an entity. <br></p>

@ -0,0 +1,25 @@
<p>Items - drops, drop table, floor items, base items, inventory items, move to pick up item, shift-move-to-pick-up-item, item spawner, item in container, item inspect, item use, dropping from inv <br></p>
<br>
<h2>four representations </h2>
<p>An item changes its form depending on its context. <br></p>
<br>
<p>Base items 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>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>
<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>item pickup </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 inspect menu. <br></p>
<br>
<p>Item pickup is triggered when a floor item is targeted, that is, a 'target' (left-click) triggers a $Item/Body/Sprite/Sprite.gd/_on_input_event. If 'no_move_to_target' (shift) is held while targeting, the item 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 floor items' inspect menu. Choosing it triggers that floor item'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 item.find_distance(player) > the player's <a href="/blessfrey-proxemics">intimate distance</a>,
<br>
<p>If the item is outside the player's intimate space, <br></p>

@ -0,0 +1,2 @@
<p>There are six standard jobs available to the player, but more can be discovered in the Abyss. <br></p>

@ -0,0 +1,2 @@
<p>Keywords are the building blocks of skills. <br></p>

@ -1,6 +1,3 @@
% rebase('frame.tpl')
<div class="content-grid">
<h1><a href="/gdd">blessfrey gdd</a> - <a href="blessfrey-mechanics">game mechanic</a> - inspect menu</h1>
<h2>description </h2>
<p>Right-click on an tangible entity or inventory item to open a popup inspect menu with all relevant inspect options. Selecting one will execute a method. Examples are 'follow Chloe' (pathfind after Chloe wherever she moves until action is cancelled), 'pick up clover' (item pickup), and 'examine button' (write a descriptive line about her in Helia's thought bubble) <br></p>
<br>
@ -32,4 +29,3 @@
<li>floor items✗ </li>
<li>inventory items✗ </li>
</ul>
</div>

@ -1,14 +1,9 @@
% import random
% rebase('frame.tpl')
<div class="content-grid">
<h1><a href="/gdd">blessfrey gdd</a> - proximity</h1>
<p>(All distances on this page refer to interentitic distance, not spatial distance.) <br></p>
<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>Generally, proxemics refers to the study of the relationship between social beings and physical distance. In Blessfrey, relative distances between interactables and game mechanic ranges 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>It's so unfortunate that social distance is more often associated with the pandemic than proxemics now. I may have to find more positive terms later, but these work well for me. :/ I like the implication of a generalized "personal bubble" instead of the solely combat-oriented "aggro bubble" of other RPGs. <br></p>
<p>It's so unfortunate that proxemics became associated with the pandemic over anthropology. I kinda cringe when I hear "social distance" now tbh. I still like the implication of a generalized "personal bubble" instead of the solely combat-oriented "aggro bubble" of other RPGs. I don't really want to change, but the term just got sour. 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 was made by WebHamster for Wikipedia)
<p>(image was made 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>
@ -38,5 +33,3 @@
<li>relevancy: item pickup, melee attacks </li>
</ul></p>
<br>
</div>

@ -1,7 +1,2 @@
% import random
% rebase('frame.tpl')
<div class="content-grid">
<h1><a href="/gdd">blessfrey gdd</a> - skills</h1>
<p>Skills are individual powers usable by entities. They can take 8 at a time on their skillbar. They can be used for combat, puzzle-solving, and roleplaying. They are acquired through exploring. <br></p>
</div>

@ -1,7 +1,3 @@
% import random
% rebase('frame.tpl')
<div class="content-grid">
<h1><a href="/gdd">blessfrey gdd</a> - story</h1>
<p>Helia explores the Abyss with her friends. <br></p>
</div>

@ -1,6 +1,3 @@
% rebase('frame.tpl')
<div class="content-grid">
<h1>blessfrey gdd - dictionary of terms</h1>
<p><ul>
<li><b><a href="/blessfrey-items">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-proxemics">degrees(❥)</a></b>: (concept) the unit of social distance </li>
@ -13,5 +10,3 @@
<li><b><a href="/blessfrey-proxemics">proxemics</a></b>: (concept) interentitic distances </li>
<li><b><a href="/blessfrey-proxemics">social distance</a></b>: 90❥, declared at mobile.gd/social_space </li>
</ul></p>
</div>

@ -1,6 +1,3 @@
% rebase('frame.tpl')
<div class="content-grid">
<h1>blessfrey gdd - vibe</h1>
<p>The overall vibe of Blessfrey will be warm, fun, upbeat, pop, and stylish with pink colors. I need to find some pervasive motiff, especially one that symbolizes home for Helia. <br></p>
<br>
<h2>fantasy, modern, slice-of-life </h2>
@ -55,5 +52,3 @@
<p>Patty Cake, London Bridge is Falling Down, Five Little Monkeys, Itsy Bitsy Spider, Rain Rain Go Away, This Little Piggy, Here are Mother's Knives and Forks, Red Rover Red Rover (absolutely hated this one), Finger Family, The Muffin Man, Row Row Row Your Boat, Eenie Minnie Minie Moe, clean up songs, Father Abraham Had Many Sons, B-I-N-G-O, He's Got the Whole World in His Hands, Jesus Loves Me, Jesus Loves the Little Children, This Little Light of Mine, Head Shoulders Knees and Toes, Duck Duck Goose, Baa Baa Black Sheep, Sharks and Minnows, Cops and Robbers, Freeze Tag, How Much Wood Would a Woodchuck Chuck?, Guess What Chicken Butt, One Two Buckle My Shoe, Frere Jacques, If wishes were horses, You're a Grand Ole Flag, The Ants Go Marching One by One <br></p>
<br>
<p>Honestly, people are very musical, especially when they are younger. I can find most of these online, but we regularly made up our own songs, too. </p>
</div>

@ -399,6 +399,13 @@ def is_it_time(date):
today_string = today.strftime("%y") + today.strftime("%m") + today.strftime("%d")
return int(date) <= int(today_string)
def prepare_gdd_page(page, loc):
result = []
with open(loc + page) as f:
result = f.readlines()
content = ''.join(result)
return content
## Static ##
# Serve CSS
@ -535,81 +542,32 @@ def gddbf():
@route('/gdd')
def gdd():
return gddbf()
# Cast
@route('/blessfrey-cast')
def cast():
"""Cast Page"""
return char3()
# Credits
@route('/blessfrey-credits')
def creditsbf():
"""Credits Page"""
@route('/blessfrey-gdd/<page>')
def page(page):
if page.lower() == "credits":
return credits()
# ID
@route('/blessfrey-ids')
def id():
"""ID Page"""
info = {'css': 'doc', 'title': 'blessfrey gdd - IDs + keys', 'year': find_year()}
return template('bf-id.tpl', info)
# Items
@route('/blessfrey-items')
def items():
"""Items Page"""
info = {'css': 'doc', 'title': 'blessfrey gdd - items', 'year': find_year()}
return template('bf-items.tpl', info)
# Jobs
@route('/blessfrey-jobs')
def jobs():
"""Jobs Page"""
info = {'css': 'doc', 'title': 'blessfrey gdd - jobs', 'year': find_year()}
return template('bf-jobs.tpl', info)
# Keywords
@route('/blessfrey-keywords')
def keywords():
"""Keywords Page"""
info = {'css': 'doc', 'title': 'blessfrey gdd - keywords', 'year': find_year()}
return template('bf-keywords.tpl', info)
if page.lower() == "cast":
return char2()
if page.lower() == "milestones":
return milestones()
if page.lower() in ["style","style guide", "style%20guide"]:
return style()
if page.lower() in ["mechanics","game-mechanics","game_mechanics"]:
return mech()
loc = 'blessfrey-gdd/'
info = {'css': 'doc', 'title': 'blessfrey gdd - ' + page, 'year': find_year(), 'topic': page.lower(), 'writeup': prepare_gdd_page(page, loc)}
return template('page.tpl', info)
# Blessfrey Mechanics
@route('/blessfrey-mechanics')
@route('/blessfrey-gdd/mechanics')
def mech():
"""mechanics"""
info = {'css': 'doc', 'title': 'blessfrey gdd - game mechanics', 'year': find_year()}
return template('bf-mechanics.tpl', info)
@route('/blessfrey-inspect')
def mech1():
"""inspect"""
info = {'css': 'doc', 'title': 'blessfrey gdd - game mechanics', 'year': find_year()}
return template('bf-mech-inspect.tpl', info)
# Mercur
@route('/blessfrey-mercur')
def mercur():
"""Mercur Page"""
info = {'css': 'doc', 'title': 'blessfrey gdd - Mercur', 'year': find_year()}
return template('bf-mercur.tpl', info)
# Proxemics
@route('/blessfrey-proxemics')
def proxemics():
"""proxemics Page"""
info = {'css': 'doc', 'title': 'blessfrey gdd - proxemics', 'year': find_year()}
return template('bf-proxemics.tpl', info)
# Setting
@route('/blessfrey-setting')
def setting():
"""Setting Page"""
info = {'css': 'doc', 'title': 'blessfrey gdd - setting', 'year': find_year()}
return template('bf-setting.tpl', info)
# Skills
@route('/blessfrey-skills')
def skills():
"""Skills Page"""
info = {'css': 'doc', 'title': 'blessfrey gdd - skills', 'year': find_year()}
return template('bf-skills.tpl', info)
# Story
@route('/blessfrey-story')
def story():
"""Story Page"""
info = {'css': 'doc', 'title': 'blessfrey gdd - story', 'year': find_year()}
return template('bf-story.tpl', info)
info = {'css': 'doc', 'title': 'blessfrey gdd - game mechanics', 'year': find_year(), 'topic': 'game mechanics', 'writeup': prepare_gdd_page('mechanics', 'blessfrey-gdd/mechanics/')}
return template('page.tpl', info)
@route('/blessfrey-gdd/mechanics/<page>')
def page(page):
loc = 'blessfrey-gdd/mechanics/'
info = {'css': 'doc', 'title': 'blessfrey gdd - ' + page, 'year': find_year(), 'topic': '<a href="/blessfrey-gdd/mechanics">game mechanic</a> ~ ' + page.lower(), 'writeup': prepare_gdd_page(page, loc)}
return template('page.tpl', info)
# Blessfrey Style Guide Page
@route('/blessfrey-style-guide')
def style3():
@ -625,32 +583,6 @@ def style():
"""style guide"""
info = {'css': 'doc', 'title': 'blessfrey style guide', 'year': find_year()}
return template('style-guide.tpl', info)
# Terms
@route('/blessfrey-terms')
def terms():
"""Terms Page"""
info = {'css': 'doc', 'title': 'blessfrey gdd - dictionary of terms', 'year': find_year()}
return template('bf-terms.tpl', info)
# Art Direction
@route('/blessfrey-vibe')
def vibe():
"""GDD Page"""
info = {'css': 'doc', 'title': 'blessfrey gdd - vibe', 'year': find_year()}
return template('bf-vibe.tpl', info)
# Website
@route('/website')
def website():
"""Website Page"""
info = {'css': 'doc', 'title': 'blessfrey gdd - website', 'year': find_year()}
return template('website.tpl', info)
# Home Page - Index Template
#@route('/')
#def home():
#"""home"""
# loc = 'diary/entries/'
# info = {'css': 'index', 'title': 'blessfrey ~ action rpg by chimchooree', 'year': find_year(), 'news': list_headlines(sort_files(curate_files(gather_files(loc)))[0:10])}
# return template('index.tpl', info)
# Location Page
@route('/loc/') # if no location given

@ -1,6 +0,0 @@
% import random
% rebase('frame.tpl')
<div class="content-grid">
<h1><a href="/gdd">blessfrey gdd</a> - Mercur</h1>
<p>All acts of god are attributed to him. His steed is the MessageBus. He is technically an entity. <br></p>
</div>

@ -5,8 +5,8 @@
<p>The vision for Blessfrey <br></p>
<br>
<ul>
% for i in [["cast","blessfrey-cast"],["credits","blessfrey-credits"],["game mechanics","blessfrey-mechanics"],["IDs","blessfrey-ids"],["items","blessfrey-items"],["jobs","blessfrey-jobs"],["keywords","blessfrey-keywords"],["Mercur","blessfrey-Mercur"],["milestones","blessfrey-milestones"],["proxemics","blessfrey-proxemics"],["setting","blessfrey-setting"],["skills","blessfrey-skills"],["story","blessfrey-story"],["style guide","style-guide"],["terms","blessfrey-terms"],["vibe","blessfrey-vibe"],["website","website"]]:
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<a href=/{{i[1]}}>{{i[0]}}</a></li>
% for i in ["cast","credits","mechanics","ID","item","job","keyword","Mercur","milestones","proxemics","setting","skill","story","style guide","terms","vibe","website"]:
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<a href=/blessfrey-gdd/{{i}}>{{i}}</a></li>
% end
</ul>
</div></div>

@ -1,18 +0,0 @@
% import random
% rebase('frame.tpl')
<div class="content-grid">
<h1><a href="/gdd">blessfrey gdd</a> - items</h1>
<p>Items - drops, drop table, floor items, base items, inventory items, move to pick up item, shift-move-to-pick-up-item, item spawner, item in container, item inspect, item use, dropping from inv <br></p>
<br>
<h2>item pickup </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 inspect menu. <br></p>
<br>
<p>Item pickup is triggered when a floor item is targeted, that is, a 'target' (left-click) triggers a $Item/Body/Sprite/Sprite.gd/_on_input_event. If 'no_move_to_target' (shift) is held while targeting, the item will be targeted without 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 items' inspect menu. <br></p>
<br>
<p>character.gd/consider_pickup(item) points to UserControl.gd/pickup(item) then checks distance. <br></p>
<br>
<p>If the item is outside the player's intimate space,
</div>

@ -1,7 +0,0 @@
% import random
% rebase('frame.tpl')
<div class="content-grid">
<h1><a href="/gdd">blessfrey gdd</a> - jobs</h1>
<p>There are six standard jobs available to the player, but more can be discovered in the Abyss. <br></p>
</div>

@ -1,7 +0,0 @@
% import random
% rebase('frame.tpl')
<div class="content-grid">
<h1><a href="/gdd">blessfrey gdd</a> - keywords</h1>
<p>Keywords are the building blocks of skills. <br></p>
</div>

@ -0,0 +1,6 @@
% rebase('frame.tpl')
% import random
<div class="content-grid">
<h1><a href="/gdd" class="h1">blessfrey gdd</a> - {{!topic}}</h1>
{{!writeup}}
</div>
Loading…
Cancel
Save