Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #8  
Старый 15.01.2015, 22:51
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
У меня дурацкий вопрос. Нигде не могу найти информацию про одновременную работу нескольких объектов, например в стратегиях. Каждый танк это отдельный поток? Есть свой класс который отвечает за столкновение объектов (например не больше одного объекта в клетке)?
И может вы подскажите какие-нибудь статьи о принципах построения таких вот игрушек?
В основном интересует как раз несколько юнитов на карте.
Много потоков создадут много проблем, потому что потребуют синхронизации. Самый простой (и, думаю, самый применяемый метод) - сделать список динамических объектов, и каждую итерацию главного цикла игры проходить по списку и обрабатывать все действия.
Есть 2 турели. Обе в массиве. Обрабатываться они будут по очереди. Каждая будет анализировать состояние окружающей среды на предмет наличия врагов в зоне досягаемости, поворачиваться и стрелять. Разумеется, важно не делать все действия сразу, а разбить на атомарные. Грубо говоря, поворот на N градусов будет обработан за N проходов цикла, и в каждый проход будет поворот на 1 градус. Выстрел - тоже не мгновенная смерть: нужно создать "пулю" и добавить ее в список обработки. Пуля в свою очередь будет перемещаться на X метров за каждый проход. Если при обработке пули выяснилось, что пуля столкнулась с объектом - наносим повреждения и удаляем пулю.
Разбиение же на много потоков нагрузит систему и при этом не принесет никаких реальных отличий: если у процессора меньше ядер, чем одновременно запущенных потоков, то все равно они будут обрабатываться по очереди.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:10.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025