SALAMANDER
Кому-то, возможно, знаком цикл Дэвида Вебера о Хонор Харрингтон - начинается серия книгой "Космическая станция Василиск". Не вдаваясь в подробности сюжета, могу смело сказать, что созданная автором вселенная истинно могуча. Мне давно приспичило каким-то образом реализовать ее в играбельной форме, вот…
40 33 809
15
Эх, они и так реализованы. Создано несколько обработчиков:
  • Для разгоняющихся кораблей
  • Для кораблей в инерции
  • Для тормозящих кораблей
  • Для ракет, которые преследуют цель
  • Для ракет в инерции
База данных так же имеется и уже полностью в работе (данные берутся только от туда).
Ах да, еще у каждого корабля есть свои характеристики, т.е. ему в бою могут повредить те или иные компоненты, начиная с двигателей, заканчивая определенными пусковыми установками. Пришлось добавить к обработке еще и Хеш-таблицу(данные о корабле) при движении, запуске и т.п.
В итоге мы друг друга немного не поняли... зато теперь есть в комментариях некоторые моменты относительно новой концепции механики
24
Ну допустим учет импульса делает 2 пункт недопустимым, 1 и 3 вполне реализуемы :)
15
Faion, взгляд со стороны это конечно хорошо, но когда уходишь в эти дебри получается достаточно сложная конструкция:
При движении каждого корабля или ракеты учитывается такой фактор, как сохранение импульса (Например: корабль разогнался и начал поворачиваться. Он уже развернулся, но все еще продолжает лететь вперед, т.е. задом, с легким отклонением в ту сторону, через которую он разворачивался). Это создает дополнительную нагрузку и расчеты.
Корабли "обрабатываются"каждые 0.03 сек. Хотел сделать 0.04 (а этого было бы достаточно), но при движении под сотню кораблей видится рывки.
Сделано это через массивы (а в последствии через группы), которые работают максимально быстро (насколько это возможно).
Вару тяжело обрабатывать столько информации за раз(меньше чем за секунду), отсюда и получаются рывки
24
Каждый корабль выпускает до несколько десятков ракет
Вопрос решается:
  1. Написанием обработчика, который сделает расчеты для группы снарядов.
  2. Cоздавать группу дамми вдоль корпуса корабля с нужной моделью снаряда и давать им приказ стрелять.
Те же лазеры бтв стоило делать как раз через дамми атаку(с большой скоростью атаки)
  1. Использовать все же мозг. В проекте "плоский" ланд, т.к. космос. Т.е. GetLocationZ() нафиг не нужно. Нужна бд, и обработчик бд. Тем же снарядам можно менять ось Z в зависимости от дистанции между атакующим и атакующим + поправкой на Z(данные о которой будут в БД)
то при запуске ракет все начнут двигаться рывками (разрыв очень маленький, но все равно не приятно).
рывки видимо происходят из за того что система криво обрабатывает момент удаления объектов из обработки.
15
Если делать все с использованием головы, то и несколько сотен кораблей не будут вызывать лаги, уверяю :)
Так и делается. Но! Каждый корабль выпускает до несколько десятков ракет (а это тоже двигающиеся объекты). Если движение больше сотни кораблей никак не влияет на производительность, то при запуске ракет все начнут двигаться рывками (разрыв очень маленький, но все равно не приятно).
Стараюсь максимально уменьшить нагрузку, но вар для этого не слишком то подходит. Надо свой движок делать, эх, если бы это было так просто
24
DaeDR:
Faion, Если еще и ось Z зацепить, то вар начнет глючить уже с несколькими кораблями. В новой механике карты
Если делать все с использованием головы, то и несколько сотен кораблей не будут вызывать лаги, уверяю :)
19
Короче на превью, корабль похож на залупу... а так норм
15
Faion, Если еще и ось Z зацепить, то вар начнет глючить уже с несколькими кораблями. В новой механике карты
24
Советую задуматься на тему использования оси Z и об увеличении физических размеров объектов, что в б крейсеры друг в друге небыли :)
15
Когда что-то путное получится, можно будет перевести на английский.