Hacker News new | ask | show | jobs
by vvanders 3811 days ago
Coroutines are also fantastic for scripting Game AI:

  local player = nil
  while(player == nil) do
    yeild(0)
    player = LookForPlayer(...)
  end
  
  while(WalkTowardsPlayer(player)) do
    yeild(0)
  end

  while(!PlayerDead(player)) do
    MeleePlayer(player)
    yield(0)
  end
Makes state management super-simple and is something you can easily teach to designers as well. This is partly why you see Lua show up in so many game engines.
1 comments

FSM may be a better fit for this specific application, though.
For something engineered, sure.

However if you're working with designers who don't have a lot of formal education it's much easier to convey the concept of a function that "pauses" where yield() happens.

Also quite a bit of gameplay code ends up as throw-away so being able to quickly put behaviors together is a plus.

You're saying a tree of FSM states is more difficult to convey than linearized coroutine code, with emphasis on informal programmers/designers?

You may want to take a look at visual FSM solutions, which do what you specify and more, easily.

You're not even wrong.

https://unity3d.com/learn/tutorials/modules/beginner/animati..., for an example in an Animation program