Skip to content

Infinite Knight PR Upstream#2434

Open
MarshellSE wants to merge 32 commits into
endlessm:mainfrom
GameLab6-UTP-Grupo5-Equipo6:main
Open

Infinite Knight PR Upstream#2434
MarshellSE wants to merge 32 commits into
endlessm:mainfrom
GameLab6-UTP-Grupo5-Equipo6:main

Conversation

@MarshellSE

Copy link
Copy Markdown

Descripción del videojuego

Infinite Knight es un videojuego de aventura y acción narrativa que sigue la historia de un ser cósmico con apariencia de caballero que intenta comprender la vida mortal mientras cumple su verdadero propósito: corregir las fallas que aparecen en la realidad.

Estas anomalías, conocidas como Glitches, son restos de un universo muerto que amenazan con alterar la existencia de otros mundos. El Caballero Infinito debe viajar a través de diferentes escenarios para localizar y erradicar cada una de estas anomalías.

Durante su recorrido descubre que el enemigo final, Glitch Gore, lo ha estado observando durante toda su aventura. Después de derrotarlo, el protagonista tiene una visión del pasado donde recuerda haber participado en una expedición a una isla alterada y haber encontrado a su única familiar, su hija. Sin embargo, en lugar de eliminar la anomalía con la Espada Alterada del Infinito, decidió perdonarle la vida, provocando el inicio de todos los acontecimientos que amenazan la realidad.

Al finalizar la historia, aparece otro ser que lo busca para ayudarlo en una nueva misión relacionada con la destrucción multiversal, dejando abierta la posibilidad de una continuación.


Contenido desarrollado

  • Intro
  • Minijuego 1 (Stealth)
  • Minijuego 2 (Combat)
  • Minijuego 3 (Boss)
  • Outro

Colaboradores y roles

Colaborador Rol
@MarshellSE Organizador / Programador
@joseMercad0 Narrativa / Artístico
@Razen1477 Artístico

enaviaynga and others added 30 commits May 27, 2026 17:01
Creacion del proyecto | equipo 6
…ble-block

Mecanica pushable_block implementada
@MarshellSE MarshellSE requested a review from a team as a code owner June 23, 2026 01:40
@github-actions

Copy link
Copy Markdown

Play this branch at https://play.threadbare.game/branches/GameLab6-UTP-Grupo5-Equipo6/main/.

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

@wjt wjt added the StoryQuest New StoryQuests or updates to existing ones label Jun 23, 2026
@felixwalberg

Copy link
Copy Markdown
Contributor

Most of the complementary files are stored in components subfolders, but it might be nice to also move the script (.gd) files to them as well, and any scene file that is referenced in the scene tree of a larger scene (ex: move boss.tscn and boss.gd to the boss_components directory).

@felixwalberg

Copy link
Copy Markdown
Contributor

This StoryQuest is very cool! You all did a great job. I enjoy the pushable objects in the stealth level. Their design fits the galaxy theme, and they add more depth to the stealth level as a whole. You also did a nice job with the projectiles and boss fight!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe this can be deleted as this file also exists in quests/story_quests/infinite_knight/player_components and the infinite_knight_player.tres references the UID from the file in the player_components.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The team should add themselves as authors within this file to take some credit for this great quest!

It would also be a good idea to add a description for the quest to this file as well. This appears in the quest book when players talk to the StoryQuest Elder and will give them a good idea of what your quest is about.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The player can walk directly above the collectable thread and escape the confines of the map. It looks like there might just be a missing wall tile, which would seal off the player entirely.

Comment on lines +29 to +39
if active:
var root: Window = get_tree().root
for node_name in UI_NODES_TO_HIDE:
var node: Node = root.find_child(node_name, true, false)
if is_instance_valid(node) and node is CanvasItem:
node.visible = false
_hidden_ui_nodes.append(node)
else:
for node in _hidden_ui_nodes:
if is_instance_valid(node): node.visible = true
_hidden_ui_nodes.clear()

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think that this section (and line 6) is actually necessary. The hints won't appear because starting on line 44, you disabled the visibility. In input_hud.gd it sets the hint visibility equal to the logical and of the visibility and existence of the ability's node.

Since it is set to false on line 49, it will never appear even without the code above (lines 29 to 39).

Using hard-coded strings to reference components of the Player class might make it difficult to refactor if changes are made to Player. I wonder if it would be worth adding some functionality to the input hint where users can go ability by ability and tick off the ones to show or if it is sufficient to do it with visibility as it exists here.

@felixwalberg

Copy link
Copy Markdown
Contributor

The pr also needs a few more changes to pass the automated testing. The following files need to have copyright and licensing information added:

  • scenes/quests/story_quests/infinite_knight/1_stealth/infinite_knight_stealth.gd
  • scenes/quests/story_quests/infinite_knight/2_combat/combat_components/attack_input_hint.gd
  • scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_enemy.gd
  • scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_rift.gd
  • scenes/quests/story_quests/infinite_knight/2_combat/infinite_knight_combat.gd
  • scenes/quests/story_quests/infinite_knight/3_boss/boss.gd
  • scenes/quests/story_quests/infinite_knight/3_boss/boss_ball.gd
  • scenes/quests/story_quests/infinite_knight/3_boss/on_the_ground.gd

If you take a look at the top of some other scripts created by Threadbare authors, they have something that looks like this:

# SPDX-FileCopyrightText: The Threadbare Authors
# SPDX-License-Identifier: MPL-2.0

MPL-2.0 should be the license used for all original code.

@felixwalberg

Copy link
Copy Markdown
Contributor

The boss_death.png file also exceeds the pixel size limit:
scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_death.png: 5888x256 exceeds 4096x4096
One option could be to split the image in half and stack it, so you have something that is 2944 x 512 pixels instead of 5888 x 256.

@felixwalberg

Copy link
Copy Markdown
Contributor
Screenshot 2026-06-24 at 1 45 49 PM
You can trap the guards with the pushable blocks!

While it is not necessary to beat the level this could be an interesting idea to bring to other stealth levels! Some design where the only way to make progress is to walk directly across the guard's path, and if you want to do that without getting caught, you have to trap them in.

The GDD mentions the "connect" mechanic for sliding/movable objects where the grapple can be used to attach to objects and move them. Then you would be able to block in the guards from a position where the player is not discoverable.

position = Vector2(1468, 690)

[node name="PushableBlock2" parent="." unique_id=906301845 instance=ExtResource("17_lv1et")]
position = Vector2(450, 176)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The second rock gets stuck if the player comes up to it directly from below. Even moving it just one pixel up seems to make it easier to navigate.

@wjt wjt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Beside the three pieces of music, can you either confirm that all the artwork is your own work (possibly based on Threadbare's own assets, as is clear in some cases!) or list out the author & license for any art that is not your own work?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you compose this music yourself? If not, who is the author, what is the source, and what license is it under?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As above

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As above.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe that only a few of the tilesets in this folder are actually used:

$ git grep infinite_knight/tiles | perl -nle 'm{path="res://(.*?)"} and print $1' | sort | uniq
scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_elevation_2.tres
scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_exterior_floors.tres
scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_shadows.tres

You could remove the others.

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

Labels

StoryQuest New StoryQuests or updates to existing ones

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

6 participants