Add scripts to make a pruned “StoryQuest Kit” bundle#2576
Draft
wjt wants to merge 2 commits into
Draft
Conversation
- Remove references to StoryQuests from the Storybook scene. We need to keep the storybook in the StoryQuest kit - we will use it in Dev Island - but these two quests will not be present in that bundle. - Move music puzzle music to that puzzle's `components/` folder. This music is specific to the puzzle solution in this scene. This removes 5 files totalling about 1 MB from the StoryQuest kit bundle. - Move combat music resource to `assets/` folder. This is used in a number of scenes in the game, not just the quest it was previously stored in. In particular it is used in `scenes/game_elements/characters/enemies/mothsache/Mothsache_test_scene.tscn`, so that scene would be broken in a bundle where all lorequests have been deleted. Update REUSE.toml to mark this (and other tres files in `assets/`) as our work. - quest_separator: Remove reference to lore_quest. The image here is just a placeholder. Use an image that will still be present in a bundle with all quests deleted. - Move `ToggleableTileMapLayer` out of `world_map`. This is used in `scenes/game_elements/components/custom_hookable_objects_test.tscn` and `scenes/game_elements/components/custom_repellable_objects_test.tscn`, which we want to keep working in a pruned copy of the game with the `world_map` folder deleted. Also rename the script to match our `snake_case.gd` convention. Helps #2563
Rather than having Core: Threadbare participants start from a fork of
the entire repo, we want to try giving participants a stripped-down copy
of the project - specifically with all LoreQuests and other StoryQuests
removed. The goals are manifold:
- Reduce the cognitive burden of navigating a large project.
- Reduce the need to take special steps to deep link to a StoryQuest for
testing: the team's StoryQuest should be launched from the title
screen.
- Reduce the number and size of the files in the project, saving
electrons and helping with performance in Backstitch.
- Move us towards a model where rather than expecting that all
storyquests will be merged upstream (requiring learners to take
special care to only modify files in their folder, increasing
complexity; and hitting human scalability cliffs in the form of there
only being two full-time maintainers of the game reviewing StoryQuest
submissions) we instead treat them more as stand-alone games. For the
ones we choose to merge upstream, we can do the necessary work to
confine them to their own folder at that point; and you could imagine
adding a way to launch a separately-downloaded .pck for a StoryQuest.
As well as removing the lore_quests and story_quests folders, we also
have to remove the world_map folder (i.e. Fray's End and connected
scenes) because these scenes now link directly to LoreQuests.
I also decided to remove the non-CC0 Tiny Swords free pack, which we
have special permission to redistribute but which is not used outside of
one StoryQuest. This significantly reduces the number of files in the
project, which is helpful for Backstitch.
Having removed these files, we adjust the project settings so that the
quest launched from the title screen is the NO_EDIT template, and the
scene to return to when a quest is completed or abandoned is the title
screen. When we have Dev Island/Archipelago, we will change the latter
to that.
One approach would be to have learners modify the NO_EDIT template
in-place, in which case we would want to rename all those files and
delete the bootstrap tool. For now I just updated the StoryQuest
bootstrap tool to change the initial quest to the newly-duplicated one.
I checked for references into these folders from elsewhere in the game
as follows:
git grep -E \
'(lore_quests|story_quests|world_map|tiny-swords-non-cc0)' \
':!scenes/quests/lore_quests' \
':!scenes/quests/story_quests' \
':!scenes/world_map' \
':!assets/third_party/tiny-swords-non-cc0'
In a perfect world there would be no output from this command. There are
some lingering references: for example, the elders' dialogue references
the paths to various `quest.tres` resources. However there are (as far
as I can tell) no references that will cause a scene or resource to fail
to load. (This command is imperfect because, for example, teleporters
refer to other scenes by their UID stored as a string.)
Creating the bundle is implemented with two scripts:
1. A GDScript script which deletes files and adjusts project settings,
which is most easily done using Godot's own APIs (and reuses some
preexisting logic).
2. A shell script which drives the GDScript script, then does some
additional stuff (downloading the backstitch launcher, running Git
commands) which is more easily accomplished in shell.
I couldn't resist calling the script StoryQuest Construction Kit
Construction Kit (SQCKCK for short) but this is a placeholder name!
Still to do: a GitHub Actions workflow to run this.
Helps #2563
Member
Author
|
@jgbourque Still a work in progress but please have a read of the description above then take a look at https://drive.google.com/file/d/1-6nJkNDaWB57XZlTyY2YZhawQKTvSNQ_/view?usp=sharing |
|
Play this branch at https://play.threadbare.game/branches/endlessm/wjt/sqckck/. (This launches the game from the start, not directly at the change(s) in this pull request.) |
Member
Author
|
The point of committing the pruned build to Git is:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rather than having Core: Threadbare participants start from a fork of
the entire repo, we want to try giving participants a stripped-down copy
of the project - specifically with all LoreQuests and other StoryQuests
removed. The goals are manifold:
Reduce the cognitive burden of navigating a large project.
Reduce the need to take special steps to deep link to a StoryQuest for
testing: the team's StoryQuest should be launched from the title
screen.
Reduce the number and size of the files in the project, saving
electrons and helping with performance in Backstitch.
Move us towards a model where rather than expecting that all
storyquests will be merged upstream (requiring learners to take
special care to only modify files in their folder, increasing
complexity; and hitting human scalability cliffs in the form of there
only being two full-time maintainers of the game reviewing StoryQuest
submissions) we instead treat them more as stand-alone games. For the
ones we choose to merge upstream, we can do the necessary work to
confine them to their own folder at that point; and you could imagine
adding a way to launch a separately-downloaded .pck for a StoryQuest.
As well as removing the lore_quests and story_quests folders, we also
have to remove the world_map folder (i.e. Fray's End and connected
scenes) because these scenes now link directly to LoreQuests.
I also decided to remove the non-CC0 Tiny Swords free pack, which we
have special permission to redistribute but which is not used outside of
one StoryQuest. This significantly reduces the number of files in the
project, which is helpful for Backstitch.
Having removed these files, we adjust the project settings so that the
quest launched from the title screen is the NO_EDIT template, and the
scene to return to when a quest is completed or abandoned is the title
screen. When we have Dev Island/Archipelago, we will change the latter
to that.
One approach would be to have learners modify the NO_EDIT template
in-place, in which case we would want to rename all those files and
delete the bootstrap tool. For now I just updated the StoryQuest
bootstrap tool to change the initial quest to the newly-duplicated one.
I checked for references into these folders from elsewhere in the game
as follows:
In a perfect world there would be no output from this command. There are
some lingering references: for example, the elders' dialogue references
the paths to various
quest.tresresources. However there are (as faras I can tell) no references that will cause a scene or resource to fail
to load. (This command is imperfect because, for example, teleporters
refer to other scenes by their UID stored as a string.)
Creating the bundle is implemented with two scripts:
which is most easily done using Godot's own APIs (and reuses some
preexisting logic).
additional stuff (downloading the backstitch launcher, running Git
commands) which is more easily accomplished in shell.
I couldn't resist calling the script StoryQuest Construction Kit
Construction Kit (SQCKCK for short) but this is a placeholder name!
Still to do: a GitHub Actions workflow to run this.
Helps #2563