Страница 3 из 3

Re: Isometric Doom. Fateless [в разработке]

Добавлено: 16 сен 2018, 17:15
Karlo
Apromix писал(а):
14 сен 2018, 17:52
По С++ вот такое есть :) Но тоже можешь попробовать выучить язык Go. Проще некуда =D>
Спасибо!
Сейчас в процессе один из вопросов(глупых) который мучает меня, нужно как-то codestyle придумать, так как у многих по разному встречается.
Как вы обозначаете переменные/функции/указатели/массивы/private/передаваемые в методы значения и т.д. (на хабре читал статью про 90 советов)

Пока понял(что может быть удобно), что классы называют с большой буквы, иногда начинают с большой "TНазвание"
Все методы/функции/процедуры с большой буквы,
экземпляры объектов видел начинают на "obj_название"
некоторые указатели просто " *указатель ", некоторые " *рУказатель"(видимо передаваемый в функцию)
некоторые переменные называют начиная с "_" либо передаваемые, либо в private.
переменные все с маленькой буквы, (наверно удобно делать все слова в переменной маленькими буквами и разделитель "_")
все константы с большой, разделитель "_"
булевы переменные/функции начинают с "is" "Is"
функции приема "GetФункция", передачи "SetФункция"

Это конечно вопрос всего лишь удобства, но как же бывает трудно смотреть чужой код
Может у кого тоже есть наработки?

Re: Isometric Doom. Fateless [в разработке]

Добавлено: 31 окт 2018, 21:35
Karlo
Всем приветы,
с плюсами пока видимо не время, перешел на GMS2,
Подскажите плиз такой вопрос по оптимизации, наверное часто всплывает
Например в области игрока есть 50 союзников и 50 врагов, каким образом обсчитываются взаимодействия между ними?
Ведь если каждому считать LOS, это ппц. От каждого союзника считать к каждому врагу Брезенхема, это тоже надолго(50*50 проходов).
Даже упрощение, что если союзник видит врага, то значит враг видит союзника всего лишь в 2 раза уменьшает количества обсчета.
Послушаю любые советы :)

Re: Isometric Doom. Fateless [в разработке]

Добавлено: 01 ноя 2018, 11:26
karagy
Погуглите site:habr.com поиск пути

Re: Isometric Doom. Fateless [в разработке]

Добавлено: 01 ноя 2018, 13:11
Karlo
karagy писал(а):
01 ноя 2018, 11:26
Погуглите site:habr.com поиск пути
Наверное не так объяснил.
На примере : нужно задать модель поведения каждому актеру на карте и выполнить действие
Допустим с поведением определились - если видим врага - стреляем в него.
У меня прямое, топорное решение

Перебираем всех актеров
-У каждого актера перебираем всех актеров врага, строим линию Брезенхема, определяем 1)видимость, 2)дистанцию, сравниваем с минимальной
-В итоге находим минимальную дистанцию до врага, которого видно
--Запускаем атаку до этого врага

При большом количестве актеров(пусть будет 10 союзников и 50 врагов), количество вычислений становится бессмысленно большим, как мне кажется.

Re: Isometric Doom. Fateless [в разработке]

Добавлено: 02 ноя 2018, 06:44
gwathlobal
Когда у меня в игре была плоская 2d карта (стандартная для рогаликов), то я просто для каждого актера запускал FOV алгоритм на Bresenham линиях, он находил всех, кого актер видит, ну и дальше по накатанной.
При количестве актеров на карте около 200 получалось меньше 200 мс (а это время пользователь не замечает).

Re: Isometric Doom. Fateless [в разработке]

Добавлено: 02 ноя 2018, 12:12
omnibus
И даже тут наверняка есть простор для оптимизации. Во-первых, дальность видения. Наверняка враги не обязаны видеть всю карту от горизонта до горизонта. Значит, можно проверять только тех, кто находится в области видимости (+-n клеток вокруг актёра). Во-вторых, актёры же развёрнуты куда-то лицом? Значит, можно не учитывать тех, кто находится за спиной и по бокам.

Re: Isometric Doom. Fateless [в разработке]

Добавлено: 02 ноя 2018, 12:15
omnibus
Если это экшен (прошу прощения, не в курсе), можно аппроксимировать. Нашли путь к одному врагу - записывайте в увиденные также тех, кто стоит рядом. Это неаккуратно, но в каких-то случаях можно использовать.

Re: Isometric Doom. Fateless [в разработке]

Добавлено: 03 ноя 2018, 18:36
Karlo
gwathlobal писал(а):
02 ноя 2018, 06:44
Когда у меня в игре была плоская 2d карта (стандартная для рогаликов), то я просто для каждого актера запускал FOV алгоритм на Bresenham линиях, он находил всех, кого актер видит, ну и дальше по накатанной.
При количестве актеров на карте около 200 получалось меньше 200 мс (а это время пользователь не замечает).
Строить FOV на Брезенхеме для 200 актеров всего за пятую часть секунды это чтото нереальное :shock: у меня для 5-10 актеров будет занимать столько же времени
Оптимизация по количеству активных актеров уже проведена, задействуются только самые ближайшие, опять с этим ИИ запара, причем как раз из-за тормозов

Re: Isometric Doom. Fateless [в разработке]

Добавлено: 04 ноя 2018, 19:00
gwathlobal
Karlo писал(а):
03 ноя 2018, 18:36
Строить FOV на Брезенхеме для 200 актеров всего за пятую часть секунды это чтото нереальное :shock: у меня для 5-10 актеров будет занимать столько же времени
Оптимизация по количеству активных актеров уже проведена, задействуются только самые ближайшие, опять с этим ИИ запара, причем как раз из-за тормозов
Хм, а что за язык?
Помнится у меня тоже сначала все адово тормозило, а потом я нашел миллион багов в алгоритме.

Re: Isometric Doom. Fateless [в разработке]

Добавлено: 04 ноя 2018, 19:11
karagy
Karlo писал(а):
01 ноя 2018, 13:11
karagy писал(а):
01 ноя 2018, 11:26
Погуглите site:habr.com поиск пути
Наверное не так объяснил.
Там вывалится всякое - и, возможно, прямо в выдаче гугла ваш глаз уцепится за заголовки про волновой алгоритм, или про обобщенные статьи о игровых ИИ.

Re: Isometric Doom. Fateless [в разработке]

Добавлено: 24 ноя 2018, 09:50
Karlo
Спасибо всем за подсказки, наконец более менее сделал нормальный пошаговый режим с активными актерами, которые могут в данном случае атаковать, идти за игроком и т.д. и вроде даже почти без тормозов

Видео, как это выглядит (пока без модуля освещения, так как полностью переписываю под GMS2)
https://youtu.be/ayXVVAIxff8
https://youtu.be/udPJcYFPmzg

Re: Isometric Doom. Fateless [в разработке]

Добавлено: 26 фев 2019, 11:35
Karlo
Продолжается мой долгострой)))

https://youtu.be/3CjVFAZXopQ

Re: Isometric Doom. Fateless [в разработке]

Добавлено: 21 окт 2019, 05:57
Karlo
Демка боевки
http://yadi.sk/d/N6EN51R_Q4RpzQ

i - инвентарь,
w - быстрая смена на второе оружие,
r - перезарядка,
1,2,3,4 - применение предметов из пояса,
ПКМ - поставить прицел на врага, чтобы можно было перемещаться и стрелять одновременно,
стрелки клавиатуры - прокрутка карты,
ctrl+r - рестарт,
p - пауза,
a - стрелять в выбранную точку
+/- - увеличение/уменьшение скорости игры,
в инвентаре ПКМ на предмете внизу - быстрая экипировка

Изображение
Изображение
Изображение
Изображение
Изображение