С Новым годом! Форум программистов, компьютерный форум, киберфорум
Программирование игр
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
1965 / 821 / 114
Регистрация: 01.10.2012
Сообщений: 4,788
Записей в блоге: 2

Управление толпой

16.09.2024, 02:49. Показов 1358. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день

Сразу оговорюсь что это НЕ игра, и я не могу надеяться на помощь/участие никакого игрового движка. Но довольно близко к игре, возможно удастся что-то почерпнуть/подсмотреть.

Есть N объектов (часто инстансов). Может это развитЫе char'ы с анимацией, но может и учебные чайники. При этом N достаточно велико чтобы "все сделать руками", напр 100, 200, 300 и более. Ну и вот надо как-то разумно анимировать эту "толпу" объектов.
Что значит "как-то"? Вы сами не знаете чего хотите! И.т.п.
Да, я хочу какие-то "схемы" поведения толпы которые были бы, с одной стороны - интересны/актуальны для юзверя, а с другой - реальны для реализации. Вот напрашивается анимация типа "все куда-то идут" (бегут, летят, плывут и.т.п.). В результате напр минута анимации, и никто не будет спрашивать типа "А куда они пришли? А дальше что?". Это не игра. Хорошо, "идут" - годится! А еще анимации? И вот тут затык. Не то чтобы совсем уж мыслей нет, но выходит как-то безумно сложно, натужно и сразу сваливается в hard-coded.

Прошу поделиться игровым опытом/идеями
Движок физики и встроенный (в приложение) пытон имеются

Спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.09.2024, 02:49
Ответы с готовыми решениями:

Как заменить управление игры с клавиатуры на управление пальцем с мобильного устройства?
Здравствуйте, мне необходимо заменить управление игрой с клавиатуры на сенсорное управление. Игра 2048, код есть, игра работает в браузере,...

Реализовать алгоритм работы планировщика. Управление виртуальной памятью. Управление файловой системой
Разработка программы менеджера памяти. Свопинг. Сегментная схема организации памяти. Управление виртуальной памятью. Глобальное и локальное...

Реализовать алгоритм работы планировщика. Управление виртуальной памятью. Управление файловой системой
Разработка программы менеджера памяти. Свопинг. Сегментная схема организации памяти. Управление виртуальной памятью. Глобальное и локальное...

10
 Аватар для MallSerg
91 / 58 / 14
Регистрация: 16.11.2018
Сообщений: 269
16.09.2024, 03:05
particles
0
 Аватар для OlegChe
73 / 55 / 25
Регистрация: 12.07.2014
Сообщений: 216
18.09.2024, 10:23
Boids: Алгоритм, разработанный Крейгом Рейнольдсом, моделирует поведение стаи птиц или косяка рыб. Он основан на трех простых правилах: разделение (избегание столкновений), выравнивание (движение в одном направлении) и сцепление (удержание группы вместе).
Пример
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import random
import matplotlib.pyplot as plt
 
class Boid:
    def __init__(self, x, y):
        self.position = [x, y]
        self.velocity = [random.uniform(-1, 1), random.uniform(-1, 1)]
 
    def update(self, boids):
        # Применение правил поведения
        self.flock(boids)
        # Обновление позиции
        self.position[0] += self.velocity[0]
        self.position[1] += self.velocity[1]
 
    def flock(self, boids):
        # Реализация правил разделения, выравнивания и сцепления
        pass
 
def simulate_boids(num_boids, steps):
    boids = [Boid(random.uniform(0, 100), random.uniform(0, 100)) for _ in range(num_boids)]
    for _ in range(steps):
        for boid in boids:
            boid.update(boids)
        # Визуализация
        plt.clf()
        plt.xlim(0, 100)
        plt.ylim(0, 100)
        plt.scatter([boid.position[0] for boid in boids], [boid.position[1] for boid in boids])
        plt.pause(0.01)
 
simulate_boids(100, 200)
0
1965 / 821 / 114
Регистрация: 01.10.2012
Сообщений: 4,788
Записей в блоге: 2
18.09.2024, 12:07  [ТС]
Цитата Сообщение от OlegChe Посмотреть сообщение
Boids: Алгоритм, разработанный Крейгом Рейнольдсом, моделирует поведение стаи птиц или косяка рыб. Он основан на трех простых правилах: разделение (избегание столкновений), выравнивание (движение в одном направлении) и сцепление (удержание группы вместе).
Да, хороший (и скромный) мужик этот Крейг. И опять, спасибо что Вы потратили свое время на пример, но код для копи/пасты не требуется.

Пример того что нужно
Цитата Сообщение от Igor3D Посмотреть сообщение
напрашивается анимация типа "все куда-то идут" (бегут, летят, плывут и.т.п.)
Юзер задает число объектов, они создаются (или уже были), и вот вся эта толпа куда-то прется. Простейший случай, но и здесь нужно обеспечить какое-то управление. Куда они идут? (направление). С какой скоростью? Обычно не все двигаются одинаково, нужна "вариабельность". И да, объекты должны держаться кучно, но не пересекаться, это "boid" что Вы привели. Вот все эти опции нужно юзеру предоставить (не так уж мало), тогда он сможет делать идущую толпу (на худой конец скопирует пример что сделаю я). Правда есть и другой путь: ноды, графы, скрипты. Тоже можем обсудить

Основной вопрос: что есть еще кроме "они идут"? Какие сцены/анимации? Понятно что нафантазировать можно много, но как обеспечить управление?
0
 Аватар для Mr_den
11 / 9 / 2
Регистрация: 06.09.2022
Сообщений: 383
25.09.2024, 13:41
В GODOT есть система ASTAR по которой ты просто приязываешь таргет к обьекту
и другой обьект за ним следует. Тут https://www.youtube.com/watch?v=zzH3gQhqdDQ движение на клик, обходя любые препятствия,
но вместо клика можно сделать любой Target. В GODOT скрипты на упрощённом питоне.
Или через AstarGreed https://www.youtube.com/watch?v=K2TWZjYRD9c
Но на нем сложнее делать
0
 Аватар для Storm Screamer
4839 / 1406 / 115
Регистрация: 21.04.2013
Сообщений: 8,572
25.09.2024, 13:49
Mr_den,
Цитата Сообщение от Igor3D Посмотреть сообщение
Сразу оговорюсь что это НЕ игра, и я не могу надеяться на помощь/участие никакого игрового движка.
Читали 1й пост?
0
Модератор
Эксперт Java
 Аватар для alecss131
2847 / 1356 / 403
Регистрация: 11.08.2017
Сообщений: 4,325
Записей в блоге: 2
25.09.2024, 13:59
Storm Screamer, он везде своим годотом спамит
0
1965 / 821 / 114
Регистрация: 01.10.2012
Сообщений: 4,788
Записей в блоге: 2
25.09.2024, 23:11  [ТС]
По классике
А мой папа может здесь полочку присобачить
Не в тему конечно, но все равно спасибо за участие

Цитата Сообщение от Igor3D Посмотреть сообщение
Понятно что нафантазировать можно много
Возможно никто никуда и не ходит. Ну вот сидят на стадионе 100 дятлов и смотрят матч. Хирак - ГОООЛ!!! (штанга?) Char'ы встают и машут руками (анимация одного char'а имеется). Может не все, а только в красных майках (болельщики данной команды). Может "волной", т.е. сначала встают передние ряды и.т.д. Вроде "ничего сложного", но нужно как-то обыгрывать событие (event) и в такт ему подсовывать анимацию.
0
1965 / 821 / 114
Регистрация: 01.10.2012
Сообщений: 4,788
Записей в блоге: 2
16.10.2024, 16:35  [ТС]
Апну интересную тему. Пример со стадионом наводит на простую мысль типа
Без скриптов тут нечего ловить
Т.е. минимальный набор базовых опций для управления толпой, а все остальное - скриптами.

Мой опыт внедрения скриптов скорее отрицательный: кроме нескольких фанатов, юзеры упираются рогом, категоричное НЕТ. Мои попытки объяснить, доказать (типа "ну вот же, 5 строк написать!") успеха не имели. "Я не программист!" - и вся любовь. Ну ладно, скрипты так скрипты.

Что (примерно) уже сделано. Есть/создаются N объектов, юзер жмакает кнопку "Go", запускается "симуляция", сцена автоматычно анимируется кадр за кадром. На каждом шаге вызывается движок, возможно объекты как-то движутся. Записываются анимационные кривые чтобы потом крутить без симуляции. Объекты обычно прокси шейпы, для char'ов капсулы на пружине. В коде/расчетах объект по существу точка/трансформ.

Что нужно. На каждом шаге симуляции для каждого объекта/инстанса я могу вызвать код на пытоне. Для примера выше (стадион) требуется просто управление анимацией, т.е. в результате работы скрипта я должен получить

- имя анимации (строка)
- (локальное) время/кадр этой анимации

Ну и как должен выглядеть такой скрипт на пытоне ?
Python
1
instance.set_animаtion("applaud", 0.54)
Ну пересчитывать всякий раз время по меньшей мере утомительно. Да и как сменить анимацию - тоже неясно

Вопрос: как реализовано это (управление анимацией) в играх? На примере со стадионом выше. Не нравится - предложите др пример. Как будет/должен выглядеть скрипт?

Спасибо
0
 Аватар для zalec
76 / 54 / 22
Регистрация: 03.03.2019
Сообщений: 176
15.01.2025, 23:41
0 сидит или первый кадр, 1 стоит или последний кадр. И в зависимости от нужного периода волны, делим текущее время в секундах на нужное значение. Еще моджно книгу шейдеров почитать.
0
16.01.2025, 13:59  [ТС]

Не по теме:

Цитата Сообщение от zalec Посмотреть сообщение
Еще моджно книгу шейдеров почитать.
Бывают ответы от которых хочется удавиться. И никогда больше не посещать этот форум :(

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.01.2025, 13:59
Помогаю со студенческими работами здесь

Движение, вращение, управление движением, управление вращением фигуры
Написать программу, выполняющую четыре операции над графическим объектом("фигурой"):движение,вращение,управление движением,управление...

Перенести управление стрелками на управление WASD
Мне нужно чтобы в игре вместо стрелок управление осуществлялось WASD и при этом сами WASD не нажимались в игре. Для блокировки нажатия...

Чем отличается 1с 8.0 Управление персоналом от 1с 8.1 Управление персоналом?
Чем отличается 1с 8.0 Управление персоналом от 1с 8.1 Управление персоналом? Где это посмотреть)

Управление БД
Посоветуйте пожалуйста хороший пример создание и управление БД через С++ Builder с пошаговым описанием действий. Спасибо!

Управление МК с ПК
Добрый день форумчане! Есть проект на шарпе по подключению к МК посредством USB. МК определяется как HID устройство. По какой то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru