Похоже, что все делают компьютерную игру с каркасом FRP с реактивной бананой, поэтому я тоже должен был попробовать это. Тем не менее, я застрял с ранними шагами, пытаясь описать данные игры как реактивно-банановые типы Behavior
.Как заставить Behaviors содержать другие поведения в реактивном банане
В принципе, я пытаюсь иметь (меняющийся) список игровых персонажей (таких как Фродо или Сэм). Игровые персонажи могут обновляться на каждом тике игры (моделируется как событие галочки). Идея состоит в том, что всякий раз, когда меняется игровой символ, запускается одиночный Event (Character)
, и обновление символа, наконец, отправляется по сети. Преимущество этого по сравнению с примером Asteroids.hs должно состоять в том, что целое состояние игры (весь список игровых персонажей) не нужно отправлять по сети, так как будет число событий, имеющих один игровой символ вместо одно событие с списком игровых персонажей.
Для одиночного персонажа это прекрасно работает! Я создал Behavior (Character)
с mapaccum
, так что сигнал обновления символа отправляется, когда символ обновляется. Проблема, которую я не могу решить, заключается в том, как сделать эту работу списком игровых персонажей Behavior
.
Я пытаюсь смоделировать список символов игры как Behavior
, так как персонажи могут приходить и уходить во время игры. Нужно ли мне использовать динамическое переключение событий здесь? Или, если я не использую Behavior
с отдельными игровыми персонажами (и используйте только Behavior
с игровым символьным списком), есть ли способ условно инициировать события обновления, когда я просматриваю список символов? Или я что-то не понимаю?
Хорошо, я как бы думал, что это может быть так. Думаю, я попробую «Поведение коллекции», как вы упомянули, и отфильтруйте неизменяемые символы позже. – ipuustin
В частности, я думаю, что я буду использовать функцию «spill» для разделения события на то, что список символов обновлен до нескольких событий для обновления одного символа. – ipuustin