Суббота, 16.12.2017, 08:55

Приветствую Вас Гость | RSS
Заколдованная страна
ГлавнаяРегистрацияВход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 3 из 5«12345»
Форум » Обсуждение игры » Электронная версия игры » Эволюция интерфейса (Или назад к столу)
Эволюция интерфейса
connectДата: Четверг, 26.06.2014, 22:53 | Сообщение # 31
Лейтенант
Группа: Друзья
Сообщений: 60
Репутация: 1
Статус: Offline
Пока еще ничего интересного. Разбираю формулы движения по еллипсу, для получения красивой траектории.
 
azlДата: Пятница, 27.06.2014, 17:39 | Сообщение # 32
Админ
Группа: Администраторы
Сообщений: 758
Репутация: 7
Статус: Offline
Сдается мне, ты полез в дебри не сделав основ.

Я набросал то, о чем тебе говорил.

Все бы ничего, но есть одна проблема, о которой я уже писал. Можно кликать за пределами изображений элементов и действие все равно произойдет, т.к. в нельзя указать форму TImage или участок, по которому можно кликать. Это, конечно, не большая проблема, но все же. Можно сделать элементы не в виде треугольников, а в виде прямоугольников и тогда проблема отпадет сама собой. Видимо, ты этот момент не учел, когда делал эскиз.

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

На данном этапе у тебя есть неорганизованный набор идей и ты до конца не представляешь себе общую картину, мне кажется.
 
connectДата: Пятница, 27.06.2014, 20:45 | Сообщение # 33
Лейтенант
Группа: Друзья
Сообщений: 60
Репутация: 1
Статус: Offline
Так тоже уже неплохо, но я имел в виду несколько иное. Те самые "треугольники" в моем представлении на самом деле являются целиковыми игровыми объектами, только повернутыми и убранными за границы окна. Отслеживать наведение и клики я собирался по маске. Т.е. у каждого игрового объекта есть массив из точек, образующий замкнутую фигуру (например прямоугольник). Мы проходим по объектам, сверяя координаты курсора на предмет нахождения его внутри этой маски. Плюс нам нужен параметр "Order", чтобы определять какой объект выше, а какой ниже.
 
azlДата: Пятница, 27.06.2014, 22:37 | Сообщение # 34
Админ
Группа: Администраторы
Сообщений: 758
Репутация: 7
Статус: Offline
Ну я сделал из того, что есть. Т.е., взял готовую картинку и с ней орудовал. Это абсолютно нельзя брать за основу. Тут даже форма не на весь экран разворачивается, по той причине, что картинка будет растянута.

Цитата connect ()
Те самые "треугольники" в моем представлении на самом деле являются целиковыми игровыми объектами, только повернутыми и убранными за границы окна.

Что ты подразумеваешь по игровыми объектами?
То, что ты называешь объектами, у меня это формы. Повернуть форму в Delphi нельзя, как, например, слой в Photoshop'е. Разве что монитор наклонить под определенным градусом. biggrin То же самое касается и объектов, таких как TImage и т.д. Есть возможность в пределах самого TImage разместить изображение под углом. Даже если разместить форму за пределами и оставить только ее часть с фрагментом изображения, не получится сделать эффект выезда формы по дуге.
Также не нужно забывать, что карта - это не просто картинка. Там много других объектов. В моем случае - это TShape, которые показывают текущее местоположение и при клике по некоторым из которых появляются изображения замков.
То же самое касается и листов игроков. Тут еще сложнее, поскольку используется еще больше объектов.
Кроме того, что будет выезжать при клике по объекту Правила? Это целая книга.

Еще 1 момент. Даже если допустить, что можно сделать форму с эффектом выезда по дуге и возможностью расположить ее под нужным углом и т.д., будет открыто много форм, которые будут висеть в памяти. А это не есть хорошо.

Опять же, не стоит забывать об окнах, которые будут открыты во время игры. Если допустить, что объектами, родительской формой которых будет форма с изображением стола, будут какие-то компоненты и будет эффект выезда, они будут выезжать под уже открытые окна.

Мне кажется ты равняешься на возможности Photoshop, совмещая их с Delphi. Располагать объекты в Delphi, как слои в Photoshop'е, не получится. По крайней мере, стандартными средствами, так точно. Возможно, есть какие-то компоненты, которые чем-то помогут, но они не спасут, поскольку без форм тут не обойтись.
 
connectДата: Суббота, 28.06.2014, 14:30 | Сообщение # 35
Лейтенант
Группа: Друзья
Сообщений: 60
Репутация: 1
Статус: Offline
Ну, отчего ж нельзя. Я знаю несколько способов ) например: делаем прозрачную форму, ее задник делаем картинкой. Картинка задника двигается - форма скрыта. Остановилась - форма появилась
 
azlДата: Суббота, 28.06.2014, 17:27 | Сообщение # 36
Админ
Группа: Администраторы
Сообщений: 758
Репутация: 7
Статус: Offline
В таком случае нужно развивать то, что я сделал.
Не нужно, чтобы постоянно висели формы. Кладем на стол TImage с фрагментом карты, как есть сейчас. При клике по этому изображению создается прозрачная форма, на которой в той же позиции размещена такая же часть изображения. И по таймеру изображение начинает двигаться. Это, что касается карты, когда форма будет развернута на весь экран. С правилами, думаю, тут ничего мудрить не нужно. Просто запускать, скажем, вордовский или pdf файл. А с листами игроков тут будет посложнее. Во-первых, в отличие от карты, он будет представлять собой не изображение, а форму с множеством компонентов, возможно, на фоне изображения. Если будет выезжать белый лист, а потом будет появляться форма - будет не совсем то. Во-вторых, тут нужно делать фиксированный размер формы, я думаю.

Вот несколько ссылок по данной теме
http://prof-xaker.at.ua/load....1-0-575
http://www.cyberforum.ru/delphi-multimedia/thread664600.html
http://www.programmersforum.ru/showthread.php?t=112369
http://delphiexpert.ru/delphi-....ya.html

Идея может и неплохая, но крайне геморройная, на мой взгляд.
 
connectДата: Воскресенье, 29.06.2014, 21:09 | Сообщение # 37
Лейтенант
Группа: Друзья
Сообщений: 60
Репутация: 1
Статус: Offline
Вот тут исходник картинки (шрифт, фотошопный файл и пару текстур).
https://www.dropbox.com/s/nm5tle4nxmfddkf/concept02.zip ~12mb

Добавлено (29.06.2014, 20:09)
---------------------------------------------
Реализация моей идеи интерфейса воплотилась в небольшом движке 2d-рендера.
Это сможет позволить тебе создавать дополнительные визуальные эффекты. Например проигрывать какую-нибудь анимацию во время боя. Ну не знаю.. брызги крови, порезы, пламя или еще что. Но движок пока еще не готов для демонстрации.
 
azlДата: Воскресенье, 29.06.2014, 21:32 | Сообщение # 38
Админ
Группа: Администраторы
Сообщений: 758
Репутация: 7
Статус: Offline
Я понял.
Тогда не буду надоедать лишними вопросами, а буду ждать. Тем более, что мне есть над чем работать.
 
connectДата: Вторник, 01.07.2014, 00:37 | Сообщение # 39
Лейтенант
Группа: Друзья
Сообщений: 60
Репутация: 1
Статус: Offline
Первый proof of concept.
https://www.dropbox.com/s/ltxdr9sez2nl4pt/azl2_01s.zip ~3.35mb

Что уже есть
* Кэш изображений (использование одной картинки разными объектами)
* Поддержка bmp, jpg, png форматов изображений
* Отрисовка через back buffer для избежания моргания
* Зацикленное заполнение формы изображением фона (tiled)
* Возможность поворота игрового объекта
* Возможность создавать задачу (пока только поворот)
* Определение активного объекта по динамической маске
* Возможность вешать события на объекты

Чего пока нет
* Перемещения объектов по виртуальному столу
* Работы с дочерними формами
* Прозрачности
 
azlДата: Вторник, 01.07.2014, 18:12 | Сообщение # 40
Админ
Группа: Администраторы
Сообщений: 758
Репутация: 7
Статус: Offline
Здорово получается, мне нравится.
 
connectДата: Четверг, 03.07.2014, 12:15 | Сообщение # 41
Лейтенант
Группа: Друзья
Сообщений: 60
Репутация: 1
Статус: Offline
Сделал добавление объектов относительно привязки

//            label           texture     mask    anchors         x       y      angle
OBJ.Add('monster2',  'monster',  '*',       akLeftTop,      200,  150);
OBJ.Add('paper3',     'paper',      '*',       akLeftBottom, 350,  -200, 40);

А пока более ничего примечательного. В ближайших планах: перемещение объектов по столу и работа с формами. В силу незначительности, пример не прилагаю.

Добавлено (03.07.2014, 11:15)
---------------------------------------------
Некоторые мои эксперименты по передвижению объекта:
http://js.do/conn/cardmove


Сообщение отредактировал connect - Среда, 02.07.2014, 23:10
 
azlДата: Понедельник, 14.07.2014, 23:33 | Сообщение # 42
Админ
Группа: Администраторы
Сообщений: 758
Репутация: 7
Статус: Offline
Немного заморочился с элементами нового дизайна.
Поработал с регионами. Т.е., проблемы с кликом по TImage вне картинки, о которой я писал выше, теперь нет.
При наведении курсора, изображения меняют яркость.
Для примера повесил на пункт меню "Загрузить игру" форму с картинкой окна событий (Книга).
Листы игроков сделал в виде листов из тетради в клеточку. Так будет правильнее и понятнее, а то смятые листы как-то не совсем в тему. В идеале не помешает имитация какой-то надписи ручкой на этих листах, а то не совсем ясно, что это за листочки.
Кубики можно расположить в левой части экрана, где-то под картой, чтобы место не пустовало.
 
connectДата: Вторник, 15.07.2014, 07:34 | Сообщение # 43
Лейтенант
Группа: Друзья
Сообщений: 60
Репутация: 1
Статус: Offline
А у меня тут на днях второй сын родился. Сам понимаешь, не до этого smile Как устаканится новый быт, продолжу.

По тесту: тетрадный лист - хорошо, подсветка - тоже.

ЗЫ: Насчет содержимого форм - их можно двигать, как угодно (повороты, искажения). Нужно только брать содержимое канвы FormX.Canvas, пихать его в текстуру игрового объекта (которая хранится в памяти как TBitmap), делать саму форму невидимой, а дальше вертеть картинку формы, как угодно.

Добавлено (15.07.2014, 06:34)
---------------------------------------------
Пока сделал более грамотный обработчик событий без IF.. IF...

По принципу:

Код
procedure onClick_menu_exit(Sender: integer);
begin
      Form1.Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
      ...
      //           label            texture label   mask    anhcors       x     y       angle   event handler
      OBJ.Add('menu_exit', 'menu_exit_0', '*',      akLeftTop,    600,  600,  0,       onClick_menu_exit);
      ...
end;

procedure TForm1.FormClick(Sender: TObject);
var
      tobj : mObj;
begin
      tobj := OBJ.Items[ OBJ.Selected ];
      if ( Assigned(tobj.onClick) ) then tobj.onClick(i);
end;


Сообщение отредактировал connect - Вторник, 15.07.2014, 07:38
 
azlДата: Вторник, 15.07.2014, 10:06 | Сообщение # 44
Админ
Группа: Администраторы
Сообщений: 758
Репутация: 7
Статус: Offline
Поздравляю с рождением сына.  good Это великое событие!

Цитата connect ()
Насчет содержимого форм - их можно двигать, как угодно (повороты, искажения).

То, что сделал я, не позволяет это делать. Все эти формы - это TImage, спроектированные OnDesignTime, расположенные поверх регионов. Могу выложить исходник.
 
connectДата: Вторник, 15.07.2014, 22:07 | Сообщение # 45
Лейтенант
Группа: Друзья
Сообщений: 60
Репутация: 1
Статус: Offline
Спасибо. smile

Да, было б интересно.
 
Форум » Обсуждение игры » Электронная версия игры » Эволюция интерфейса (Или назад к столу)
Страница 3 из 5«12345»
Поиск:


Золотов Александр © 2017