All Questions


Trevor McDonald

Godot 2D Secrets - JRPG Combat Feedback

Hi there! Tweeted how awesome this course is so far, highly recommended. I ran into a couple of issues and wanted to add these directly on the lessons, but I am unable to find the link (sorry if I'm missing something.) So I'll add them here:

The active turn queue:

Lines 57-59 are giving me an error:

targets = yield(
  _player_select_targets_async(action_data, potential_targets), "completed"

The first argument of "yield()" must be an object.

The function returns an Array. If you remove the return type hint, the error goes away. It goes away if you wrap the method return in an object instantiation:

targets = yield(
  Object(_player_select_targets_async(action_data, potential_targets)), "completed"

I looked through the docs for async and yield, and haven't really found anything to explain the issue. It's possible that I'm totally missing something (or that this will be solved later in the course.) Right now I've just left the return type off.

Actions with the Command Pattern:

The code block that is 3rd from the bottom has the following line, it was a typo and just needs a couple of line breaks put into it (probably an issue with copy/paste):

func apply_async() -> bool:
    # Ok, I lied, there are two methods here.# You don't have to add this indirection, but the convention for abstract# methods in Godot is they should start with an underscore, but public# methods should not. That's why I separated the two.return _apply_async()

Other than that, as I tweeted, I really enjoy this course so far. Honestly if I had known that the paid courses were so well-done I'd have probably kicked in for all of them on the Kickstarter. I love the written content, I think it is so much easier to go back and reference while I'm working. And I apologize if the forum is a bad place to put these comments, feel free to delete or move to their respective lessons (I'm not sure how to add comments to the lessons themselves.)

  • Nathan Lovato replied

    Hi Trevor,

    Regarding the yield() issue, I think we need to make the placeholder function call yield() as well, turning it into a coroutine. Adding a line yield() in _player_select_targets_async() should fix the error. I'll add that to the lesson.

    Regarding problem 2, there seems to be a bug with the platform's code editor. It's reformatting the code on save, but in a broken way, preventing me from fixing code blocks. I reported the issue to the platform's developers and will fix it as soon as possible. But that depends on them.

    In the meantime, you can find a link to download the offline version of the course under any lesson. I recommend doing that until I can find a workaround.

  • Nathan Lovato replied

    Oh and you're welcome to post anywhere that's comfortable to you. Under any lesson, when logged in, you should see a link to "Ask a Question". You can use that to leave feedback or report issues as well. The posts you create this way will end up in the community tab but also be linked to the lesson itself.