Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.11.2011, 15:15
demy вне форума Посмотреть профиль Отправить личное сообщение для demy Найти все сообщения от demy
  № 1  
Ответить с цитированием
demy
 
Аватар для demy

Регистрация: Sep 2009
Сообщений: 105
Отправить сообщение для demy с помощью ICQ
По умолчанию Изометрический движок своими руками

Настала необходимость обзавестись изометрическим движком, и вот, решила написать его самостоятельно.
Но тему завела уже не с пустыми руками:
http://mydemy.narod.ru/zfw_iso/index.html
Сейчас дело обстоит так (там кстати есть два бага).

То есть движок сейчас - гексагональный и изометрический.
Формулы писала сама. Отсюда и сомнения...
(картинки стырены, но ничего коммерческого или хоть немного официального я с ними делать не буду,
как сделаю замену - сотру со всех локальных папок )
Алгоритм просчета пути - А*.

Сцена грузится следующим образом.
Создаются слои (спрайты, возможно, уместнее было бы использовать другие объекты из ветки DisplayObject):
- некликабельный, для загрузки фона,
- слой с объектами
На слой с объектами крепятся "гексы" - это пустые спрайты (см. выше), размещенные на точке (0,0).
Почему на начале координат?
Ну, я уже было написала алгоритм сортировки, но задумалась, а почему бы не сделать ячейки-гексы, отсортированные, как надо, на которые мы будем крепить объекты, соответственно, автоматически находящие свое место в сортировке. (Если криво объяснила, могу переформулировать)
Реальные координаты объекта высчитываются отдельно, и спрайт вставляется в гекс с ними (ведь 0 + координата = координата).
Сейчас я вижу проблему этого подхода... Но пока не решилась возвращать сортировку.

Еще я засомневалась и насчет гексов... Первая проблема на данный момент (помимо багов, которые просто не пофиксены в этой версии) - нормальный просчет гекса, на который кликнули. Нет, ну я даже высчитала формулы прямых, образовывающих верхний и нижний углы гекса. Исходя из этого, мы можем высчитать, лежат ли (mouseX, mouseY) выше/ниже, и, соответственно, более точно рассчитать, по какому гексу кликнули мышкой... Но что-то многовато действий, для простой проверки клика...
Почему я вообще выбрала гексы? Ну, они необычные... Да, при движении вертикально вверх, персонаж люто, простите, "виляет попой". Но направления движения в остальном какие-то... естественные, и все не такое рубленное, что ли. Может, это просто мой женский мозг взбунтовался против очевидно более простого решения...
А еще гексами можно образовать сетку, не наклоненную под углом 45 градусов, а прямоугольную, как сам экран. И не надо придумывать, чем занимать углы, или как объяснять "туман войны".

В общем, в этой программе есть много, возможно, очевидных со стороны, проблем, но я сижу и варюсь в собственных мыслях, так что очень бы хотелось обсудить эти решения с ученым советом флешеров =)
Заранее спасибо заинтересовавшимся.


Последний раз редактировалось demy; 10.11.2011 в 15:20.
Старый 10.11.2011, 15:26
KOCTuK вне форума Посмотреть профиль Отправить личное сообщение для KOCTuK Найти все сообщения от KOCTuK
  № 2  
Ответить с цитированием
KOCTuK
[+1.3 18.04.11]

Регистрация: Nov 2008
Сообщений: 8
Цитата:
Сообщение от demy Посмотреть сообщение
Первая проблема на данный момент (помимо багов, которые просто не пофиксены в этой версии) - нормальный просчет гекса, на который кликнули.
У меня было так: Был класс "арена" расширяющий Sprite, на нем
Код AS3:
addChild("гексы")
. К классу "Арена" подвязываешь
Код AS3:
addEventListener(MouseEvent.CLICK, "ТвояПроцедура")
и если в процедуре тип таргета равен типу ячейки
Код AS3:
if(event.target is "типЯчейки")
- значит в таргете (не в курент_таргете) твоя ячейка.

Не поделишься строчками, как ты двигаешь мобов с А*?


Последний раз редактировалось KOCTuK; 10.11.2011 в 15:29.
Старый 10.11.2011, 15:28
demy вне форума Посмотреть профиль Отправить личное сообщение для demy Найти все сообщения от demy
  № 3  
Ответить с цитированием
demy
 
Аватар для demy

Регистрация: Sep 2009
Сообщений: 105
Отправить сообщение для demy с помощью ICQ
Ну я уже думала над расстановкой "объемных гексов", но решила пока ничего не предпринимать, пока не выпишу весь список изменений.

Старый 10.11.2011, 15:34
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 4  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Я бы делал на ромбах. Гексы неудобны для подготовки графики ну и вообще не люблю я их)
Вот тут старый список готовых движков.
__________________
Отряд Котовскага

Старый 10.11.2011, 15:48
demy вне форума Посмотреть профиль Отправить личное сообщение для demy Найти все сообщения от demy
  № 5  
Ответить с цитированием
demy
 
Аватар для demy

Регистрация: Sep 2009
Сообщений: 105
Отправить сообщение для demy с помощью ICQ
Ну, я уже высказалась на эту тему. перейду, наверное (писала классы, исходя из того, что возможно заменю - интерфейс гексагональной системы имеется, меняем сам класс на аналог, только ромбовый).
Только как-то не решилась пока...

За ссылку спасибо. Большинство из них смотрела уже не по разу, но как-то не нашла ничего по душе

Старый 10.11.2011, 16:01
BuKT вне форума Посмотреть профиль Отправить личное сообщение для BuKT Найти все сообщения от BuKT
  № 6  
Ответить с цитированием
BuKT
 
Аватар для BuKT

блогер
Регистрация: Dec 2010
Сообщений: 237
Записей в блоге: 5
Возможно ли использовать ваш движок на условиях Royalty Free с обязательным указанием источника/автора (переходом по ссылке)?
__________________
Дебаггер не предлагать

Старый 10.11.2011, 16:21
demy вне форума Посмотреть профиль Отправить личное сообщение для demy Найти все сообщения от demy
  № 7  
Ответить с цитированием
demy
 
Аватар для demy

Регистрация: Sep 2009
Сообщений: 105
Отправить сообщение для demy с помощью ICQ
Я боюсь, он пока совсем не доделанный... Ну, то есть, у него есть интерфейс и прочее, но имеются также вышеописанные проблемы, и много еще чего стоит "допилить"

Старый 10.11.2011, 16:27
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 8  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Создаются слои (спрайты, возможно, уместнее было бы использовать другие объекты из ветки DisplayObject):
- некликабельный, для загрузки фона,
- слой с объектами
На слой с объектами крепятся "гексы" - это пустые спрайты (см. выше), размещенные на точке (0,0).
При таком подходе у вас будут приличные проблемы с производительностью, как только количество объектов станет хоть сколько-нибудь значимым. И решить их при такой архитектуре будет проблематично. Я бы отделил отображение карты от расчетов и сортировок и не зацикливался на DisplayObject.
Цитата:
Да, при движении вертикально вверх, персонаж люто, простите, "виляет попой".
Не обязательно ходить строго по хексам (если это не обусловлено геймплеем), главное придти из точки A в точку B.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 10.11.2011, 16:35
demy вне форума Посмотреть профиль Отправить личное сообщение для demy Найти все сообщения от demy
  № 9  
Ответить с цитированием
demy
 
Аватар для demy

Регистрация: Sep 2009
Сообщений: 105
Отправить сообщение для demy с помощью ICQ
Цитата:
Сообщение от alatar Посмотреть сообщение
И решить их при такой архитектуре будет проблематично. Я бы отделил отображение карты от расчетов и сортировок и не зацикливался на DisplayObject.
Ну, так и думала. Итак уже ноды и просчет пути отдельно, изометрия отдельно, надо и сортировку отделить, и не мучить компьютер. Спасибо.

Насчет непрямого движения - а не возникнет проблем с врезанием во что-нибудь?
И еще придется в перемещении картинки основываться на том, куда он движется далее...
а если он не виляет, а ящик огибает?
Вот не знаю, как точно реализовать этот момент.

Старый 10.11.2011, 16:42
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 10  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Насчет непрямого движения - а не возникнет проблем с врезанием во что-нибудь?
Это можно просчитать заранее. С ромбами вообще такой проблемы не будет, там "виляние" не так выражено, точнее для соседних клеток вообще отсутствует. С хексам придется заранее просчитать свободны ли все пересекаемые ячейки.
__________________
משיח לא בא
משיח גם לא מטלפן

Создать новую тему Ответ Часовой пояс GMT +4, время: 08:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 08:22.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.