Skip to content

Import LoreJam Team 13's project from Backstitch - #2480

Draft
wjt wants to merge 12 commits into
mainfrom
lorejam-team-13
Draft

Import LoreJam Team 13's project from Backstitch#2480
wjt wants to merge 12 commits into
mainfrom
lorejam-team-13

Conversation

@wjt

@wjt wjt commented Jun 25, 2026

Copy link
Copy Markdown
Member

This is https://github.com/wjt/threadbare-lorejam-mythical-meadows/tree/equipo-13 manually rebased onto current main. I discarded some changes that are not intended, but there is more to discard!

@github-actions

Copy link
Copy Markdown

Play this branch at https://play.threadbare.game/branches/endlessm/lorejam-team-13/.

(This launches the game from the start, not directly at the change(s) in this pull request.)

@manuq

manuq commented Jun 30, 2026

Copy link
Copy Markdown
Collaborator

Playing from the branch and using the debug menu to mark all previous lore quests as completed, I couldn't pass the house. It looks like this is because of our recent teleport changes:

image

@manuq

manuq commented Jul 8, 2026

Copy link
Copy Markdown
Collaborator

I'm asking for their GitHub usernames, for now I asked this on Discord:

¡Hola equipo 13! Como bien saben, el primer premio de la Lore Jam es darles la oportunidad de integrar su misión ganadora en el juego. Estuvimos evaluando la calidad, y por supuesto considerando que se desarrolló en una jam, de forma frenética y con el tiempo que apremia. Empezamos a escribir un documento aquí. Les damos tres opciones:
La dejan así. Son bienvenidos a seguir iterando en Backstitch pero no será unida.
La presentan como una StoryQuest. Ustedes ya lo han hecho así que saben más o menos de qué se trata.
La presentan como una LoreQuest, para lo cual tendrán que hacer algunos ajustes adicionales a los requerimientos de una StoryQuest. Algunos de los cuales empezamos a anotar en el documento de arriba.

¿Cuál opción eligen? ¡Esperamos su definición!

@manuq

manuq commented Jul 9, 2026

Copy link
Copy Markdown
Collaborator

@GianPierooo and @xXLeopoldoXx expressed their preference to submit a LoreQuest.

This is manually rebased onto current main. I discarded some changes
that are not intended, but there is more to discard!
@manuq
manuq force-pushed the lorejam-team-13 branch from b476419 to 6e91407 Compare July 20, 2026 17:49
manuq added 4 commits July 20, 2026 17:43
Update the quest to suit the Teleporter refactor in
#2238 . Fix it by intantiating the
teleporter.tscn.
Since this scene is a test and not part of the quest, is easier to remove it
entirely than to make it work. Issues were:
- It was using the now removed frame camera behavior.
- The teleporter stopped working after refactor.
The abilities is now part of GameState.player.

Also apply the pre-commit linter changes in the scripts. For the next_scene in
ability_exit.gd I had to convert the scene path to its UID, because it exceeded
the max length. By the way this script should be soon changed: is checking if
the powerup for the new ability was grabbed inside a body-entered callback, and
is using SceneSwitcher directly instead of a SceneLink or Teleporter.
Update to the refactor in #2302 .
Previously each powerup had the name. Now the name is for lore quests in
lore_info.gd.

Also add a TODO note for changing this to be a modifier of repel.

Commit the editor changes of the tscn file that contains the powerup.
@manuq

manuq commented Jul 20, 2026

Copy link
Copy Markdown
Collaborator

I have rebased with latest main and appended commits to make the quest work again. Because we introduced some regressions (like #2480 (comment)) due to refactors which I consider "our fault":

@GianPierooo and @xXLeopoldoXx please start by:

The way you should work (for now) is by starting from this branch lorejam-team-13 and opening pull requests against it (not main). Try to do one pull request per change. Once we consider that this branch is suitable for merging with main, you'll be able to continue upstream!

@manuq manuq mentioned this pull request Jul 23, 2026
1 task
@manuq

manuq commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator

@GianPierooo @xXLeopoldoXx you got your first bug report! Check #2588

@xXLeopoldoXx

Copy link
Copy Markdown
Member

Hello, thank you so much for your patience. Last week we finished our final exams. This week we will gladly make progress on the necessary steps so that the lorequest can be released soon @manuq @wjt

refactor: rename folders, scenes, and assets to english
@manuq

manuq commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

@xXLeopoldoXx @GianPierooo como se puede ver en https://github.com/endlessm/threadbare/actions/runs/30333275746/job/90192769288?pr=2480 todavía faltan licencias:

The following files have no copyright and licensing information:
* scenes/quests/lore_quests/quest_004/01_dream_threshold/noria.dialogue
* scenes/quests/lore_quests/quest_004/02_caretaker_of_growth/sable_farewell.dialogue
* scenes/quests/lore_quests/quest_004/02_caretaker_of_growth/sable_intro.dialogue
* scenes/quests/lore_quests/quest_004/03_the_fading_woman/page_1.dialogue
* scenes/quests/lore_quests/quest_004/03_the_fading_woman/willomena_1.dialogue
* scenes/quests/lore_quests/quest_004/03_the_fading_woman/willomena_2.dialogue
* scenes/quests/lore_quests/quest_004/03_the_fading_woman/willomena_3.dialogue

Y como se puede ver en https://github.com/endlessm/threadbare/actions/runs/30333275746/job/90192769294?pr=2480 el linter aplica un formato. Deberían instalar pre-commit y correrlo para aplicar los cambios localmente. Vean como hacerlo acá: https://github.com/endlessm/threadbare/wiki/Contributing#coding-style

@xXLeopoldoXx

Copy link
Copy Markdown
Member

I have rebased with latest main and appended commits to make the quest work again. Because we introduced some regressions (like #2480 (comment)) due to refactors which I consider "our fault":

@GianPierooo and @xXLeopoldoXx please start by:

The way you should work (for now) is by starting from this branch lorejam-team-13 and opening pull requests against it (not main). Try to do one pull request per change. Once we consider that this branch is suitable for merging with main, you'll be able to continue upstream!

We created the assets using multiple AI references and existing models like threadbare's monk. The final result is entirely ours, and we have the LibreSprite files made by us.

@manuq

manuq commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

@wjt can you help us with ownership? @xXLeopoldoXx was able to open a pull request for this branch and even merged it #2606. I believe it's because he is part of team https://github.com/orgs/endlessm/teams/suenos-nocturnos

But @GianPierooo wasn't able to open a pull request agains this branch (lorejam-team-13). Should he fork the game to do so? Otherwise can you review #2612? It would require creating a team named @endlessm/lorejam-team13 with both @xXLeopoldoXx and @GianPierooo.

@wjt

wjt commented Jul 28, 2026

Copy link
Copy Markdown
Member Author

The CODEOWNERS file does not control who can open a PR. Anyone should be able to do that. (It is possible that people who are not org/repo members can only open PRs to the default branch, though I don't think so.)

It only controls who can merge a PR to main as configured in https://github.com/endlessm/threadbare/settings/rules/4212107. Anyone with write access to the repo (which includes @xXLeopoldoXx but not @GianPierooo (yet)) should be able to merge a PR to any other branch.

So that PR will not solve the problem at hand.

I have invited @GianPierooo to a group with write access to this repo.

@wjt

wjt commented Jul 28, 2026

Copy link
Copy Markdown
Member Author

Having looked at the error messages on Discord: the problem is not that @GianPierooo cannot open a PR targeting this branch, but that you cannot push to branches in this repo at all: not surprising, you need write access for that! So @GianPierooo if you accept my invitation to join the organisation you will be able to push to this repo.

@manuq

manuq commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

@wjt oh, of course. Thanks for the explanation.

Adds the missing SPDX-FileCopyrightText / SPDX-License-Identifier
headers to the 7 .dialogue files in quest_004 (Mythical Meadows),
resolving the reuse lint failures that were blocking #2606 .
@GianPierooo

Copy link
Copy Markdown
Contributor

Hello, @wjt and @manuq.

I apologize for the delay in responding; I just accepted the invitation to join the organization, so I now have write access. I’ve already uploaded the corrections to the SPDX license header for the 7 .dialogue files in quest_004 (included in #2624). We’re now working to resolve the remaining issues.

Thank you very much for your patience and guidance!

GianPierooo and others added 5 commits July 30, 2026 00:36
…ws (#2627)

The intro book ("The Last Petal") at the start of Mythical Meadows was
not showing any story text, because the scene instance overrode
`titles`/`pages` with empty arrays. This is now fixed, and the book's
content is defined directly in the script so it can't accidentally be
emptied out from the scene again.

While fixing this, we also reused the page-turn animation and
title-ribbon art already used by the storybook quest picker in Fray's
End (`scenes/menus/storybook/`), instead of a static image and a plain
label, so the intro book now uses very similar logic/art to the one
already working well in Fray's End.

Resolves the intro book issue in the reported bug list.
#2635)

improve gameplay, update scene paths, translate script comments and few
details

---------

Co-authored-by: Gian Piero Cano <gianpierodaniel@gmail.com>
fix(quest004): optimize visibility, NPC parameters, and object placement
in night_valley and house_with_legs2

- night_valley: Reduced Motsache's vision range and widened camera FOV
upon scene entry so players can observe NPC movement patterns and
navigate easier.
- night_valley: Integrated additional checkpoints to prevent punitive
restarts.
- house_with_legs2: Re-aligned menhir positioning for improved grappling
hook anchor points and smoother interaction.

The zoom out is shown to facilitate the view of the enemy and strategic
checkpoints

https://github.com/user-attachments/assets/c5d07dce-1844-41c9-93fa-91610f6b28c0

---------

Co-authored-by: Gian Piero Cano <gianpierodaniel@gmail.com>
@manuq

manuq commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

@xXLeopoldoXx @GianPierooo thanks for working on the requested changes!

On licenses: It looks like Creative Commons Attribution-ShareAlike (CC BY-SA) license can be applied to assets generated by Gemini, @wjt can you double check if the text below is correct?

SPDX-FileCopyrightText: The Threadbare Authors
SPDX-License-Identifier: CC-BY-SA-4.0

This image was created using Gemini as a visual reference, together with existing Threadbare assets (such as the monk sprite) as additional input, and then hand-drawn/edited by Team 13 in LibreSprite. The final artwork is original work by Team 13.

On the question in #2715 (comment):

Hi @manuq @wjt, we've just finished almost everything in our LoreQuest. We had a small request: you mentioned in the document that we should combine the humming ability with Repel, but we think it could work well as a new standalone ability within Threadbare, since we see a lot of potential in it, it has sound effects, particles, and it's dynamic enough to be reused on other maps. We're looking forward to your response :)

Let me explain a little bit: we introduced abilities with modifiers. The Grapple ability already has a modifier: "longer thread" which lets the player aim further away. But we are lacking a modifier for the Repel ability. We think that the Humming can be a good modifier for Repel, the one we were looking for! Also being a modifier, the same action button can be used (in humming the Q is currently hardcoded to keyboards, it doesn't work on joypads or mouse). This can of course be reused in other levels. The humming sound effects or particles don't have to be lost, we are not telling you to replace humming for repel: instead, the player should be able to "hum" after obtaining the powerup with the Repel ability modifier.

@GianPierooo

Copy link
Copy Markdown
Contributor

Hello @manuq sorry for the confusion, and thanks for the clarification. We're left with a couple of doubts about the implementation, from what we understood of the code, to add the modifier we'd have to touch player.gd, since that's where the ability flags are read and the player's behavior gets adjusted. Which would you prefer: that we modify that core code to add the modifier in a reusable way, or that we keep the humming as a separate ability, isolated within our quest, without touching the base code? We'd also like to know if it would be possible to have a quick short session to get this clear.

@manuq

manuq commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

Hello @manuq sorry for the confusion, and thanks for the clarification. We're left with a couple of doubts about the implementation, from what we understood of the code, to add the modifier we'd have to touch player.gd, since that's where the ability flags are read and the player's behavior gets adjusted. Which would you prefer: that we modify that core code to add the modifier in a reusable way, or that we keep the humming as a separate ability, isolated within our quest, without touching the base code? We'd also like to know if it would be possible to have a quick short session to get this clear.

Yes this is a good point, the change should be done in the Player. More specifically in the PlayerRepel. Can you open a separate pull request with that change? We also have a Dev Archipelago now and it has a section on Repel:

https://play.threadbare.game/branches/endlessm/main/#dev/dev_archipelago

image

About having a quick short session, yes, let's coordinate over Discord.

@manuq

manuq commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

@xXLeopoldoXx @GianPierooo checking today, there are a number of unrelated changes that you should revert. For example:

diff --git a/assets/third_party/sounds/eternal_loom/EternalLoomShort.ogg.import b/assets/third_party/sounds/eternal_loom/EternalLoomShort.ogg.import
index ab638ca6..9b8bed58 100644
--- a/assets/third_party/sounds/eternal_loom/EternalLoomShort.ogg.import
+++ b/assets/third_party/sounds/eternal_loom/EternalLoomShort.ogg.import
@@ -12,7 +12,7 @@ dest_files=["res://.godot/imported/EternalLoomShort.ogg-ab8f9e3e604ea4b59b0bc347
 
 [params]
 
-loop=false
+loop=true
 loop_offset=0
 bpm=0
 beat_count=0
diff --git a/scenes/eternal_loom_sokoban/components/eternal_loom_tileset.tres b/scenes/eternal_loom_sokoban/components/eternal_loom_tileset.tres
index 79a535e1..c1dda314 100644
--- a/scenes/eternal_loom_sokoban/components/eternal_loom_tileset.tres
+++ b/scenes/eternal_loom_sokoban/components/eternal_loom_tileset.tres
@@ -53,11 +53,15 @@ texture_region_size = Vector2i(64, 64)
 texture = ExtResource("14_yxe0x")
 texture_region_size = Vector2i(64, 64)
 0:0/0 = 0
+1:0/0 = 0
+2:0/0 = 0
 
 [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_gewbp"]
 texture = ExtResource("15_gvyts")
 texture_region_size = Vector2i(64, 64)
 0:0/0 = 0
+1:0/0 = 0
+2:0/0 = 0
 
 [sub_resource type="TileSetScenesCollectionSource" id="TileSetScenesCollectionSource_bwjee"]
 resource_name = "spools"

And also the conflict in scenes/game_elements/characters/components/gym_area_test.tscn which seems to be an unrelated change too:

diff --git a/scenes/game_elements/characters/components/gym_area_test.tscn b/scenes/game_elements/characters/components/gym_area_test.tscn
index 8dd682b6..bb69e44f 100644
--- a/scenes/game_elements/characters/components/gym_area_test.tscn
+++ b/scenes/game_elements/characters/components/gym_area_test.tscn
@@ -646,6 +646,6 @@ debug_mode = true
 
 [connection signal="body_entered" from="OnTheGround/CharacterBody2D/Area2D" to="OnTheGround/CharacterBody2D/Area2D" method="_on_body_entered"]
 [connection signal="timeout" from="OnTheGround/CharacterBody2D2/Timer" to="OnTheGround/CharacterBody2D2/ThrowProjectileBehavior" method="throw"]
-[connection signal="running_changed" from="OnTheGround/CharacterBody2D4/InputWalkBehavior" to="OnTheGround/CharacterBody2D4/GPUParticles2D" method="_on_input_walk_behavior_running_changed"]
 [connection signal="running_changed" from="OnTheGround/CharacterBody2D4/InputWalkBehavior" to="OnTheGround/CharacterBody2D4/AnimationPlayer/CharacterAnimationPlayerBehavior" method="on_running_changed"]
+[connection signal="running_changed" from="OnTheGround/CharacterBody2D4/InputWalkBehavior" to="OnTheGround/CharacterBody2D4/GPUParticles2D" method="_on_input_walk_behavior_running_changed"]
 [connection signal="running_changed" from="OnTheGround/CharacterBody2D6/NavigationFollowWalkBehavior" to="OnTheGround/CharacterBody2D6/AnimatedSprite2D/CharacterSpriteBehavior" method="on_running_changed"]
diff --git a/scenes/game_elements/characters/enemies/void_spreading_enemy/void_spreading_enemy.tscn b/scenes/game_elements/characters/enemies/void_spreading_enemy/void_spreading_enemy.tscn
index 9eb236e9..3b571ac7 100644

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants