Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Самописная игра: "Миссия МЧС" | страница 2
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 2 из 4
На страницу: Пред.  1, 2, 3, 4  След. | Все страницы
Поиск в этой теме:
Канал Игры Мечты: «Самописная игра: "Миссия МЧС"»
БулерМэн
 420 EGP


Рейтинг канала: 2(21)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
Shirson :
Отучайтесь думать феерически-красочными картинками

Это была цитата из рецензии Улыбка
Shirson :
Кстати, как влияет волна на вертолёт?

Все зависит от того, как был задет вертолет.
Одно дело, если гребень волны, высота которого сравнялась с высотой полета - вертолет крутанет по оси Z, и повредит только хвостовое "оперение", в случае К-52 или смоделированного аналога.
В случае, если захлестнуло волной корпус вертолета, или проще говоря - волна накатилась на вертолет выше лопастей - вертолет теряет возможность лететь и падает в воду, что равносильно уничтожению, но не уничтожает вертолет. Пилот и экипаж могут спастись, то есть будут плавать на поверхности с теми, кого они спасали. ("человечки" к слову уже реализованы)
Shirson :
Какие у него есть варианты?

Предположим, в интерфейсе игроку предоставляются данные о том, сколько вылетов он сможет сделать на остатке топлива и сколько времени это займет на максимальной скорости.
Сколько вылетов он сможет сделать на минимальной скорости и сколько времени это займет.
Можно сделать подсветку красным - не хватит топлива на максимальную скорость/дистанцию.

Последний раз редактировалось: БулерМэн (12:21 15-10-2015), всего редактировалось 1 раз
    Добавлено: 12:19 15-10-2015   
Shirson
 1605 EGP


Модератор
Рейтинг канала: 7(626)
Репутация: 219
Сообщения: 16511
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
Я это к тому, что нужно изначально планировать геймплей с расчётом на то, что у игрока всегда должен быть какой-то диапазон выбора и он должен быть сбалансированым. В идеале это должно быть на всех этапах игры.
_________________
У меня бисера не доxеpа.

Последний раз редактировалось: Shirson (17:57 15-10-2015), всего редактировалось 1 раз
    Добавлено: 17:11 15-10-2015   
Diff
 708 EGP


Модератор
Рейтинг канала: 2(11)
Репутация: 44
Сообщения: 4179
Откуда: Сферическая Земля в вакууме.
Зарегистрирован: 04.07.2003
Shirson :
нужно изначально планировать геймплей с расчётом на то, что у игрока всегда должен быть какой-то диапазон выбора

Затыкать дыру загогулиной или все-таки надеяться что палка придет Улыбка.
_________________
Конец света в конце тоннеля
    Добавлено: 17:51 15-10-2015   
Shirson
 1605 EGP


Модератор
Рейтинг канала: 7(626)
Репутация: 219
Сообщения: 16511
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
Это, как раз, тоже выбор Улыбка
_________________
У меня бисера не доxеpа.
    Добавлено: 17:57 15-10-2015   
БулерМэн
 420 EGP


Рейтинг канала: 2(21)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
Попытка условно изобразить волны в океане:
Без текстуры:

С текстурой:

Вопрос - похоже на волны? Улыбка

Последний раз редактировалось: БулерМэн (05:14 18-10-2015), всего редактировалось 1 раз
    Добавлено: 05:13 18-10-2015   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
Частоту поменьше сделай, а то я не успеваю рассмотреть, что там у тебя пробегаетУлыбка

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

Без текстуры больше на правду похоже, ИМХО.
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."

Последний раз редактировалось: ТехноМаг (06:13 18-10-2015), всего редактировалось 1 раз
    Добавлено: 06:12 18-10-2015   
БулерМэн
 420 EGP


Рейтинг канала: 2(21)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
ТехноМаг :
Частоту поменьше

имеешь в виду частоту волн? или кадров анимации?

ТехноМаг :
Градиент странный. Больше на световой блик на выпуклом стекле похоже, чем на волны.

Это пятиминутный эксперимент, там абсолютная шкала высоты и в зависимости от этой высоты - рисуется определенный спрайт. Да, это несколько похоже больше на стекло Гы-гы
ТехноМаг :
Без текстуры больше на правду похоже, ИМХО.

будем работать над этим Улыбка

Последний раз редактировалось: БулерМэн (11:08 18-10-2015), всего редактировалось 1 раз
    Добавлено: 11:07 18-10-2015   
Sh.Tac.
 151 EGP


Рейтинг канала: 5(108)
Репутация: 14
Сообщения: 1426

Зарегистрирован: 27.07.2005
а почему никто ещё не спросил зачем нужны эти волны в океане? Улыбка
_________________
This is what you get ...
(c) Radiohead
    Добавлено: 20:09 18-10-2015   
Shirson
 1605 EGP


Модератор
Рейтинг канала: 7(626)
Репутация: 219
Сообщения: 16511
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
Первый пост на второй странице повнимательнее прочти Подмигиваю
_________________
У меня бисера не доxеpа.
    Добавлено: 21:52 18-10-2015   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
БулерМэн :
Это пятиминутный эксперимент


Добавь модификатор 1- (или домножь на -1 [зависит от того как ты синус в уровень представляешь]). По идее более высокие позиции светлее должны быть. У тебя наоборот получилось. И уровни чуть грубее, тогда должно исчезнуть бликованиеи остаться натуральный цвет.
PS: щас с похожей проблемой столкнулся при текстуировании планеты в своем проекте Подмигиваю

Либо я не туда смотрю и все нормально, но тогда у тебя корабль в противофазе качается Гы-гы

Еще можно тень волны добавить нормалькой. Тогда будет более понятно где гребень.
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."

Последний раз редактировалось: ТехноМаг (23:29 18-10-2015), всего редактировалось 4 раз(а)
    Добавлено: 23:24 18-10-2015   
БулерМэн
 420 EGP


Рейтинг канала: 2(21)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
ТехноМаг :
Еще можно тень волны добавить нормалькой

это не 3D... Это 2D Гы-гы хотя и втут можно нормали построить.
ТехноМаг :
у тебя корабль в противофазе качается

Кривизна реализации это Улыбка И кораблик пока что просто как пример.

Я вот думал, как же раскрасить гребешки волн.
Но что-то пока в голову ничего не приходит.
Дело в том, что в случае одного источника волн - можно тупо красить значения равные нолю в белесый спрайт.
Но волна не статична, она меняет координаты источника и появляются новые волны с наложением, вернее умножением.
Получаются более менее реалистичные волнения.
Если бы было все так просто - это было бы просто Улыбка

Последний раз редактировалось: БулерМэн (00:22 19-10-2015), всего редактировалось 3 раз(а)
    Добавлено: 00:17 19-10-2015   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
БулерМэн :
можно нормали построить.


Угу в изометрическом представлении. И тогда все ровно ляжет.

добавлено спустя 37 секунд:
БулерМэн :
можно тупо красить значения равные нолю в белесый спрайт


А у тебя диапазон какой? {-1..1} ?
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."

Последний раз редактировалось: ТехноМаг (02:15 19-10-2015), всего редактировалось 1 раз
    Добавлено: 02:15 19-10-2015   
БулерМэн
 420 EGP


Рейтинг канала: 2(21)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
ТехноМаг :
А у тебя диапазон какой? {-1..1} ?

диапазон высоты волн - {0...5} примерно, но может быть больше.
То есть у меня колеблется не высота волны, а глубина по Z относительно верхней точки ноль.

добавлено спустя 53 секунды:
БулерМэн :
можно тупо красить значения равные нолю в белесый спрайт.

попробовал, не можно. У меня в ноле получается сплошное белое поле, т.к. это по сути начало отсчета.

Последний раз редактировалось: БулерМэн (23:53 19-10-2015), всего редактировалось 1 раз
    Добавлено: 23:53 19-10-2015   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
Можно разделить волну условно на несколько зон и брать набор пикселей из нужной текстуры (градиента).

Показываю на примере:

Делим волны на три условные зоны.

Первая: рабочий диапазон 0-2: Набор из текстуры deep.
Вторая: р.д. 2-4: Набор из текстуры ramp
Третий: р.д. 4-5: Набор из текстуры up

Смотрим входное значение из диапазона (лучше float использовать)

Если значение соответствует одному из диапазона то берем цвет из нужной текстуре по UV, которые вычисляются из координат плоскости, на которую все накладывается (U = Xp / Widthp) (V = Yp / Heightp) (тем самым мы еще и анимацию самой волны имитируемым).

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

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

В принципе у тебя примерно что-то такое и сделано, но не могу понять, где какое значение высоты у тебя приходит.

UPD:

Я бы особо не выеживался. Волна это радиан от 0 до Пи. Синус угла от 0 до 1.
Вполне можно взять за диапазон. Для объема добавить проверку угла. Если < Pi/2 - дальнаяя сторона; > Pi/2 ближняя сторона. И по ним дополнительное затенение считать.

Получается условно два прогона. В первом считаем цвет волны по ее высоте. Во втором придаем ей объем тенями.
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."

Последний раз редактировалось: ТехноМаг (23:22 20-10-2015), всего редактировалось 4 раз(а)
    Добавлено: 23:11 20-10-2015   
БулерМэн
 420 EGP


Рейтинг канала: 2(21)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
ТехноМаг :
В принципе у тебя примерно что-то такое и сделано, но не могу понять, где какое значение высоты у тебя приходит.

Значения все у меня хранятся в матрице.
Матрица обновляется с каждым кадром анимации.
Есть объект, который а) рисует б) обновляет.
Вопрос о соседних точках и когда рисовать пену, а когда не пену - тоже работа объекта по отрисовке.
Объект проверяет значения матрицы соседних точек от текущей, см. предыдущий мой пост с картинками.
В итоге несколько вложенных условий:
Код:
Это пик волны? рисуем пену
Иначе: это левый склон? рисуем темную воду
       Иначе: это правый склон? рисуем светлую воду
              Иначе: рисуем самую темную воду.

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

FPS: 14-16 - но выглядит...

Второй вариант, это использование трехмерной графики в режиме изометрии. Это решает проблему "трансформируемых спрайтов по сетке".
 Cкрытый текст   (кликните здесь для просмотра)

FPS: 9-10 но по крайней мере можно задать текстуру...

Но появляется другая проблема - как рисовать пену?
Во всех 3D-редакторах вроде бы используется координата высоты, и соседние координаты для определения - это пик или это ложбина на геометрии. Ложбина - рисовать обычную текстуру, пик - рисовать интенсивную пену.
У меня этот алгоритм уже реализован, но только на плоских спрайтах.
ТехноМаг :
Если значение соответствует одному из диапазона то берем цвет из нужной текстуре по UV, которые вычисляются из координат плоскости, на которую все накладывается (U = Xp / Widthp) (V = Yp / Heightp) (тем самым мы еще и анимацию самой волны имитируемым).

Вообще интересная мысль, если я правильно понял:
для обычной текстуры воды - берется диапазон текстуры по X от 0.5 до 1. По Y соответственно тоже от 0.5 до 1.
Получаем отрисовку одного фрагмента текстуры из 4-х возможных, не меняя при этом саму текстуру (!!!)

Просто вода, вода с легкой и редкой пеной, вода с пеной, и сплошная пена.
(это как раз и происходит разбивкой одной текстуры на множество фрагментов - "Unwrap UVW" в 3dsmax)
В этом случае, трансформация имитирует форму поверхности, а текстура - добавляет реалистичности.
Текстура изменяется в зависимости от высоты по принципу сдвига:
вода - сдвиг 0 по X,Y
вода с легой пеной - сдвиг 0.5 по X
вода с пеной - сдвиг 0.5 по Y
пена - сдвиг 0.5 по X,Y

Проблема в данном случае может возникнуть следующая:
"треугольность" отдельных фрагментов текстуры пены и обычной воды на поверхности геометрии. То есть тупо будут лезть треугольные куски то светлого, то темного цвета, так как вся геометрия построена на треугольниках, а не на квадратах.

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

Третий метод - рисовать размытые спрайты пены в пиках.
Так как текстура у модели может быть одна, это ограничение движка такое, то нужно измудряться как-то это обойти.
В движке GameMaker есть так называемые surface - холсты, на которых можно рисовать любым спрайтом, точкой, линией и т.д.
Перед отрисовкой текстуры поверхности - мы создаем сурфейс, рисуем дефолтную текстуру моря - рисуем поверх в нужных местах спрайты пены и следующим шагом - ставим эту полученную текстуру на модель. В следующем шаге - опять берем дефолтную текстуру моря и опять все те же действия.
Получаем в итоге "годную" текстуру динамически изменяющуюся в зависимости от высоты, при этом все сглажено и имеются плавные переходы за счет заранее подготовленных "плавных" спрайтов пены.
Проблема здесь может быть так же связана с скоростью работы - FPS может оказаться ниже играбельного предела - меньше 12 FPS.

Но это предположение, надо пробовать варианты.

Последний раз редактировалось: БулерМэн (17:45 25-10-2015), всего редактировалось 7 раз(а)
    Добавлено: 17:17 25-10-2015   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
БулерМэн :
"треугольность"


Там не треугольность будет. В этом случае тебе придется целые регионы прорисовывать и анврапом тут не обойдешься (еще - 2-3 кадра XD)

Вот посмотри тут: http://www.gamedev.ru/code/articles/?id=4361&page=2

Есть шейдер на GLSL, который прорисовывает воду на плоскость.
В принципе GM их должен поддерживать, если правильно помню.

Это как 4ый метод, в случае, если практически все перечисленное Выше окажется не жизнеспособным.

добавлено спустя 6 минут:
БулерМэн :
Получаем отрисовку одного фрагмента текстуры из 4-х возможных, не меняя при этом саму текстуру (!!!)


Ни в коем случае. Потеряешь на рсчете региона, ибо:

ТехноМаг :
прорисовывать и анврапом тут не обойдешься


Только если захардкодить ширину и высоту каждого региона. В твоем случае:
r1 = {0..0.5} {0..0.5}
r2 = {0.5..1} {0..0.5}
r3 = {0..0.5} {0.5..1}
r4 = {0.5..1} {0.5..1}

и пересчитать наложение каждого леера, таким образом, чтобы диапазон региона соостветсвовал UV {0..1} плоскости.

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

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

Могу предложить для повышения производительности наделать РАЗНЫХ текстурных лееров и рисовать нужный там где надо. Тогда будет мягкая картинка без лишних расчетов (про интерполяцию на стыках не забудь только).
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."

Последний раз редактировалось: ТехноМаг (12:59 27-10-2015), всего редактировалось 4 раз(а)
    Добавлено: 12:47 27-10-2015   
БулерМэн
 420 EGP


Рейтинг канала: 2(21)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
БулерМэн :
Текстура изменяется в зависимости от высоты по принципу сдвига:
вода - сдвиг 0 по X,Y
вода с легой пеной - сдвиг 0.5 по X
вода с пеной - сдвиг 0.5 по Y
пена - сдвиг 0.5 по X,Y

ТехноМаг :
Только если захардкодить ширину и высоту каждого региона. В твоем случае:
r1 = {0..0.5} {0..0.5}
r2 = {0.5..1} {0..0.5}
r3 = {0..0.5} {0.5..1}
r4 = {0.5..1} {0.5..1}

По факту - тоже самое Улыбка Видимо я криво объяснил.

На счет шейдеров в GM. В GameMaker8.1 на котором я делаю данную игру - шейдеров нет. Для работы с шейдерами необходимы сторонние библиотеки, а известные мне DLL умеющие работать с пиксельными шейдерами не работают под 8.1.
Цитата:
Шейдеры. Шейдеры версии 1.4 были доступны для GM8.0, подключались с помощью DLL, и для их написания использовался ассемблер.

Хардкодинг форева Гы-гы
В GAmeMakerStudio (то есть версия старше 8.1) - есть возможность работы с шейдерами, но придется переделывать ВЕСЬ код, так как изменен синтаксис некоторой части функций. То есть сделать рефакторинг в данном случае - дороже чем изобретение велосипеда.

добавлено спустя 3 минуты:
ТехноМаг :
и пересчитать наложение каждого леера

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

Последний раз редактировалось: БулерМэн (15:31 27-10-2015), всего редактировалось 3 раз(а)
    Добавлено: 15:23 27-10-2015   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
БулерМэн :
через дублирование геометрии.


зачем таки сложности?

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

Смотри на это так:

Числовое значение высоты => числовое описание региона текстуры (или интерполяция двух регионов) => текстура
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
    Добавлено: 15:48 27-10-2015   
БулерМэн
 420 EGP


Рейтинг канала: 2(21)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
UPD: застрял на 3d-сетке.
Алгоритм рисования ячеек сетки в 3d оказался довольно сложным и немного пугающим по времени анализа.
Если кто-то знает, по какому алгоритму рисуется плоскость из треугольников, то есть как соединяются вершины, в какой последовательности - подскажите пожалуйста. Вопрос вынесу в вопросницу...

UPD2: Делаю мультиплеер на тестовой 2d-игре, есть ощущение, что это я реализую быстрее, чем расколю орешек "отрисовки полигональной плоскости"...
Фишка для мультиплеера, подойдет для космо-шутера-сима: безразмерное игровое поле, которое уже реализовано, то есть можно улететь на несколько миллионов километров и при этом быть в той же локации, что и другие онлайн игроки.
Для игры "Миссия МЧС" эта фишка ни к чему, разве что реализовать огромную мировую карту со стандартной свернутостью пространства - когда игрок залетает за границы карты внизу, а вылетает сверху.
В общем основная задача тестовой игры - реализация мультиплеера.

Последний раз редактировалось: БулерМэн (15:13 01-01-2016), всего редактировалось 1 раз
    Добавлено: 15:11 01-01-2016   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
БулерМэн :
как соединяются вершины


По часовой стрелке - индексным бфуффером (если ты об этом). Вот тут: https://msdn.microsoft.com/ru-ru/library/windows/desktop/bb147325(v=vs.85).aspx примерчик есть.
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
    Добавлено: 08:32 02-01-2016   
Канал Игры Мечты: «Самописная игра: "Миссия МЧС"»
На страницу: Пред.  1, 2, 3, 4  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Девушка намного проще совмещается с компом, чем мужик со швейной машинкой. (точно подметила Nadin)

  » Самописная игра: "Миссия МЧС" | страница 2
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18