Карта для игрушки

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

RedHCat
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 01.03.2016 (Вт) 0:19

Карта для игрушки

Сообщение RedHCat » 01.03.2016 (Вт) 0:53

Всем здравствуйте. Решил вот в свободное время попробовать игрушку написать. Параллельно пишу в ворде документ для структурирования мыслей.

Вообщем игрушка пока без опыта 2д без изометрии. Напоминает jagged alliance. Дальше в изометрию переведу, если получится, дело долгое и не факт что завершиться. Сейчас накидал юнита с параметрами, в ближайшие дни хочу поковыряться с картой. В связи с этим есть вопросы по поводу хранения обектов в карте. Пока простенькую карту храню в двумерном массиве 10 на 10, стены в массиве 10 на 20, т.к. Есть горизонтальные стены. Пока в ячейке массива либо 0, либо 1. Ходить можно и ходить нельзя. ). А вообще у ячейки карты хочется добавить пару тройку свойств, таких как тип поверхности, затраты очков действия, туман и т.д. Вот и думаю как лучше большие карты хранить ? Ведь еще нужно предметы раскидать. Можно в один массив запихать и стены и ячейки земли. Только карты надо будет увеличивать, а позже желательно и в высоту. Как лучше сделать ? Может сделать двумерный массив в котором хранить класс содержащий сразу все ? Ячейки стены предметы. Типа public class cLandCell public Terrarien as ..., public walls as ... )

P.s. Может такие темы и были но с нахрапа не получилось найти.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Карта для игрушки

Сообщение Mikle » 01.03.2016 (Вт) 23:13

Всё зависит от твоей задумки.
Будут ли предметы располагаться только по центру тайлов, или могут лежать на произвольных координатах?
Могут ли несколько предметов лежать в одной ячейке, либо нет?
Каков вообще предполагаемый необходимый размер карты?

RedHCat
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 01.03.2016 (Вт) 0:19

Re: Карта для игрушки

Сообщение RedHCat » 02.03.2016 (Ср) 8:54

Игрушка строго по клеткам, с возможностью изменения положения внутри клетки, т.е. хочется чуть разнообразить тактику разделив тайл (я как понимаю ячейку) на 9 подячеек координат. Игроки, Возможные объекты занимают 1 или несколько ячеек, но строго целиком, стены, укрытия, заборы только между ячейками. Предметы занимают целую ячейку, но может быть на 1ой ячейке сколько душе угодно. Размер карты, честно пока не знаю. Гоняю пока наработки в 20 х 20, там ещё долго, но вообще масштаб хотелось бы сделать 1 тайл = 1 реальному метру. Выбор карты наверное придётся делать чисто по тестам. Реальные параметры придётся урезать раза в 3 - 4. поэтому думаю можно где-то 250х250 тайлов, подразумевая что карта будет километр на километр.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Карта для игрушки

Сообщение Mikle » 03.03.2016 (Чт) 15:34

Если общее количество предметов не очень большое, скажем, не больше 1000, можно хранить список предметов с координатами, никак не привязывать их к ячейкам.
Вообще, всё перечисленное - это очень просто, сейчас будет достаточно быстро работать, как ни реализуй.

RedHCat
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 01.03.2016 (Вт) 0:19

Re: Карта для игрушки

Сообщение RedHCat » 05.03.2016 (Сб) 11:24

Вчера знакомому попарил мозг, в результате решили делай сначала по простому, по частям потом всяк будешь вспоминать и повышать опыт. Сделал через 1 массив. в х3 размере
т.е. тайл имеет координаты X*2,Y*2. А стены, указываются направлением от цента ячейки +/-1.

Доп вопрос. Как лучше делать отрисовку, сейчас просто в событии OnPaint, через e.Graphics.Draw рисую, но при больших размерах 70 на 70 начинает тупить, т.к. после каждого хода делаю Refresh. Каким образом лучше построить вывод графики ? прокрутка карты будет. С графикой в .NET вообще никогда не работал. Хотя бы общее направление подскажите. 3Д не хочу. Если только модели юнитов.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Карта для игрушки

Сообщение Mikle » 05.03.2016 (Сб) 11:29

Если нет желания связываться с 3D API, то могу посоветовать SR2D.

RedHCat
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 01.03.2016 (Вт) 0:19

Re: Карта для игрушки

Сообщение RedHCat » 07.03.2016 (Пн) 14:47

=), спс, посмотрел но с графикой буду чуть позже разбираться. На повестке дня определение видимости объекта.

Пока получилась вот такая ерунда.
Поле.jpg
Поле.jpg (26.53 Кб) Просмотров: 5511


Уже весь мозг сломал. Как думаете каким вариантом легче решить задачу. Ищем видимость для голубого юнита.
1. Проверкой прохождения луча(жёлтые) через объекты. Если пересекает препятствие, рисуем до точки пересечения с препятствием. Если луч пересекает Левый нижний юнит то мы его можем увидеть.
2. Вариант зная координаты объекта 2(Правый нижний) от него строим луч по вершинам, и если нет препятствий и он попадает в угол обзора, то мы его видим, иначе нет.

При 1м варианте мне кажется проще сделать видимость юнита, а ля командос.
При 2ом варианте сделать проще. Загрузка меньше.

П.С. не могу понять можно ли проверять только те препятствия, которые попадают в поле зрения. ?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Карта для игрушки

Сообщение Mikle » 07.03.2016 (Пн) 15:06

Не понял описание №2:
RedHCat писал(а):от него строим луч по вершинам

По каким вершинам? О чём речь?
Принцип прост - строим один отрезок от наблюдателя к объекту наблюдения, если отрезок вне зоны видимости (сзади), то объект не виден, иначе проверяем все преграды в цикле на пересечение с отрезком, для преград можно применить раннее отбрасывание заведомо не попадающих в зону отрезка, проверять на пересечение с прямоугольником, противоположные углы которого заданы наблюдателем и объектом наблюдения.


Вернуться в Visual Basic .NET

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

Сейчас этот форум просматривают: SemrushBot и гости: 19

    TopList