cocojas

cocojas

Apple Game Frameworks and Technologies - Adding monster entity to scene array (779)

The code to add the monster entity to the scene’s entity array (so that the generator-spawned monsters get component updates) in chapter 13 comes on page 779 (or thereabouts, I’m not sure if my reader has re-numbered pages). This is fine, but it needs to be moved earlier in the chapter, to the point where the update method is added to the agent component for the monster. Since the agent component is not part of the component system that’s being driven by the GameScene update event, the monsters never participate in the “chase” behavior, which may confuse people who are new to the platform.

Excellent material, I’ve really enjoyed reading it and testing everything out since the original alpha. Once it’s out, I’m going to recommend to my friends who are interested in these technologies.

Cheers, Jason

Marked As Solved

Paradox927

Paradox927

Author and Editor at PragProg

All right, I’ve had a chance to review this chapter, and I made some changes.

In the Add the Player Agent to the Component System section, I end with this:

Build and run the project, but don’t pick up the key right away. Give the monsters some time to wander around first. After a short while, pick up the key, and watch how some of the monsters’ attention turn to Val. (Don’t worry, the monsters still can’t hurt Val, but you’re about to work on that next.)

That paragraph above indicates that the monsters will chase Val after she collects the key. Of course, the monsters won’t chase her because their entities haven’t (yet) been added to the scene’s entity array.

To fix this error, I’ve modified the end of that section, which now reads:

Excellent, the didMove(to:) method is cleaner, but there’s still one more thing you need to do: get the monster entities to participate in the updates.

I also added a new section immediately after the Add the Player Agent to the Component System section, which looks like this:

And, I updated the Update Physics for Monsters and Projectiles section to reflect this change.

This flows a lot better and doesn’t give the reader the impression that they may have missed a step. Thanks for finding this one!

I don’t think another beta is coming out, but the “fix” will be in the final release. Marking this one solved. :star_struck: :grin:

Also Liked

Paradox927

Paradox927

Author and Editor at PragProg

Hey, Jason.

Thanks for reaching out.

So, I’m looking through the chapter now, and I’m not sure what you mean, so please forgive me if I’m not answering your question properly.

On page 301 (Creating the Agent Component), which I’m sure doesn’t align with your reader’s page numbers, there’s a bit of code that you need to add to the didAddToEntity() method. Specifically, the line that reads scene.agentComponentSystem.addComponent(agent) is where that component gets added, causing it to participate in the updates.

Is it possible that you missed that step? If not, maybe I’m misunderstanding what’s happening, which could be the case. Let me know. Thanks!

Also, I’m so happy to read that you’re enjoying the book. I had a lot of fun writing it. :heart_eyes:

cocojas

cocojas

Hi Tammy,

No worries, I struggled a lot with how to explain it, especially since e-readers constantly renumber pages :slight_smile:

The actual agent simulation is working, but in the first half of the chapter (Chapter 13—Planning Routes and Creating Believable AI), if the reader is following along doing the coding, the monsters themselves won’t be participating in the update cycle since the MonsterEntity (that get created by the generators) are not yet in the scene’s entity array. The code that gets the monster to choose to chase the player (changes the goal weight for the interceptGoal) comes near the end of the section Use Multiple Goals, where the reader adds an update method to MonsterEntity.

But, the code to update the adding the monster entities into the scene’s entity array isn’t added until later in the chapter, specifically near the end of the section Update Physics for Monsters and Projectiles. So when the reader first tests picking up the key after adding the chase code, the monsters aren’t going to chase them, because the MonsterEntity's update function won’t be triggered yet. I think just relocating the code block that does that to the earlier section would fix it.

if let scene = ocmponentNode.scene as? GameScene {
    scene.entities.append(monsterEntity)
}
Paradox927

Paradox927

Author and Editor at PragProg

Hello again.

Sorry for the late reply. It’s been a heck of a week! Also, I appreciate the additional information you’ve provided.

So, if I understand this issue correctly, it might be more about clarifying why the code gets added where it does versus moving the code to an earlier section. As of now, I’m not sure which is the right way to go. But that’s OK…

I’ll be doing a final read-through this weekend and will make a note to review this chapter’s organization. If it makes sense to move the code, I’ll do that. If not, I’ll add something to the chapter to clarify the reason why it’s done the way it is.

Until then, I’ll keep this topic “unresolved.”

Talk soon!

Where Next?

Popular Pragmatic Bookshelf topics Top

GilWright
Working through the steps (checking that the Info,plist matches exactly), run the demo game and what appears is grey but does not fill th...
New
jesse050717
Title: Web Development with Clojure, Third Edition, pg 116 Hi - I just started chapter 5 and I am stuck on page 116 while trying to star...
New
lirux
Hi Jamis, I think there’s an issue with a test on chapter 6. I own the ebook, version P1.0 Feb. 2019. This test doesn’t pass for me: ...
New
herminiotorres
Hi @Margaret , On page VII the book tells us the example and snippets will be all using Elixir version 1.11 But on page 3 almost the en...
New
raul
Hi Travis! Thank you for the cool book! :slight_smile: I made a list of issues and thought I could post them chapter by chapter. I’m rev...
New
conradwt
First, the code resources: Page 237: rumbl_umbrella/apps/rumbl/mix.exs Note: That this file is missing. Page 238: rumbl_umbrella/app...
New
joepstender
The generated iex result below should list products instead of product for the metadata. (page 67) iex> product = %Product{} %Pento....
New
New
hazardco
On page 78 the following code appears: <%= link_to ‘Destroy’, product, class: ‘hover:underline’, method: :delete, data: { confirm...
New
davetron5000
Hello faithful readers! If you have tried to follow along in the book, you are asked to start up the dev environment via dx/build and ar...
New

Other popular topics Top

Exadra37
I am thinking in building or buy a desktop computer for programing, both professionally and on my free time, and my choice of OS is Linux...
New
DevotionGeo
I know that -t flag is used along with -i flag for getting an interactive shell. But I cannot digest what the man page for docker run com...
New
AstonJ
poll poll Be sure to check out @Dusty’s article posted here: An Introduction to Alternative Keyboard Layouts It’s one of the best write-...
New
AstonJ
I ended up cancelling my Moonlander order as I think it’s just going to be a bit too bulky for me. I think the Planck and the Preonic (o...
New
AstonJ
Do the test and post your score :nerd_face: :keyboard: If possible, please add info such as the keyboard you’re using, the layout (Qw...
New
Margaret
Hello everyone! This thread is to tell you about what authors from The Pragmatic Bookshelf are writing on Medium.
1147 28379 760
New
rustkas
Intensively researching Erlang books and additional resources on it, I have found that the topic of using Regular Expressions is either c...
New
PragmaticBookshelf
Author Spotlight Jamis Buck @jamis This month, we have the pleasure of spotlighting author Jamis Buck, who has written Mazes for Prog...
New
First poster: bot
zig/http.zig at 7cf2cbb33ef34c1d211135f56d30fe23b6cacd42 · ziglang/zig. General-purpose programming language and toolchain for maintaini...
New
mindriot
Ok, well here are some thoughts and opinions on some of the ergonomic keyboards I have, I guess like mini review of each that I use enoug...
New

Sub Categories: