diff --git a/src/blessfrey-gdd/docs/docs b/src/blessfrey-gdd/docs/docs
index c179471..2749a92 100644
--- a/src/blessfrey-gdd/docs/docs
+++ b/src/blessfrey-gdd/docs/docs
@@ -7,6 +7,11 @@
- highlight
diff --git a/src/blessfrey-gdd/docs/skill-json b/src/blessfrey-gdd/docs/skill-json
new file mode 100644
index 0000000..a541870
--- /dev/null
+++ b/src/blessfrey-gdd/docs/skill-json
@@ -0,0 +1,22 @@
+ A skill is defined as a JSON file housed at res://res/text/skills/. Its filename is its base id, and all data and keywords are expressed through JSON.
+
+ structure
+ A skill is defined as a JSON file housed at res://res/text/skills/. Its filename is its base id, and all data and keywords are expressed through JSON.
+
+ A skill's JSON array contains a...
+
+ - "note" (unused but useful summary for humans)
+ - "id" (the base id)
+ - "name_key" (key used by the TranslationServer)
+ - "name" (English name used for file/folder naming)
+ - "prof" (its associated job)
+ - "stat" (its associated perk or attribute)
+ - "e_cost" (its spirit cost)
+ - "a_time" (its activation duration)
+ - "cd" (its cooldown duration)
+ - "target" (list of possible targets: self, etc.)
+ - "s_range" (its range: social, etc)
+ - "functionality" (list of keywords)
+
+
+ Every skill's functionality is built from keywords read from that list. Each keyword is a dictionary containing its "type" (keyword's category) and some optional data.
diff --git a/src/blessfrey-gdd/docs/tangible b/src/blessfrey-gdd/docs/tangible-body
similarity index 100%
rename from src/blessfrey-gdd/docs/tangible
rename to src/blessfrey-gdd/docs/tangible-body
diff --git a/src/blessfrey-gdd/inspect b/src/blessfrey-gdd/inspect
index 6535c01..fc34c99 100644
--- a/src/blessfrey-gdd/inspect
+++ b/src/blessfrey-gdd/inspect
@@ -2,8 +2,6 @@
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)
structure
- relevant
-
Every tangible entity has an exported dictionary of inspect_options: {index: ['tr_key', 'method']}. For example, {0:['tr_pick up','pickup'],1:['tr_extinguish','extinguish']}. Every tangible appends 'examine' at ready.
The Clickable has a _ready input event signal looking for "right-click."
diff --git a/src/blessfrey-gdd/skill b/src/blessfrey-gdd/skill
index 7e10c6e..e9ffc19 100644
--- a/src/blessfrey-gdd/skill
+++ b/src/blessfrey-gdd/skill
@@ -1,2 +1,66 @@
+ description
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.
-
+
+ structure
+ A skill is defined as a JSON file housed at res://res/text/skills/. Its filename is its base id, and all data and keywords are expressed through JSON.
+
+ A SkillEquip contains a skill's base id. SkillEquips are housed at Skillbar/Skill SlotX's skill variable and the entity's arsenal.
+
+ A SkillEquip contains a DMV. A DMV handles the flow of the skill and collects skill data, including its tags.
+
+ logic
+ Every skill is built from a JSON dictionary, and its functionality is built from a list of nested dictionaries.
+
+ At ready, the SkillBase singleton uses the JSONreader singleton to convert all the JSON files into an array of skill dictionaries, accessed using the desired skill's base id.
+
+ A character's skill library's skill_library holds an array of all the base_ids for the skills he knows. When a skill is learned, it is added to the skill_library and passes the skill and the character through the MessageBus to the LearnSkill event handler.
+
+ The LearnSkill handler instances a SkillEquip and adds it to the character. The character entity appends the SkillEquip to its skill_arsenal and adds it as a child to the SkillBase. If the character has an empty slot on his skillbar, the skill is equipped onto the character. The character's Skillbar/Skill SlotX's skill variable holds the SkillEquip.
+
+ The character decides to use a skill. The character find_skill(slot index) returns the SkillEquip, whose use method takes the skill's dealer and taker.
+
+ If it doesn't fail, the SkillEquip creates a cooldown timer and sets cooling to true and sets up and enters its DMV.
+
+ The DMV publishes 'skill_used' along with {id,dealer,taker}. Then it runs the activation time, consumes the skill cost, adds its tags, then registers the skill.
+
+ Skill registry at the DMV involves registering each keyword and its activation requisites.
+
+ If the keyword is an 'if', it parses the keyword's conditional statement, it registers the accompanying "then" keyword. Ifs are one-time conditionals, so if it's not true at registry, the whole keyword chunk misses its chance.
+
+ If the keyword is 'when', it generates a 'when' event handler from res://skills/keyword/when/when.tscn and connects the 'happened' signal to registering the accompanying then keyword. Tags are added for the 'when', support for removal by tag is set up, and the 'when' is entered.
+
+ 'When' has a 'repeat', so it can trigger as many times as desired. Once is the assumed 'repeat', and -1 is an infinite repeat. The 'when' subscribes to its signal and provides itself as the handler. If it's conditional signal is just 'duration', a timer is set up and publishes to 'duration'. When the desired signal triggers, it verifies whether the full conditions of the 'when' are satisfied and should emit a 'happened' (and the DMV should register 'then'). If 'repeat' - 1 isn't 0, it goes around again.
+
+ If the keyword is 'expire', it frees the relevant keyword.
+
+ If the keyword is 'refresh', it resets the relevant keyword.
+
+ If the keyword is just a 'keyword', it instances the relevant keyword object, tags it, sets up removal by tag, adds it as a child, then enters it, doing whatever special code the keyword does.
+
+ challenges/known issues
+ Skill stuff -> character level but maybe should be entity level
+
+ I think every character has a skill equip for every known skill in his arsenal. Is that too many? Should one copy be on the SkillBase?
+
+ works for...
+
+ - skill autoequip from save✗
+ - skill equip new skill/empty slot/rearrange skillbar✗
+ - skill use by click/keyboard/AI selection✗
+ - skill range✗
+ - skill move into range✗
+ - skill activation✓
+ - skill cooldown✓
+ - skill cost/insuffient funds✗
+ - skill interrupt✗
+ - skill removal✗
+ - room/equipment skill✗
+ - Skill. (20 seconds) Gain 5 spirit every time you use a skill.✗
+ - If character has over 50% health, deal 75 damage.✗
+ - Blessing. (2 seconds) Removal: heal 80 life. No effect if ends early.✗
+ - Blessing. When character is moving, heal for 5 life every 1 second.✗
+ - Remove all blessings and poisons. Heal for 10 life for each blessing removed. Gain 10 spirit for each poison removed.✗
+ - Poison. If target is Blessed, Reduce Max Health by 25% (20 seconds). If poison ends early, target takes 50 damage.✗
+ - Blessing. Increase effectiveness of Disciple skills.✗
+ - Miracle. Remove 1 blessing. Disable skill on source's bar (5 seconds).✗
+
diff --git a/src/index.py b/src/index.py
index 1a12399..f4aa27a 100644
--- a/src/index.py
+++ b/src/index.py
@@ -469,8 +469,8 @@ def page(page):
return style()
if page.lower() in ["mechanics","game-mechanics","game_mechanics"]:
return mech()
- if page.lower() in ["job","keyword","skill"]:
- return mechpage(page)
+# if page.lower() in ["job","keyword","skill"]:
+# return mechpage(page)
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)
diff --git a/src/static/img/dev/guildwarsgirl.png b/src/static/img/dev/guildwarsgirl.png
new file mode 100644
index 0000000..6c96741
Binary files /dev/null and b/src/static/img/dev/guildwarsgirl.png differ
diff --git a/src/views/about.tpl b/src/views/about.tpl
index f7bcff9..1f805b7 100644
--- a/src/views/about.tpl
+++ b/src/views/about.tpl
@@ -7,19 +7,19 @@
system
-
Blessfrey is a 2D action rpg with a dual-job system which will determine the skill pool from which you will build your skillbar. Your AI companions will have skillbars of their own to edit, so think in terms of teams in order to defeat bosses and solve puzzles. Barely any class progression decisions are permanent, so you can experiment and express your playstyle.
+
Blessfrey is a 2D minideckbuilding action rpg. Your skillbar has limited slots and locks outside safe zones, so build a winning combination. The multiclass system will determine your skillpool. Your AI companions will have skillbars of their own to edit, so think in terms of teams to defeat bosses and solve puzzles. Freely experiment and express your playstyle.
jobs
-
Blessfrey jobs are equivalent to RPG classes. Your first job is a permanent decision which you will make early in gameplay. You will be able to unlock the rest and more during gameplay as side gigs. You can only have one side gig at a time, but you can always swap it outside of combat areas.
+
Blessfrey jobs are equivalent to RPG classes. Your first job is a permanent decision made early in gameplay. The rest will become available as side gigs. You can only have one side gig at a time, but you can always swap it in safe zones.
-
Each job has its own skill pool. Each skill is assigned to a job trait (similar to an RPG attribute). Each character has a set number of trait points they can use to raise job traits and the effectiveness of their associated skills. You gain more trait points through leveling up, but traits can be raised or lowered at will. Experiment to find your specialization!
+
Each job has its own skill pool. Each skill is assigned to a job trait (similar to an RPG attribute). Each character has a set number of trait points they can use to raise job traits and the effectiveness of their associated skills. You gain more trait points through gameplay, but traits can be raised or lowered at will. Experiment to find your specialization!
-
Your first job offers an exclusive trait called a job perk. It is not only tied to the effectiveness of related skills but also provides a constant buff. You can use the skills of your side gig's perk-related skills, but you cannot raise their effectiveness nor gain the buff. Perks are what distinguish characters from each other.
+
Your first job offers an exclusive trait called a job perk. It is not only tied to the effectiveness of related skills but also provides a constant buff. You can use the skills of your side gig's perk-related skills, but you cannot increase their effectiveness nor gain the buff. Perks distinguish teammates' roles from each other.
skills
-
Skills are individual powers that modify entities in the world of Blessfrey. They can launch fireballs, protect against incoming damage, spawn items or minions, teleport characters, reveal more UI details, and more. Your skillbar only has 8 skill slots and can only be edited in safe areas. The challenge comes from discovering effective strategies and synergies. Many of the same skills will be available to the player and enemy characters alike, so you must learn how to both use and counter each skill.
+
Skills are individual powers that modify entities in the world of Blessfrey. They can launch fireballs, protect against incoming damage, spawn items or minions, teleport characters, reveal more UI details, and more. Your skillbar only has 8 skill slots and can only be edited in safe zones. The challenge comes from discovering effective strategies and synergies. Many of the same skills will be available to the player and enemy characters alike, so you must learn how to both use and counter each skill.
-
Skills are inspired by Magic: The Gathering keywords. There are a limited number of keywords that are quick to learn, but I will combine them with interesting conditions to create a wide arsenal of options.
+
Skills + keywords are inspired by Magic: The Gathering cards + keywords. There are a limited number of keywords that are quick to learn, but they will combine with interesting conditions to create a wide arsenal of options.
Skills are gained during exploration. As you find new areas, encounter enemies, and interact with your surroundings, you will internalize those experiences as new skills. There are multiple paths to learning, so you are free to focus on your favorite parts of the game.
@@ -29,26 +29,26 @@
story
-
You play as Helia, a foreign transfer student living with her estranged uncle in a rural southern American town. You'll find an inexplicable amount of amenities, but none of them hold a candle to the haunted dungeon beneath the city. It's off-limits, but a dare's a dare.
+
You play as Helia, a foreign transfer student living with her estranged uncle in a rural town. You'll find an inexplicable amount of amenities given the population, but none of them hold a candle to the haunted dungeon beneath the city. It's off-limits, but a dare's a dare.
-
There's a whole other world down there with multiple fantastical races. Once you've been down there once, it's hard to avoid getting tangled in its mysteries.
+
There's a whole other world down there with multiple fantastical species. Even one dip puts you at risk of getting tangled in its mysteries.
-
The town is strange in its own right. Lucrest flourished under it's remarkably young mayor and became an economic oasis in an expanse of farmlands and mining communities, drawing people from out-of-state to enjoy its attractions. Mayor Dia claims to have a magic wand that controls economy, and people aren't inclined to disagree.
+
The town is strange in its own right. Lucrest flourished under its remarkably young mayor and became an economic oasis in an expanse of farmlands and mining communities, drawing tourists to enjoy its attractions. Mayor Dia claims to have a magic wand that controls the economy, and people aren't inclined to disagree.
characters
-
Helia (?/?) - The player character! Where she comes from, combat training is unheard of, so pick a job for her. No one really knows why she had to move from the US so suddenly and all alone.
+
Helia (?/?) - The player character! Where she comes from, combat training is unheard of, so she'll have to pick a job soon. No one really knows why she had to move from the US so suddenly and all alone.
-
Angel (Weaponmaster/Hacker) - Her real name's Miriam, but it sounds too frumpy, so please call her Angel. She is a naturally gifted with heavy blades and participates in a competitive swordsman league, but she usually comes across as friendly if not a little absent-minded. Computers interest her deeply, so she's always tinkering away with some new gadget or software.
+
Angel (Brawler/Hacker) - A natural talent with heavy blades, programming, and networking, despite inconsistent study. She's a friendly and outgoing person who tries to do good and please others but hasn't really established firm personal values.
-
Tessa (Tamer/Streetfighter) - She actually has a foreign background, too. Her mom and late father moved with her from France when she was really little. She loves the outdoors, animals, and fashion and is always sticking her nose in everyone's business. She's all fun all the time, so she doesn't always know where the boundary is between playful teasing and outright bullying.
+
Tessa (Tamer/Brawler) - Good at commanding animals in combat and using the environment to her advantage. She actually has a foreign background, too. Her mom and late father moved with her from France when she was really little. She loves the outdoors, animals, and fashion and is always sticking her nose in everyone's business. She's all fun all the time, so she doesn't always know where the boundary is between playful teasing and outright bullying.
-
Chloe (Disciple/Weaponmaster) - She's an orphan girl who was taken in by the church, and she spends a lot of her time serving there. She's reticent and deeply introverted but very sweet to those who get to know her.
+
Chloe (Disciple/Armsman) - Often called upon for prayers of spiritual healing and divine protection. She's an orphan girl who was taken in by the church, and she spends a lot of her time serving there. She's reticent and deeply introverted.
-
Aries (Weaponsmaster/Tamer) - Angel's twin brother, though he's her opposite in many ways. He's more attentive, but his frankness and disregard for etiquette makes him seem boorish. He also takes things with more gravity, fully committing himself to his studies and training. He prefers light weapons, light armor, and practical survival skills.
+
Aries (Armsman/Disciple) - Prefers light or ranged weaponry, light armor, and a disciplined approach. He's Angel's twin brother, though he's her opposite in many ways. He takes things with more gravity, fully committing himself to his studies, but his frankness and disregard for etiquette makes him seem boorish.
-
Night (Chemist/Weaponsmaster) - Despite not being much older than the other teens, he's completed a few years of apprenticeships at the leading research hospitals in the capital. The deterioration and death of his grandparents forced his return to close the final paperwork and figure out how to support his baby brother in the meantime. He runs a local pharmacy for now.
+
Night (Chemist/Brawler) - An expert in poisons and weapon oils. Despite his age, he's always had a crystal clear plan for his future, so he left school early to begin apprenticeships at research hospitals in the capital. Tragically, the deterioration and death of his grandparents forced his return. He runs a local pharmacy in the meantime while trying to decide how to support baby brother by himself.
Rune (?/?) - A startlingly tall and listless horned boy discovered in the local dungeon, surrounded by dinosaurs and other abyssal beasts. He doesn't trust people from the surface at first.
@@ -57,19 +57,13 @@
info
-
Blessfrey is a singleplayer action RPG game that will be playable in at least Windows, Linux, and HTML5. I'm going to sell it on Steam and wherever else lets me list it. It's being developed by me (chimchooree) in Godot Engine with original writing and art, though I'll need help with music and SFX eventually. (Unless I am an audio savant and don't yet know it?) My husband also helps sometimes, especially with writing plug-ins for the engine.♡ The full credits are available on the credits page.
-
+
Blessfrey is a singleplayer action RPG game that will be playable in at least Windows, Linux, and HTML5. I'll sell it on Steam and wherever else makes sense. It's being developed by me (chimchooree) in Godot Engine with original writing and art, though I'll need help with music and sound design eventually. (Unless I am an audio savant and don't yet know it?) My husband also helps sometimes, especially with writing plug-ins for the engine.♡ The full credits are available on the credits page.
+
timeline
-
Legless the Cat is the first demo. It has nothing to do with the game, but it's an important exercise for exporting and embedding an HTML5 game. I'd hate to make a sophisticated game over multiple years and be too inexperienced to actually share it with anyone. It also lets my kitty be in his own videogame! So cute.
-
-
As for the first real demo, I am currently creating a vertical slice of the game, focusing on a robust presentation of the skill system. This demo will be more of a tech demo than a game. It will feature 3 demo areas, and you will receive a bingo card directing you to try a smattering of what the full game will have to offer.
-
-
The next demo will demonstrate the game's faction system and AI, presenting more as a cutscene with unpredictable outcomes. A couple of different AI groups will wander around a map, intersect, then attack or aid according to affiliation. The faction system is rather complex, so I need to isolate it for testing purposes.
-
-
I think at this point, I will be able to put out a real demo. Demo #3 is going to be a level from the full game, introducing Rune and his multiphase boss fight.
+
Legless the Cat is the first official demo. It has nothing to do with the game, but it's an exercise in exporting and embedding an HTML5 game. It also lets my kitty be in his own videogame! So cute.
-
If I can do that, I'll definitely be ready to make chunks of the game until the entire thing is complete.
+
I worked on a version of Blessfrey for years, made a lot of mistakes, learned a lot of design practices and programming techniques, and ended up with an unmanageable mess. I'm starting over from scratch and ironing out the skill system (the most important element of gameplay) first this time.
-
No hard timeline, though!
+
I'll try to release playable builds as I complete features, even if they are ugly text-based versions, and document as I go. No particular timeline.
diff --git a/src/views/art.tpl b/src/views/art.tpl
deleted file mode 100644
index 7e07753..0000000
--- a/src/views/art.tpl
+++ /dev/null
@@ -1,33 +0,0 @@
-% rebase('frame.tpl')
-
-
-
art gallery
-
You will mostly find pixelart, digital painting, and mixed media here.
-
-
-
pixelart
- % for c in pixelart:
-
- % end
-
-
-
-
-
digital painting
- % for c in digital:
-
-
-
- % end
-
-
-
-
fanart
- % for c in fanart:
-
-
-
- % end
-
-
-
diff --git a/src/views/blessfrey-presskit.tpl b/src/views/blessfrey-presskit.tpl
index 35fe86b..2eb98b2 100644
--- a/src/views/blessfrey-presskit.tpl
+++ b/src/views/blessfrey-presskit.tpl
@@ -17,8 +17,8 @@
- Engine: Godot Engine
- Website: blessfrey.me
- Price: $874.99 USD
-
- Press Contact: Twitter (@lilchimchooree), Discord (CustomsOfficer#3449)
-
- Social: Twitter (@lilchimchooree)
+
- Press Contact: find me IRL
+
- Social: taking a social media break but should try Mastodon, HIVE more seriously
@@ -28,7 +28,7 @@
In active development, Blessfrey is the first commercial game by US-based indie game developer chimchooree.
Blessfrey is a 2D action RPG set in a rural southern town riddled with secret tunnels and dungeons.
-The dual-class and skill systems are inspired by Guild Wars 1 and Magic: The Gathering and emphasize player skill, personal expression, and experimentation. Delve deeper under the town by discovering new skills, building synergies within your skillbar, and recruiting AI teammates. Bosses, puzzles, and a secret world await.
+The dual-class and skillbar building systems are inspired by Guild Wars 1 and Magic: The Gathering and emphasize player skill, personal expression, and experimentation. Delve deeper under the town by discovering new skills, building synergies within your skillbar, and recruiting AI teammates. Bosses, puzzles, and a secret world await.
@@ -37,16 +37,16 @@ The dual-class and skill systems are inspired by Guild Wars 1 and Magic: The Gat
Features
- Try tens of possible dual-class combinations
- - Experiment with hundreds of skillbar combinations
- - Freely relocate skill points and swap out skills in safe areas
+ - Experiment with lots of skillbar combinations
+ - Freely relocate skill points and swap out skills in safe zones
- Learn new skills through themed exploration and gameplay. No skill shops nor UI skill trees
- - Explore an underground world populated by fantasy races and an above ground rural town
+ - Explore an above ground rural town and an underground world populated by fantasy species
Developer
- Chimchooree has a programming and art background, studying both in school and at home since she was a kid. Her five favorite games are Oblivion, Guild Wars 1, Arcanum, Divine Divinity, and Anachronox. Keep up with her activity on her
dev diary and
Twitter.
+ Chimchooree has a programming and art background, studying both in school and at home since she was a kid. Her five favorite videogames are Oblivion, Guild Wars 1, Arcanum, Divine Divinity, and Anachronox. Keep up with her activity on her
dev diary.
@@ -59,15 +59,15 @@ The dual-class and skill systems are inspired by Guild Wars 1 and Magic: The Gat
Credits
- - Code: chimchooree
+ - Code: chimchooree, husband
- Art: chimchooree
- - Design: chimchooree
+ - Design: chimchooree, husband
- Engine: Godot Engine
- Full Credits
diff --git a/src/views/diary-boxes.tpl b/src/views/diary-boxes.tpl
index d8eded3..e2ae260 100644
--- a/src/views/diary-boxes.tpl
+++ b/src/views/diary-boxes.tpl
@@ -5,15 +5,14 @@
about
Blessfrey is a 2D action RPG developed for PC in Godot Engine by Chimchooree.
- Edit your skillbar from hundreds of skills to fight enemies, solve puzzles, + explore.
+ Edit your skillbar from lots of skills to fight enemies, solve puzzles, + explore.
Inspired by Guild Wars 1 and Magic: The Gathering.
diff --git a/src/views/logo-bar.tpl b/src/views/logo-bar.tpl
deleted file mode 100644
index 5a2a023..0000000
--- a/src/views/logo-bar.tpl
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/src/views/me.tpl b/src/views/me.tpl
index 0604f19..21a0015 100644
--- a/src/views/me.tpl
+++ b/src/views/me.tpl
@@ -16,8 +16,7 @@
contact
I wouldn't mind hearing from you.
diff --git a/src/views/milestones.tpl b/src/views/milestones.tpl
index 0435537..07d4943 100644
--- a/src/views/milestones.tpl
+++ b/src/views/milestones.tpl
@@ -6,71 +6,70 @@
Focus and finish the game!
- Legend: nothing at all, designed, basic implementation, intentionally designed, documented, but with known issues, ironed out and polished
+
Legend: nothing at all, designed, basic implementation, intentionally designed, documented, but with known issues, ironed out and polished...or at least as done as it will ever be
0.0 - first
- - {{random.choice(['.','•','☆','★'])}} feature: export, embed
+ - {{random.choice(['.','•','☆','★'])}} feature: export, embed
-0.1 - bingo
+0.1 - bingo
- - {{random.choice(['.','•','☆','★'])}} feature: KnowledgeBase - achievements, progression
- - {{random.choice(['.','•','☆','★'])}} ~70 new skills
- - {{random.choice(['.','•','☆','★'])}} solid, extendable base for skills, keywords, skill equips, DMVs
- - {{random.choice(['.','•','☆','★'])}} ignore input during main menu, etc
- - {{random.choice(['.','•','☆','★'])}} basic dialog
- - {{random.choice(['.','•','☆','★'])}} basic serialization - save, load, config
- - {{random.choice(['.','•','☆','★'])}} basic pathfinding
- - {{random.choice(['.','•','☆','★'])}} basic obstructions - walls
- - {{random.choice(['.','•','☆','★'])}} basic AI - states, transitions
- - {{random.choice(['.','•','☆','★'])}} basic combat - life, spirit, attacks, skills, hitbox, aggro
- - {{random.choice(['.','•','☆','★'])}} base id, ref id
- - {{random.choice(['.','•','☆','★'])}} basic UI - start screen, controls screen, credits screen
- - {{random.choice(['.','•','☆','★'])}} basic audio - BGM, attack SFX, skill SFX, ambience
- - {{random.choice(['.','•','☆','★'])}} basic audio adjustments - volume slider, mute button
- - {{random.choice(['.','•','☆','★'])}} pause button
- - {{random.choice(['.','•','☆','★'])}} activator - button, switch
- - {{random.choice(['.','•','☆','★'])}} item pickup
- - {{random.choice(['.','•','☆','★'])}} inventory
- - {{random.choice(['.','•','☆','★'])}} interact - character, container
- - {{random.choice(['.','•','☆','★'])}} containers
- - {{random.choice(['.','•','☆','★'])}} travel between rooms
- - {{random.choice(['.','•','☆','★'])}} drop items
- - {{random.choice(['.','•','☆','★'])}} inspect
- - {{random.choice(['.','•','☆','★'])}} spawnpoints
- - {{random.choice(['.','•','☆','★'])}} XP, levels
- - {{random.choice(['.','•','☆','★'])}} skillbar - drag & drop, enforces deckbuilding rules
- - {{random.choice(['.','•','☆','★'])}} attack loop
- - {{random.choice(['.','•','☆','★'])}} skill use - out of range, cancel
- - {{random.choice(['.','•','☆','★'])}} learning skills
- - {{random.choice(['.','•','☆','★'])}} room skills
- - {{random.choice(['.','•','☆','★'])}} life/spirit regen
- - {{random.choice(['.','•','☆','★'])}} multiple idle animations
- - {{random.choice(['.','•','☆','★'])}} idle barks - contextual, story-based, character relationship-based
+ - {{random.choice(['.','•','☆','★'])}} feature: KnowledgeBase - achievements, progression
+ - {{random.choice(['.','•','☆','★'])}} 60 new skills
+ - {{random.choice(['.','•','☆','★'])}} solid, extendable base for skills, keywords, skill equips, DMVs
+ - {{random.choice(['.','•','☆','★'])}} base id, ref id
+ - {{random.choice(['.','•','☆','★'])}} achievements, MessageBus, event handlers
+ - {{random.choice(['.','•','☆','★'])}} activator - button, switch
+ - {{random.choice(['.','•','☆','★'])}} basic AI - states, transitions, patrols, flocking
+ - {{random.choice(['.','•','☆','★'])}} basic animations - walk up, walk down, walk right, pick up, weapon swing, skill use, death, chatting, idle
+ - {{random.choice(['.','•','☆','★'])}} attack loop
+ - {{random.choice(['.','•','☆','★'])}} basic audio support - BGM, attack SFX, skill SFX, footsteps, voiceacting, ambience
+ - {{random.choice(['.','•','☆','★'])}} basic audio adjustments - volume slider, mute button
+ - {{random.choice(['.','•','☆','★'])}} basic combat - life, spirit, attacks, skills, hitbox, aggro
+ - {{random.choice(['.','•','☆','★'])}} containers - guaranteed, random
+ - {{random.choice(['.','•','☆','★'])}} basic dialogue system - branches, variables
+ - {{random.choice(['.','•','☆','★'])}} basic equipment - slots, change appearance, modify combat numbers
+ - {{random.choice(['.','•','☆','★'])}} multiple idle animations + barks - contextual, story-based, character relationship-based
+ - {{random.choice(['.','•','☆','★'])}} inspect
+ - {{random.choice(['.','•','☆','★'])}} interact - character, container, foes
+ - {{random.choice(['.','•','☆','★'])}} inventory - sort, rearrange, split, drop
+ - {{random.choice(['.','•','☆','★'])}} item - pickup, drop, use
+ - {{random.choice(['.','•','☆','★'])}} basic job, sidegig, learn sidegig, switch sidegig, perk, traits, skills scale with traits
+ - {{random.choice(['.','•','☆','★'])}} basic obstructions - obstruct projectiles + view, obstruct neither, obstruct projectiles but not view, obstruct view but not projectiles
+ - {{random.choice(['.','•','☆','★'])}} basic pathfinding, following
+ - {{random.choice(['.','•','☆','★'])}} pause button, speed up + slow down game time
+ - {{random.choice(['.','•','☆','★'])}} life/spirit regen
+ - {{random.choice(['.','•','☆','★'])}} resurrection
+ - {{random.choice(['.','•','☆','★'])}} basic serialization - save, load, config
+ - {{random.choice(['.','•','☆','★'])}} skills - learning, using, moving to out-of-range target, cancel, interrupt, room/equipment/perk skills, projectiles
+ - {{random.choice(['.','•','☆','★'])}} skillbar - drag & drop, enforces deckbuilding rules
+ - {{random.choice(['.','•','☆','★'])}} spawnpoints
+ - {{random.choice(['.','•','☆','★'])}} travel between rooms
+ - {{random.choice(['.','•','☆','★'])}} basic UI menus - start screen, controls screen, credits screen
+ - {{random.choice(['.','•','☆','★'])}} basic UI - lifebar, spiritbar, skillbar, skill pool, inventory, dialogue, highlight
0.11 - AI factions
- {{random.choice(['.','•','☆','★'])}} feature: factions - disposition towards other factions
- - {{random.choice(['.','•','☆','★'])}} pathfinding
+ - {{random.choice(['.','•','☆','★'])}} pathfinding
- {{random.choice(['.','•','☆','★'])}} teams
- - {{random.choice(['.','•','☆','★'])}} death
- - {{random.choice(['.','•','☆','★'])}} drop tables
+ - {{random.choice(['.','•','☆','★'])}} death
+ - {{random.choice(['.','•','☆','★'])}} drop tables
- {{random.choice(['.','•','☆','★'])}} item rarity
- {{random.choice(['.','•','☆','★'])}} flocking
- - {{random.choice(['.','•','☆','★'])}} idle, wander
- - {{random.choice(['.','•','☆','★'])}} patrol routes
- - {{random.choice(['.','•','☆','★'])}} aggro range
- - {{random.choice(['.','•','☆','★'])}} targeting, prioritization
+ - {{random.choice(['.','•','☆','★'])}} idle, wander
+ - {{random.choice(['.','•','☆','★'])}} patrol routes
+ - {{random.choice(['.','•','☆','★'])}} aggro range
+ - {{random.choice(['.','•','☆','★'])}} targeting, prioritization
- {{random.choice(['.','•','☆','★'])}} skill use prioritization
0.12 - boss fight
- {{random.choice(['.','•','☆','★'])}} feature: multiphase, dynamic boss
- - {{random.choice(['.','•','☆','★'])}} obstacles - impermeable walls, permeable walls, opaque walls, transparent walls, destructible walls
+ - {{random.choice(['.','•','☆','★'])}} obstacles - impermeable walls, permeable walls, opaque walls, transparent walls, destructible walls
- {{random.choice(['.','•','☆','★'])}} boss splash screen
- {{random.choice(['.','•','☆','★'])}} cutscene-like scripting
- - {{random.choice(['.','•','☆','★'])}} resurrection
- - {{random.choice(['.','•','☆','★'])}} projectiles
- - {{random.choice(['.','•','☆','★'])}} only change skill in noncombat rooms
+ - {{random.choice(['.','•','☆','★'])}} projectiles
+ - {{random.choice(['.','•','☆','★'])}} only change skill in safe zones
- {{random.choice(['.','•','☆','★'])}} interrupt
- {{random.choice(['.','•','☆','★'])}} items - use to impart keywords
@@ -87,26 +86,26 @@