Skip to content

Add Ink Combat hub to Dev Archipelago - #2655

Open
felixwalberg wants to merge 9 commits into
mainfrom
dev-archipelago-ink-combat
Open

Add Ink Combat hub to Dev Archipelago#2655
felixwalberg wants to merge 9 commits into
mainfrom
dev-archipelago-ink-combat

Conversation

@felixwalberg

@felixwalberg felixwalberg commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Add a scene ink_combat_test.tscn that walks the player through the different variations of ink combat in Threadbare. Each section of the scene is "replayable" via the repellable levers. Only one section can run at once.

Resolves #2539

@felixwalberg felixwalberg added this to the Dev Archipelago MVP milestone Aug 4, 2026
@felixwalberg
felixwalberg requested a review from a team as a code owner August 4, 2026 17:19
@felixwalberg

Copy link
Copy Markdown
Contributor Author

Also wondering if the scene I made should be modified so that all the barrels are visible in the same frame... I mentioned this in a signpost, but it might add unnecessary difficulty.

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown

Play this branch at https://play.threadbare.game/branches/endlessm/dev-archipelago-ink-combat/.

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

@felixwalberg
felixwalberg marked this pull request as draft August 6, 2026 18:52
@felixwalberg

felixwalberg commented Aug 10, 2026

Copy link
Copy Markdown
Contributor Author

@wjt @manuq @jgbourque Going to leave this as a draft for now, but I have made some changes (currently in ink_combat_test.tscn) to address some of the feedback from last week's build review. It isn't completely the same as the proposed "arena" where everything is firing at once, since some of the examples might get messed up running simultaneously (e.g. the fragile barrels were getting broken before the Player can make it to that section). It is all reachable within the same scene with a little less running. However, I would be open to moving things closer together if that is preferred. I could also look at adding some logic to levers to activate certain throwing enemies and certain combinations of the barrels.

https://play.threadbare.game/branches/endlessm/dev-archipelago-ink-combat/#dev/repel/ink_combat/ink_combat_test

There are still things to do, but wanted to continue this discussion on how best to display the ink combat mechanics.

  • Add script to activate the fragile barrel throwing enemy based either on completion of previous section or player entering an area2d (which I think is a better option to avoid hiding stuff behind progress gates)
  • Add a similar concept for the sequential completion
  • Decorate/make the borders look nicer
  • We could possibly add levers in each section that could "reset" the enemy/barrels for repeated practice

@jgbourque

Copy link
Copy Markdown
Contributor

I really like the idea of levers for an in game reset of the mechanic/challenge etc. That way there can be extended playtesting of an idea without having to restart the scene necessarily.

I also like the idea of the player entering an area as an option to activate whatever components are set up to interact with there rather than progress gating!

@felixwalberg
felixwalberg marked this pull request as ready for review August 12, 2026 19:06
@felixwalberg

Copy link
Copy Markdown
Contributor Author

Some major changes have been made here since the last time this was open for review! Now the majority of variations of ink combat are showcased within one scene. The user can activate a section to experiment with one mechanic at a time. Not complete "sandbox" freedom, but more inclusive than the last version!

@felixwalberg

Copy link
Copy Markdown
Contributor Author

I am open to suggestions on a better way to handle the "sections"! A lot of the logic is deferred due to issues with replacing ThrowingEnemy nodes mid attack animation. It follows the general idea of only include the nodes in groups if they are within the chosen section. Rather than adding a "stop" or idle logic, I just reset them (sometimes you might want to reset mid combat vs after completely filling the barrels).

section.call_deferred("reset")

# Cooldown between reset and start
await get_tree().create_timer(2).timeout

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

This is still an issue that I would love to get another pair of eyes on! Without a timeout delay, there is some call happening too early, resulting in enemies that don't activate their attack. I assume there is a function call later that should be deferred, but I was having trouble resolving this!

This also makes the initial delay 2 + ThrowingEnemy.throwing_period seconds, which can feel like a long time! Maybe we need an indication that the section is starting.

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.

The two states of the levers are visibly different: there is a lit-up "on" state and a darker "off" state. So, just an idea: you could use the "on" state as the visible indication. When one lever is switched to the "on" state, set all the others back to "off". When the fill game logic reports that the game is "completed", set the currently-"on" lever to "off".

(I'll look at the logic in more detail.)

@felixwalberg

Copy link
Copy Markdown
Contributor Author

After the build review today (Aug 13), the following changes have been made:

  • Add comments to top of scripts (ink_combat_test.gd, ink_combat_section.gd, and ink_combat_fragile_section.gd) indicating this is not necessary to make ink combat levels
  • Reset current_target_index and enable randomization of the BarrelUnlockSequence section so each reset gets a fresh (and working) sequence
  • Modify the vase_destruction_tracker.gd logic for the FragileBarrel section (now breaking all barrels defeats the StoryWeaver and filling one barrel is enough to win)
    • Add checkpoint to this section for respawning after defeat
  • Darkness now follows player direction in teleporter transition

Some other notes from the review that might be relevant:

  • We could (in a later change) modify the InkDrinker to start firing projectiles immediately, since a delay can be implemented with a timer node but not the other way around
  • We want a way to spawn InkDrinkers, which would simplify this scene. Each section could trigger a spawner of a set of enemies, clearing the rest of the scene
  • The fragile barrels have collisions enabled even after breaking. They exist on the player and the projectile collision layers

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

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

Dev Archipelago: Repelling

3 participants