characters, species, locations. a lot about giants and serpents

This commit is contained in:
chimchooree
2022-09-23 13:38:52 -05:00
parent 1ae7337074
commit a1db2f7b78
38 changed files with 581 additions and 164 deletions
+1
View File
@@ -18,5 +18,6 @@
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<a href=/story>story</a></li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<a href=/style>style guide</a></li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<a href=/terms>terms</a></li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<a href=/tweaks>tweaks</a></li>
</ul>
</div></div>
+2 -1
View File
@@ -1,7 +1,6 @@
% rebase('frame.tpl')
% import re
<div class="content-grid">
<div class="diary-dir top">
% max_pages = int((total - 1) / limit)
<%
@@ -89,6 +88,8 @@
</div>
<div class="diary-pages">
<h1>chimchooree's diary</h2>
% for s in snippets[page * limit:page * limit + limit]:
<div class="snippet">
<div class="snippet-title">
-105
View File
@@ -1,105 +0,0 @@
% rebase('frame.tpl')
<div class="content-grid">
<h1>blessfrey game design document </h1>
<p>Follow this style guide to avoid confusing bugs. Code doesn't always need to
follow the style guide, but a comment needs to be left by the offending code
explaining why it's necessary. The guide is not set in stone, and can be
disputed and altered. <br></p>
<br>
<p>(many parts written by my husband) <br></p>
<br>
<h2>node paths </h2>
<p>Node paths should be treated as though they have private access. Any node
within a scene can be thought of as within scope of that scene. Nodes higher in
the tree or inside instanced scenes are out of scope of the current scene.
However, the root of an instanced scene is within scope, so a path to that is
safe. Using an "out of scope" node path will result in null pointer exceptions
at best or confusing bugs at worse if a scene's structure is ever altered. <br></p>
<br>
<p>Add methods to the root of a scene that does whatever is needed to the nodes
inside. <br></p>
<br>
<p>If a property is needed from a node inside a scene, a getter in the
scene's root can return the value its child node's property. (see Setters and
Getters) <br></p>
<br>
<ul>
<li>don't use node paths to nodes higher than the scene's root </li>
<li>don't use node paths into instanced scenes </li>
<li>do add methods to the root of a scene that manipulates the inner nodes </li>
</ul>
<h2>child nodes </h2>
<p>It's fair for a script to depend on a consistent internal tree structure.
Only scripts inside a scene may alter the structure of its own tree. The tree's
structre is primarily altered by adding or removing children. Adding or
removing child nodes higer than the scene's root, or inside instanced scenes,
will cause inconsistent structure. Without this guideline, each scene would
need to constantly validate its own structure to be sure it hasn't been altered
by another script. <br></p>
<br>
<p>Add methods to the root of a scene that can add or remove children. These
methods can keep track of which nodes have been added or removed, so the
script can be aware of any changes to the scene's structure. <br></p>
<br>
<ul>
<li>don't add child nodes to nodes higher than the scene's root </li>
<li>don't add child nodes to instanced scenes </li>
<li>do add methods to the root of a scene for adding or removing children </li>
</ul>
<h2>setters + getters </h2>
<p>Often, some action always needs to be taken whenever a variable is changed.
Putting these actions in a setter method for that variable ensure that they're
always executed. If a setter is not made for a variable, there's some risk
that it may be changed without those actions being taken, and the source of
the change may be difficult to track. <br></p>
<br>
<p>Furthermore, a variable may not exist at all, but be derived from some
computation. In that case, a getter can create the illusion of a single
variable. <br></p>
<br>
<p>One more benifit, is that a setter can be deferred called or connected to a
signal, since its a method. <br></p>
<br>
<p>Variables can be changed to use getters and setters seamlessly, since they're
used no differently from variables that don't have getters and setters. If
there is a need to take some action whenever a value is set, a setter can be
added to it seamlessly. <br></p>
<br>
<ul>
<li>setters can execute any action when a property is changed </li>
<li>setters can be added seamlessly, without changing how the property is set </li>
</ul>
<h2>serialization </h2>
<p> <br></p>
<br>
<ul>
<li> </li>
</ul>
<h2>translations </h2>
<p>add a fake language from the start <br></p>
<br>
<ul>
<li> </li>
</ul>
<h2>documentation </h2>
<p> <br></p>
<br>
<ul>
<li> </li>
</ul>
<h2>time </h2>
<p>pausing <br></p>
<p>time control (every variable affected by time must be modified by time control) <br></p>
<p>decouple drawing and logic <br></p>
<br>
<ul>
<li> </li>
</ul>
<h2>moddability </h2>
<p>Commonly, this means making a base, then loading in the game as a mod. The content is written in a light scripting language, and it's best if I use the same API/tools a modder would. <br></p>
<br>
<ul>
<li> </li>
</ul>
</div>
+52
View File
@@ -0,0 +1,52 @@
% rebase('frame.tpl')
% import random
<div class="content-grid">
<div class="title">
<h1>location </h1>
</div>
<div class="ocs-nav">
% for o in locations:
<a href="/loc/{{o}}">
<img src="/static/img/loc/{{o}}/nav.png" alt="(link: {{o}})">
</a>
% end
</div>
<div class="profile">
<div class="name">
<h2>{{!name}} </h2>
</div>
<div class="label">
{{!profile[0]}}
</div>
<div class="basics">
<h2>basics </h2>
{{!profile[1]}}
</div>
<div class="story">
<h2>story </h2>
{{!profile[2]}}
</div>
<div class="desc">
<h2>description </h2>
{{!profile[3]}}
</div>
</div>
<div class="portrait">
<div style="background-image: url(/static/img/loc/{{name}}/portrait.png); height: 100%; background-repeat: no-repeat; background-position: bottom left;"></div>
</div>
<div class="gallery-div"><h2>gallery </h2><div class="gallery">
% if len(gallery) >=2:
% for g in gallery[2]:
% i = g[0].index('.')
% thumb = g[0][:i] + 'thumb' + g[0][i:]
<div class="galitem">
<a target="_blank" href="/static/img/loc/{{gallery[0]}}/{{g[0]}}">
<img src="/static/img/loc/{{gallery[0]}}/{{thumb}}" alt="Image: {{g[1]}}">
<div class="subtitle">{{g[1]}}</div>
</a>
</div>
% end
% end
</div></div>
</div>
+52
View File
@@ -0,0 +1,52 @@
% rebase('frame.tpl')
% import random
<div class="content-grid">
<div class="title">
<h1>species </h1>
</div>
<div class="ocs-nav">
% for o in species:
<a href="/species/{{o}}">
<img src="/static/img/species/{{o}}/nav.png" alt="(link: {{o}})">
</a>
% end
</div>
<div class="profile">
<div class="name">
<h2>{{!name}} </h2>
</div>
<div class="label">
{{!profile[0]}}
</div>
<div class="basics">
<h2>basics </h2>
{{!profile[1]}}
</div>
<div class="story">
<h2>story </h2>
{{!profile[2]}}
</div>
<div class="desc">
<h2>description </h2>
{{!profile[3]}}
</div>
</div>
<div class="portrait">
<div style="background-image: url(/static/img/species/{{name}}/portrait.png); height: 100%; background-repeat: no-repeat; background-position: bottom left;"></div>
</div>
<div class="gallery-div"><h2>gallery </h2><div class="gallery">
% if len(gallery) >=2:
% for g in gallery[2]:
% i = g[0].index('.')
% thumb = g[0][:i] + 'thumb' + g[0][i:]
<div class="galitem">
<a target="_blank" href="/static/img/species/{{gallery[0]}}/{{g[0]}}">
<img src="/static/img/species/{{gallery[0]}}/{{thumb}}" alt="Image: {{g[1]}}">
<div class="subtitle">{{g[1]}}</div>
</a>
</div>
% end
% end
</div></div>
</div>
+7
View File
@@ -102,5 +102,12 @@ added to it seamlessly. <br></p>
<ul>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9; </li>
</ul>
<h2>website </h2>
<p>Commonly, this means making a base, then loading in the game as a mod. The content is written in a light scripting language, and it's best if I use the same API/tools a modder would. <br></p>
<br>
<ul>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9; </li>
</ul>
https://tinypng.com/
</div>
+2 -2
View File
@@ -25,9 +25,9 @@
<p>It also ties into romance, but the only male romance option is a middle-aged adulterous fedora-tipping cradle-robbing creep who can barely remember your alignment, much less anything else about your personality, so ew. The other half-romance option is the epitome of the bad boy trope, no thanks. Don't know how NWN2 romance is handled and don't want to lol. Generally, I wouldn't mind adding dating to Blessfrey, but I think it's unnatural how it's treated as the climax of a long friendship in most games. I wouldn't be surprised if most dates are made outside of a friend group, especially if you include couples who only hung out a few times before dating. I didn't meet my husband through my friends either. It's also bordering on too serious for teens. The couples in my high school lasted a few weeks tops with rare exceptions. <br></p>
<br>
<h2>nickajack setting </h2>
<p>Southern stories aren't very common in video media, especially in games. Atlanta eats up most of the ones we do get. I grew up in the South, so I spent a lot of time in church, playing neighborhood games, and eavesdropping on grownup gossip about local politics, local myths, Cherokee legends. I just think it'd be cool to have some of my world in a game, thorns and all. It seems like a chance to differentiate, too. I've barely seen any of my childhood Sunday School songs, clapping games, or grid paper games in media about US kids. <br></p>
<p>I grew up in the South, so I spent a lot of time in church, playing neighborhood games, and listening to grownups gossip about local politics, local myths, Cherokee legends. It'd be nostalgic to distill some of my childhood into a game, thorns and all. It seems like a chance to differentiate, too. I've barely seen any of my childhood Sunday School songs, clapping games, or grid paper games in media about US kids. <br></p>
<br>
<p>(Honestly, it's kind of weird. Are cartoon and teen sitcom writers on the major networks a bunch of lazy trope-copiers? I swear, they all go straight for the dumb jerk jock clique and ugly geeks when high school isn't like that. The former high school quarterbacks I've met have been a well-rounded people with soccer moms who forced them to learn an instrument. There weren't really sitcom geeks so much as kids that run like Naruto, born-in-the-wrong-century girls, quiet metalheads, etc. Am I off-base lol? At least the shallow cheerleader bully clique trope was real in my middleschool.) <br></p>
<p>(Honestly, it's kind of weird. Are cartoon and teen sitcom writers on the major networks a bunch of lazy trope-copiers? I swear, they all go straight for the dumb jerk jock clique and ugly geeks when high school isn't like that. The former high school quarterbacks I've met have been a well-rounded people with soccer moms who forced them to learn an instrument. There weren't really sitcom geeks so much as kids that run like Naruto, born-in-the-wrong-century girls, quiet metalheads, etc. Am I off-base lol? The only one I've run into was the mean cheerleader clique.) <br></p>
<br>
<h2>inspo </h2>
<ul>