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

Форум для проектов, находящихся на стадии Альфа и Бета. В них ещё не реализована вся задуманная автором функциональность, а значит идёт активная разработка.

Модераторы: Sanja, Максим Кич

Karlo
Сообщения: 101
Зарегистрирован: 28 сен 2016, 13:01

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

Сообщение Karlo » 16 сен 2018, 17:15

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

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

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

Karlo
Сообщения: 101
Зарегистрирован: 28 сен 2016, 13:01

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

Сообщение Karlo » 31 окт 2018, 21:35

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

Аватара пользователя
karagy
Сообщения: 1271
Зарегистрирован: 10 янв 2007, 14:13

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

Сообщение karagy » 01 ноя 2018, 11:26

Погуглите site:habr.com поиск пути

Karlo
Сообщения: 101
Зарегистрирован: 28 сен 2016, 13:01

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

Сообщение Karlo » 01 ноя 2018, 13:11

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

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

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

gwathlobal
Сообщения: 68
Зарегистрирован: 10 май 2013, 16:30

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

Сообщение gwathlobal » 02 ноя 2018, 06:44

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

omnibus
Сообщения: 108
Зарегистрирован: 19 апр 2017, 08:17

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

Сообщение omnibus » 02 ноя 2018, 12:12

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

omnibus
Сообщения: 108
Зарегистрирован: 19 апр 2017, 08:17

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

Сообщение omnibus » 02 ноя 2018, 12:15

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

Karlo
Сообщения: 101
Зарегистрирован: 28 сен 2016, 13:01

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

Сообщение Karlo » 03 ноя 2018, 18:36

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

gwathlobal
Сообщения: 68
Зарегистрирован: 10 май 2013, 16:30

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

Сообщение gwathlobal » 04 ноя 2018, 19:00

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

Аватара пользователя
karagy
Сообщения: 1271
Зарегистрирован: 10 янв 2007, 14:13

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

Сообщение karagy » 04 ноя 2018, 19:11

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

Karlo
Сообщения: 101
Зарегистрирован: 28 сен 2016, 13:01

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

Сообщение Karlo » 24 ноя 2018, 09:50

Спасибо всем за подсказки, наконец более менее сделал нормальный пошаговый режим с активными актерами, которые могут в данном случае атаковать, идти за игроком и т.д. и вроде даже почти без тормозов

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

Karlo
Сообщения: 101
Зарегистрирован: 28 сен 2016, 13:01

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

Сообщение Karlo » 26 фев 2019, 11:35

Продолжается мой долгострой)))

https://youtu.be/3CjVFAZXopQ

Karlo
Сообщения: 101
Зарегистрирован: 28 сен 2016, 13:01

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

Сообщение Karlo » 21 окт 2019, 05:57

Демка боевки
http://yadi.sk/d/N6EN51R_Q4RpzQ

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

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

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 27 гостей