Разработка интерфейса для незрячих.
Модераторы: Sanja, Максим Кич
Re: Разработка интерфейса для незрячих.
catcha, персонаж не двигается на 2 и более клеток если необходимый путь подобен ходу шахматного коня(только в обратном порядке) в общем когда путь по диагонали перекрыт даже если путь по прямой свободен.
если до перекрытой диагонали еще есть путь по прямой то персонаж или двигается на 1 клетку или если путь долог и свободен, приходит в довольно странную позицию(упирается в стену или не доходит клетку до перекрытой диагонали).
если до перекрытой диагонали еще есть путь по прямой то персонаж или двигается на 1 клетку или если путь долог и свободен, приходит в довольно странную позицию(упирается в стену или не доходит клетку до перекрытой диагонали).
Re: Разработка интерфейса для незрячих.
Сейчас буду пробовать воспроизвести у себя, спасибо!sokolix писал(а):catcha, персонаж не двигается на 2 и более клеток если необходимый путь подобен ходу шахматного коня(только в обратном порядке) в общем когда путь по диагонали перекрыт даже если путь по прямой свободен.
если до перекрытой диагонали еще есть путь по прямой то персонаж или двигается на 1 клетку или если путь долог и свободен, приходит в довольно странную позицию(упирается в стену или не доходит клетку до перекрытой диагонали).
А что на счёт видимого и уже видимых тайлов???
Хорошо они выделяются или надо присматриваться чтобы различить?
И что на счёт предидущего бага с зависающими клетками, исправилось???
Значит так, потестил я и нашёл этот баг.
Будет "баг №2" ...
Это особенность алгоритма.
Исправить не знаю как пока...
У меня герой двигается по алгоритму Бразенхема.
Т.е. когда пользователь выбирает куда хочет попасть, в ф-цию передвижения отсылаются координаты
этого места.
Ф-ция берёт текущие положение персонажа и новые координаты.
Затем рассчитывает нужное кол-во ходов и двигается по прямой к нужной точки.
Если на прямой встречается стена или другое препятствие алгоритм устанавливает координаты персонажа предидущей точки которую он прошёл.
Вот как-то так...
Буду рад послушать мысли по этому поводу...
Re: Разработка интерфейса для незрячих.
судя по пробежкам баг исправился.
примерно такой цвет уже стандартом в 90тых был наверно хотя я за индивидуальную настройку таких параметров.
если стоять на клетке с лестницой то стена все равно не видна
поиск кратчайшего пути очень баянист.
примерно такой цвет уже стандартом в 90тых был наверно хотя я за индивидуальную настройку таких параметров.
если стоять на клетке с лестницой то стена все равно не видна
поиск кратчайшего пути очень баянист.
- Jolly Roger
- Сообщения: 2973
- Зарегистрирован: 27 ноя 2009, 09:10
- Откуда: Minsk, Belarus
Re: Разработка интерфейса для незрячих.
Слушай, а как вся эта красота будет взаимодействовать с монстрами?IPavel писал(а):sokolix писал(а):
З
У меня герой двигается по алгоритму Бразенхема.
Т.е. когда пользователь выбирает куда хочет попасть, в ф-цию передвижения отсылаются координаты
этого места.
Ф-ция берёт текущие положение персонажа и новые координаты.
Затем рассчитывает нужное кол-во ходов и двигается по прямой к нужной точки.
Если на прямой встречается стена или другое препятствие алгоритм устанавливает координаты персонажа предидущей точки которую он прошёл.
Вот как-то так...
Буду рад послушать мысли по этому поводу...
Писать диздок спустя несколько лет разработки и множества изменений концепции - исконная русская девелоперская традиция.
Re: Разработка интерфейса для незрячих.
В смысле???Jolly Roger писал(а): Слушай, а как вся эта красота будет взаимодействовать с монстрами?
А что не так????
Я пока до монстров конечно не дошёл, но проблемы пока с ними не вижу...
Может чего ещё не в курсе конечно...
2 sokolix
Спасибо за тесты
Ну на счёт кротчайшего пути можно конечно подумать ... так сказать задел на будущие...
И на счёт настройки цвета тоже, но уже после реализации стандартных плюшек...
По цвету не совсем понял...
Нормально различаются тайлы видимые и видимые раньше или нужно присматриваться?
P.S. выложил новую версию в шапке.
Доработал с цветами немного, тагже теперь персонаж будет свититься как ёлка...
В том смысле если будет отниматься здоровье например при бое то "@" будет менять цвет, зелёный, жёлтый, красный.
Теперь собачка научилась открывать закрытые двери...
Двери теперь закрытые все по умолчанию.
Открываются автоматически при проходе на неё если дверь конечно не на ключе...
Хотя все пока без ключей.
- Uvadzucumi
- Сообщения: 365
- Зарегистрирован: 29 ноя 2011, 07:13
- Откуда: Дубай, ОАЭ (Минск, Беларусь)
- Контактная информация:
Re: Разработка интерфейса для незрячих.
тут имеется ввиду то, что монстры должны ходить после каждого хода персонажа. а если у тебя один ход будет занимать перемещение через всю карту - то не камельфо. но, думаю, это не проблема - передвижения монстров вызывать после рассчета "следующей" точки по бразенхему.IPavel писал(а):В смысле???Jolly Roger писал(а): Слушай, а как вся эта красота будет взаимодействовать с монстрами?
А что не так????
Я пока до монстров конечно не дошёл, но проблемы пока с ними не вижу...
Может чего ещё не в курсе конечно...
насчет того, что не обходит препятствия - думаю не стоит замарачивать и добавлять еще обход препятствий. и так достаточно того что бегает по клику мыши. хотя... можно и добавить, если малой кровью удасться обойтись (хотя сомневаюсь что малой).
баг с лестницей тоже заметил (когда стоишь на лестнице вверх, то все равно не виден скрытый угол). как понимаю, возникает из за того, что при проверке LOS проверяется - проходит ли взгляд через тайл раньше проверки условия - стоит ли персонаж на проверяемом тайле. вот это нужно поправить.
лучше сделать темнее. например 80-ым цветом. или, даже, 50-м.IPavel писал(а):Нормально различаются тайлы видимые и видимые раньше или нужно присматриваться?
Меня окружали милые, добрые люди... медленно сжимая кольцо
Re: Разработка интерфейса для незрячих.
-> По монстрам согласен.Uvadzucumi писал(а):тут имеется ввиду то, что монстры должны ходить после каждого хода персонажа. а если у тебя один ход будет занимать перемещение через всю карту - то не камельфо. но, думаю, это не проблема - передвижения монстров вызывать после рассчета "следующей" точки по бразенхему.IPavel писал(а):В смысле???Jolly Roger писал(а): Слушай, а как вся эта красота будет взаимодействовать с монстрами?
А что не так????
Я пока до монстров конечно не дошёл, но проблемы пока с ними не вижу...
Может чего ещё не в курсе конечно...
насчет того, что не обходит препятствия - думаю не стоит замарачивать и добавлять еще обход препятствий. и так достаточно того что бегает по клику мыши. хотя... можно и добавить, если малой кровью удасться обойтись (хотя сомневаюсь что малой).
баг с лестницей тоже заметил (когда стоишь на лестнице вверх, то все равно не виден скрытый угол). как понимаю, возникает из за того, что при проверке LOS проверяется - проходит ли взгляд через тайл раньше проверки условия - стоит ли персонаж на проверяемом тайле. вот это нужно поправить.
лучше сделать темнее. например 80-ым цветом. или, даже, 50-м.IPavel писал(а):Нормально различаются тайлы видимые и видимые раньше или нужно присматриваться?
Ничто не мешает в алгоритм Бразенхема добавить вызов для монстров после прохождения каждой клетки.
Всё равно он проходит каждую клетку, и никаких сложностей не возникнет.
-> На счёт обхода препятствий, тоже согласен...
Можно конечно будет добавить интелектуальный даже алгоритм поиска пути, но это уже реализуется как доп фича, и после написания стандартного функционала.
К тому же реализация этой штуки никак не затронет другой код и по этому можно это написать хоть в самом конце реализации.
-> Да, есть такое
Это точно баг...
Смотрел сейчас даже если исключить лестницу из списка блокирующих тайлов, то всё равно угол не виден...
Видно это в пост обработки Кларка где-то глючит...
Если лестницу убрать из угла то всё ок становится...
Там у Кларка в пост обработки условие есть если тайл - пол и если он видимый то тогда вокруг него тоже помечаются тайлы видимым.
Видно из-за этого что условие это не срабатывает и угол не видно...
В общем не знаю пока как решить...
-> В следующей версии попробую сделать потемнее не видимые тайлы.
- Jesus05
- Сообщения: 1840
- Зарегистрирован: 02 дек 2009, 07:50
- Откуда: Норильск, сейчас Санкт-петербург.
- Контактная информация:
Re: Разработка интерфейса для незрячих.
Сделать что-бы алгоритм Кларка думал что лестница это пол. (либо что лестница = пол при условии что на ней стоит тот кто смотрит... или даже то место где стоит тот для кого считаем ФОВ гарантированно пол. Если персонаж стоит в сплошной стене он должен видеть 9 клеток стенки).IPavel писал(а): -> Да, есть такое
Это точно баг...
Смотрел сейчас даже если исключить лестницу из списка блокирующих тайлов, то всё равно угол не виден...
Видно это в пост обработки Кларка где-то глючит...
Если лестницу убрать из угла то всё ок становится...
Там у Кларка в пост обработки условие есть если тайл - пол и если он видимый то тогда вокруг него тоже помечаются тайлы видимым.
Видно из-за этого что условие это не срабатывает и угол не видно...
В общем не знаю пока как решить...
Re: Разработка интерфейса для незрячих.
Если бы Кларк показал свою постобработку моему преподавателю, то быстро бы отправился в страну вечного кодинга. Восемь отдельных и абсолютно одинаковых обработок вместо двух вложенных циклов!
Ниже прилагаю доработанный алгоритм расчёта ФОВ.
[spoiler][/spoiler]
Ниже прилагаю доработанный алгоритм расчёта ФОВ.
[spoiler]
Код: Выделить всё
void Level::_calcFow()
{
for (int i = 0; i<mapw; i++)
for (int j = 0; j<maph; j++)
level.lmap[i][j].visible = false;
int w = hero.fowR;
int h = hero.fowR;
int x1 = max(0, hero.x - w);
int y1 = max(0, hero.y - h);
int x2 = min(hero.x + w, mapw - 1);
int y2 = min(hero.y + h, maph - 1);
for (int i = x1; i<=x2; ++i)
for (int j = y1; j<=y2; ++j)
if (!level.lmap[i][j].visible && _canSee(i, j))
{
level.lmap[i][j].visible = true;
level.lmap[i][j].seen = true;
}
int x, y;
//постобработка
for (int i = x1; i<=x2; ++i)
{
for (int j = y1; j<=y2; ++j)
{
if (_blockingTile(i, j) && !level.lmap[i][j].visible)
{
for (int _i = -1; _i<2; _i++)
{
for (int _j = -1; _j<2; _j++)
{
if (_i==_j && _i == 0) continue;
x = i + _i;
y = j + _j;
if (x >= 0 && x < mapw && y >= 0 && y < maph && !_blockingTile(x, y) && level.lmap[x][y].visible)
{
level.lmap[i][j].visible = true;
level.lmap[i][j].seen = true;
}
}
}
}
}
}
}
Всё вышесказанное - ИМХО, если не указано обратное.
Re: Разработка интерфейса для незрячих.
Прикольно...Феникc писал(а):Если бы Кларк показал свою постобработку моему преподавателю, то быстро бы отправился в страну вечного кодинга. Восемь отдельных и абсолютно одинаковых обработок вместо двух вложенных циклов!
Ниже прилагаю доработанный алгоритм расчёта ФОВ.
[spoiler][/spoiler]Код: Выделить всё
void Level::_calcFow() { for (int i = 0; i<mapw; i++) for (int j = 0; j<maph; j++) level.lmap[i][j].visible = false; int w = hero.fowR; int h = hero.fowR; int x1 = max(0, hero.x - w); int y1 = max(0, hero.y - h); int x2 = min(hero.x + w, mapw - 1); int y2 = min(hero.y + h, maph - 1); for (int i = x1; i<=x2; ++i) for (int j = y1; j<=y2; ++j) if (!level.lmap[i][j].visible && _canSee(i, j)) { level.lmap[i][j].visible = true; level.lmap[i][j].seen = true; } int x, y; //постобработка for (int i = x1; i<=x2; ++i) { for (int j = y1; j<=y2; ++j) { if (_blockingTile(i, j) && !level.lmap[i][j].visible) { for (int _i = -1; _i<2; _i++) { for (int _j = -1; _j<2; _j++) { if (_i==_j && _i == 0) continue; x = i + _i; y = j + _j; if (x >= 0 && x < mapw && y >= 0 && y < maph && !_blockingTile(x, y) && level.lmap[x][y].visible) { level.lmap[i][j].visible = true; level.lmap[i][j].seen = true; } } } } } } }
Но если не в курсе дела, разбераться прейдётся долго чего проверяется и в какую дырку... )))
Ну а у Кларка просто наверно фишка такая...
Он приверженец идеи "чем проще, тем лучше"...
С одной стороны мне нравится этот подход....
С другой лень бывает писать много текста, и забабахиваешь какую-нибудь ултро компактную штуку, а когда через некоторое время возвращаешься к этому месту, сидишь и думаешь с начала - "и какого я тут Васю описал"...
Всё равно спасибо!
P.S. Освежил в памяти этот участок.
Один вопрос. ф-ции min, max свои у тебя или из стандартной библиотеки c++ ???
И ещё один.
В оригинале в пост обработке условие было с проверкой на тайл "пол", как я понимаю ты заменил это условие проверкой ф-цией на блокирующий тайл???
Вот здесь.
if (x >= 0 && x < mapw && y >= 0 && y < maph && !_blockingTile(x, y) && level.lmap[x][y].visible)
Re: Разработка интерфейса для незрячих.
Мужики поделитесь мыслями по окну инвентаря...
Вот дошёл до инвентаря и думаю как лучше оформить это окно...
Вот первые мысли.
Окно будет выглядеть в общем как и геймплей в данный момент...
Т.е. с права - редактор с описанием предмета,
с лева - также останутся характеристики персонажа, чтобы можно было наблюдать за характеристиками во время взаимодействия с предметами инвентаря.
По середине где сейчас игровое поле - это место будет разбито на две равные части по горизонтали,
в правой части будет список предметов с возможностью прокрутки, т.к. если предметов будет много они могут не влезть на один экран.
Левая часть будет разбита на две области,
Одна верхняя - будет больше и там будет рисоваться изображение предмета.
Другая нижняя - будет поменьше, и там будут:
сразу под картинкой - текст "количество предметов", например фляжек воды может быть 2,3, и т.п.
Под этим текстом будет три кнопки,
одна - "снять/одеть, съесть, прочитать заклинания" - в зависимости от предмета будет меняться.
Вторая - "осмотреть" - для выявления магических свойств если они есть.
Третья - "выбросить".
Но какие-то смешанные чувства по такому оформлению...
Сам не пойму, толи чего-то не хватает, толи что-то не то...
В общем поделитесь мыслями/опытом плз!
Вот дошёл до инвентаря и думаю как лучше оформить это окно...
Вот первые мысли.
Окно будет выглядеть в общем как и геймплей в данный момент...
Т.е. с права - редактор с описанием предмета,
с лева - также останутся характеристики персонажа, чтобы можно было наблюдать за характеристиками во время взаимодействия с предметами инвентаря.
По середине где сейчас игровое поле - это место будет разбито на две равные части по горизонтали,
в правой части будет список предметов с возможностью прокрутки, т.к. если предметов будет много они могут не влезть на один экран.
Левая часть будет разбита на две области,
Одна верхняя - будет больше и там будет рисоваться изображение предмета.
Другая нижняя - будет поменьше, и там будут:
сразу под картинкой - текст "количество предметов", например фляжек воды может быть 2,3, и т.п.
Под этим текстом будет три кнопки,
одна - "снять/одеть, съесть, прочитать заклинания" - в зависимости от предмета будет меняться.
Вторая - "осмотреть" - для выявления магических свойств если они есть.
Третья - "выбросить".
Но какие-то смешанные чувства по такому оформлению...
Сам не пойму, толи чего-то не хватает, толи что-то не то...
В общем поделитесь мыслями/опытом плз!
- Uvadzucumi
- Сообщения: 365
- Зарегистрирован: 29 ноя 2011, 07:13
- Откуда: Дубай, ОАЭ (Минск, Беларусь)
- Контактная информация:
Re: Разработка интерфейса для незрячих.
по инвентарю тут несколько все сложнее. окошко сверху, снизу, слева - справа - это все ерунда. значительноо острее вопрос не по отображению а по самому использованию. я в своей теме подымал этот вопрос, но так ничего дельного и не посоветовали. у инвентарю у меня всего несколько требований, главное - должна быть возможность использовать предметы из инвентаря без вызова самого окна инвентаря. т.е. например. мы нашли какой либо свиток. подобрали. должно быть сообщение - что подобрали свиток в слот 'd'. спустя какое то время, мы должны нажать на клавишу - "прочитать свиток" а потом "d" - при этом должен прочитаться соответствующий свиток. вроде все ок, но есть несколько проблем. например - если мы выкинули предмет из инвентаря, который раньше подобранного свитка, то свиток не должен сменить слот. а должен так и остаться в слоте d. подбирая - заполняем пустые слоты. эта система мне нравится наиболее всего, но... это ограничивает нас в количестве переносимыъ предметов, так как букв - ограниченное количество, а делать разные a1,a2 и т.д. - не самый красивый выход. можно, как во многих рогаликах - не привязываться к буквам, тогда - каждая страница со списком вещей - свои буквы, но... это, во всяком случае меня бесило больше всего в cataclysm-е. т.е. для любой манипуляции с предметами необходимо открывать инвентарь
ну а коекретно по использованию предметов - тут хорошая идея - при выборе предмета - позволять вызывать действия, которые с этим предметом нужно сделать. например - если мечь в руках, то при его выборе должно быть - "снять" и "выбросить", если не в руках, то "одеть". если свиток, то должно быть "прочитать". чтобы все действия с предметами были доступни и из инвентаря, дабы не заставлять учить кучу кнопок игрока. отсюда же вытекает и то, что при экипировке предметов, они не должны из инвентаря пропадать - как, например, в rayel-е. эти же действия должны вызываться и при просмотре списка предметов, экипированных на игроке.
в общем как то так мне представляется. а какое окошко слева, какое справо... это дело десятое. я, в результате, так и не дописал инвентарь до конца... остался до лучших времен... может быть когда нибудь...
ну а коекретно по использованию предметов - тут хорошая идея - при выборе предмета - позволять вызывать действия, которые с этим предметом нужно сделать. например - если мечь в руках, то при его выборе должно быть - "снять" и "выбросить", если не в руках, то "одеть". если свиток, то должно быть "прочитать". чтобы все действия с предметами были доступни и из инвентаря, дабы не заставлять учить кучу кнопок игрока. отсюда же вытекает и то, что при экипировке предметов, они не должны из инвентаря пропадать - как, например, в rayel-е. эти же действия должны вызываться и при просмотре списка предметов, экипированных на игроке.
в общем как то так мне представляется. а какое окошко слева, какое справо... это дело десятое. я, в результате, так и не дописал инвентарь до конца... остался до лучших времен... может быть когда нибудь...
Меня окружали милые, добрые люди... медленно сжимая кольцо
Re: Разработка интерфейса для незрячих.
2 Uvadzucumi
Ну, да с инвентарём не всё так просто...
Я тоже взялся за голову когда первый раз прочитал ...
Всё слишком запутанно у Кларка как-то получилось...
Ну а по реализации...
Согласен с тобой...
Ну мне кажется будет проще сделать так...
Не привязывать вещи к буквам в инвентаре.
Но оставить из этой идеи навигацию по буквам...
В общем нажимаем например на "e" - еда, и спец ф-ция посаженная на эту букву просеивает весь инвентарь и выбирает только еду.
Затем показывается список еды, и тут уже опять для навигации используются буквы, например "в" - вода, "х" - хлеб и т.п.
Не надо таким образом запоминать слот при подборе и навигация остаётся удобной без надобности входить каждый раз в инвентарь.
Ну вот как-то так...
Я пока сильно об этом не думал ещё, т.к. только приступил к инвентарю, и первым делом решил написать окошко для него, а за тем уже писать инвентарь а то иначе инвентарь был бы а тестировать его не было бы окошка...
Ну, да с инвентарём не всё так просто...
Я тоже взялся за голову когда первый раз прочитал ...
Всё слишком запутанно у Кларка как-то получилось...
Ну а по реализации...
Согласен с тобой...
Ну мне кажется будет проще сделать так...
Не привязывать вещи к буквам в инвентаре.
Но оставить из этой идеи навигацию по буквам...
В общем нажимаем например на "e" - еда, и спец ф-ция посаженная на эту букву просеивает весь инвентарь и выбирает только еду.
Затем показывается список еды, и тут уже опять для навигации используются буквы, например "в" - вода, "х" - хлеб и т.п.
Не надо таким образом запоминать слот при подборе и навигация остаётся удобной без надобности входить каждый раз в инвентарь.
Ну вот как-то так...
Я пока сильно об этом не думал ещё, т.к. только приступил к инвентарю, и первым делом решил написать окошко для него, а за тем уже писать инвентарь а то иначе инвентарь был бы а тестировать его не было бы окошка...
- Cfyz
- Сообщения: 776
- Зарегистрирован: 30 ноя 2006, 10:03
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Разработка интерфейса для незрячих.
Я не помню, чтоб я тебе отвечал по поводу прикрепления букв предметам, но в силу затронутой темы отпишусь здесь.Uvadzucumi писал(а): главное - должна быть возможность использовать предметы из инвентаря без вызова самого окна инвентаря. т.е. например. мы нашли какой либо свиток. подобрали. должно быть сообщение - что подобрали свиток в слот 'd'. спустя какое то время, мы должны нажать на клавишу - "прочитать свиток" а потом "d" - при этом должен прочитаться соответствующий свиток.
По-моему это нехорошая затея. Это совершенно бессмыссленно заставляет запоминать что там и когда было подобрано (причем в большом количестве!), не давая явного удобства взамен. По нажатию "прочитать свиток" можно сразу открывать как-бы-инвентарь со списком доступных для чтения свитков, опционально отсортированный в желаемом порядке. При выборе свитка инвентарь сразу закрывается.
В итоге
1. Действий ровно то же количество.
2. Кучу рандомных пар буква-предмет в голове держать не надо.
3. При выборе всегда актуальный список именно доступных предметов, а не "использовать, d, хаха у вас левел не тот".
4. Можно любую контекстную информацию выводить для предмета, например сколько ходов займет каст заклинания или какой суммарный урон будет если взять это оружие.
Но в первую очередь это конечно запоминание. Я обладаю, в целом, совершенно средней памятью, но к десятому поднятому и вразнобой использованному предмету я ни в жисть не вспомню что там какой букве соотносится. Интерфейс должен помогать, а не насиловать. Вспоминаем в какой теме мы сейчас находимся и понимаем, что краткосрочная память и так информацией забита по самое не могу.
Пытается раскуклиться
Re: Разработка интерфейса для незрячих.
в описании пола грамматические ошибки: проворние, увидить, с право(правильно:справа)
если встать на лестницу,то обзор пропадает и все стены становятся серыми.
если встать на лестницу,то обзор пропадает и все стены становятся серыми.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 37 гостей