req, style

small-nav
chimchooree 2 years ago
parent f747925c80
commit 08e79978da

@ -27,6 +27,8 @@
<li><span class=unusual>basic UI - start screen, controls screen, credits screen</span> </li>
<li><span class=mundane>basic audio - BGM, attack SFX, skill SFX, ambience</span> </li>
<li><span class=unusual>basic audio adjustments - volume slider, mute button</span> </li>
<li><span class=mundane>pause button</span> </li>
<li><span class=unusual>activator - button, switch</span> </li>
<li><span class=unusual>item pickup</span> </li>
<li><span class=unusual>inventory</span> </li>
<li><span class=unusual>interact - character, container</span> </li>
@ -42,8 +44,10 @@
<li><span class=mundane>learning skills</span> </li>
<li><span class=mundane>room skills</span> </li>
<li><span class=unusual>life/spirit regen</span> </li>
<li><span class=mundane>multiple idle animations</span> </li>
<li><span class=mundane>idle barks - contextual, story-based, character relationship-based</span> </li>
</ul>
<h2>0.2 - AI factions </h2>
<h2>0.11 - AI factions </h2>
<ul>
<li><span class=mundane>feature: factions - disposition towards other factions</span> </li>
<li><span class=unusual>pathfinding</span> </li>
@ -58,7 +62,7 @@
<li><span class=unusual>targeting, prioritization</span> </li>
<li><span class=mundane>skill use prioritization</span> </li>
</ul>
<h2>0.3 - boss fight </h2>
<h2>0.12 - boss fight </h2>
<ul>
<li><span class=mundane>feature: multiphase, dynamic boss</span> </li>
<li><span class=unusual>obstacles - impermeable walls, permeable walls, opaque walls, transparent walls, destructible walls</span> </li>
@ -70,7 +74,7 @@
<li><span class=mundane>interrupt</span> </li>
<li><span class=mundane>items - use to impart keywords</span> </li>
</ul>
<h2>0.4 - job </h2>
<h2>0.13 - job </h2>
<ul>
<li><span class=mundane>feature: 3 basic jobs</span> </li>
<li><span class=mundane>side jobs</span> </li>
@ -81,7 +85,7 @@
<li><span class=mundane>weapons - impact outgoing keywords</span> </li>
<li><span class=mundane>environmental weaponry</span> </li>
</ul>
<h2>0.5 - UI </h2>
<h2>0.14 - UI </h2>
<ul>
<li><span class=unusual>feature: phone</span> </li>
<li><span class=mundane>codex app</span> </li>
@ -94,6 +98,7 @@
<li><span class=mundane>store sales, promotions</span> </li>
<li><span class=mundane>pop-up notifications, tool tips</span> </li>
<li><span class=unusual>skill library, skillbar</span> </li>
<li><span class=mundane>skill library - sort by job, classifications, alphabetical, order obtained, frequency of use</span> </li>
<li><span class=unusual>containers</span> </li>
<li><span class=unusual>highlight</span> </li>
<li><span class=unusual>main menu, submenus</span> </li>
@ -106,6 +111,7 @@
<li><span class=mundane>titles related to KnowledgeBase</span> </li>
<li><span class=mundane>custom cursors</span> </li>
<li><span class=mundane>custom font</span> </li>
<li><span class=mundane>applied keywords</span> </li>
</ul>
<h2>0.25 - foundation </h2>
<ul>
@ -118,7 +124,7 @@
<li><span class=mundane>zone: Uncle's house</span> </li>
<li><span class=mundane>quest: Angel sleepover</span> </li>
<li><span class=mundane>zone: Tidwell's house</span> </li>
<li><span class=mundane>quest: first last day of school</span> </li>
<li><span class=mundane>quest: first last day of school, welcome party</span> </li>
<li><span class=mundane>quest: mingle & bingo</span> </li>
<li><span class=mundane>quest: do you dare? OR lost and found</span> </li>
<li><span class=mundane>location: school - classroom, hallway, principal's office, supply room, restrooms, playground, courtyard (space used as auditorium)</span> </li>
@ -148,9 +154,39 @@
<li><span class=mundane>character routines, idles</span> </li>
<li><span class=mundane>Lucrest sidequests</span> </li>
<li><span class=mundane>quest: keep going! (text from Tessa to suit up and train)</span> </li>
<li><span class=mundane>zone: Eden's threshold</span> </li>
</ul>
<h2>0.75 - chapter 2 </h2>
<ul>
<li><span class=mundane></span> </li>
</ul>
<h2>0.9 - chapter 3 </h2>
<ul>
<li><span class=mundane></span> </li>
</ul>
<h2>1.97 - full game </h2>
<ul>
<li><span class=mundane>feature: the completed game</span> </li>
<li><span class=mundane>full main story</span> </li>
<li><span class=mundane>all major characters</span> </li>
<li><span class=mundane>complete soundtrack</span> </li>
<li><span class=mundane>all levels</span> </li>
<li><span class=mundane>all skills - icons, functionality, FX</span> </li>
<li><span class=mundane>sound effects, visual effects, responsive game with feedback </span> </li>
</ul>
<h2>1.0 - release </h2>
<h2>1.98 - involve other people (obv review after every milestone) </h2>
<ul>
<li><span class=mundane>feature: improvements based on suggestions</span> </li>
<li><span class=mundane>playtesting - diverse playtesters like colorblind, French keyboard users, different res/older computers, etc</span> </li>
<li><span class=mundane>maintain my community - forums, Discord, Twitter, any forums tied to store platforms, etc</span> </li>
<li><span class=mundane>press - YouTubers, Twitch streamers, bloggers, game journalists, local news, etc. I'll def reach out to Godot's showcase. </span> </li>
<li><span class=mundane>festivals/contests - local conventions, Godot con, Indie Games Expo, PAX, GDC. I'll seriously consider a booth/panel at the cons in my town. </span> </li>
<li><span class=mundane>booths - computers, keyboards, mouses, decorations, fliers, freebie promo items </span> </li>
<li><span class=mundane>funding - kickstarter, etc (no reason not to try. Even if I can finish the game in my freetime, I can set it up to cover fees then set wild stretch goals like getting Trigger to do my animations or hiring my favorite voice actor and composer or something)</span> </li>
</ul>
<h2>1.99 - release </h2>
<ul>
<li><span class=mundane>feature: store pages</span> </li>
<li><span class=mundane>store page - tagline</span> </li>
<li><span class=mundane>store page - paragraph</span> </li>
<li><span class=mundane>store page - big writeup</span> </li>
@ -160,12 +196,9 @@
<li><span class=mundane>small thumbnail cover art thing online platforms do</span> </li>
<li><span class=mundane>keyart - boxart-like vertical thing online platforms do</span> </li>
<li><span class=mundane>keyart - banner art</span> </li>
<li><span class=mundane>platform achievements</span> </li>
<li><span class=mundane>platform achievements, cloud saves, overlays, </span> </li>
<li><span class=mundane>downloadable extras - manual, soundtrack, artbook, novel, 4koma, wallpapers (desktop, mobile, probably others), emoticons for messengers, paper dolls, paper fold crafts</span> </li>
<li><span class=mundane>feature: the completed game</span> </li>
<li><span class=mundane>full main story</span> </li>
<li><span class=mundane>all levels</span> </li>
<li><span class=mundane>all skills</span> </li>
<li><span class=mundane>merch </span> </li>
</ul>
<h2>??? - post-release, if ever </h2>
<ul>
@ -182,22 +215,18 @@
<li><span class=mundane>voice acting, even if just for the trailer or intro cutscene or whatever</span> </li>
<li><span class=mundane>rebindable controls</span> </li>
<li><span class=mundane>support as many input devices as possible, though this probably isn't an XBOX controller-friendly game. keyboard, mouse, touchscreen, voice commands</span> </li>
<li><span class=mundane>get input from colorblind people</span> </li>
<li><span class=mundane>emotes</span> </li>
<li><span class=mundane>skill SFX</span> </li>
<li><span class=mundane>character creation - day/night, sample outfits</span> </li>
<li><span class=mundane>emotes for player (screenshot fodder) - sleep in beds, sit on seats, cry, confess, dance</span> </li>
<li><span class=mundane>pause button</span> </li>
<li><span class=mundane>change phone background</span> </li>
<li><span class=mundane>real web browser on phone</span> </li>
<li><span class=mundane>store screenshots in phone gallery</span> </li>
<li><span class=mundane>gear changes sprite appearance</span> </li>
<li><span class=mundane>gear changes companions' sprite appearance</span> </li>
<li><span class=mundane>gear changes dialog portaits - paper doll</span> </li>
<li><span class=unusual>activator - button</span> </li>
<li><span class=mundane>destructible terrain that requires specific keywords - slash or burn webs</span> </li>
<li><span class=mundane>disposition, affinity system</span> </li>
<li><span class=mundane>multiple idle animations</span> </li>
<li><span class=mundane>idle barks - contextual, story-based, character relationship-based</span> </li>
<li><span class=mundane>holidays</span> </li>
<li><span class=mundane>fishing minigame</span> </li>
<li><span class=mundane>hide UI for screenshots optionally</span> </li>

@ -0,0 +1,107 @@
% rebase('frame.tpl')
<div class="content-grid">
<div class="">
<h1>style guide </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>
</div>
Loading…
Cancel
Save