Освещение в 2D игре
От: Рома Мик Россия http://romamik.com
Дата: 25.01.06 18:40
Оценка:
Очень хочется реализовать сабж, в том смысле, что летают объекты по экрану и из левого верхнего угла освещаются, точь в точь как кнопки в windows, только объекты еще и крутятся (исключительно вокруг оси перпендикулярной экрану).
Варианты, которые вижу я:
1) Честно рисовать 3D модели, но качества что-то должного не получается, от пререндеренных моделей отличие видно невооруженным глазом. Придется менять всю идеоологию, а куча кода уже написана.
2) Использовать emboss bump mapping. Я так сделал, сила эффекта какая-то слабенькая, т.е. разницу между нулем и максимумом видно хорошо, а вот всякие плавные переходы так себе. Кроме того, например, на hge или spritecraft не сделаешь, приходится писать dx код, а это отнимает время и привносит баги.
3) Я этого не делал, но можно комбинировать 4 (6, 8) разных пререндеренных спрайта, освещенных с разных сторон. Еслди нет выраженных теней, то должно работать. Попробую в ближайшее время.

Что-то еще?
... << RSDN@Home 1.2.0 alpha rev. 622>>
Re: Освещение в 2D игре
От: Alexey Chen Чили  
Дата: 25.01.06 20:09
Оценка:
Здравствуйте, Рома Мик, Вы писали:

РМ>Очень хочется реализовать сабж, в том смысле, что летают объекты по экрану и из левого верхнего угла освещаются, точь в точь как кнопки в windows, только объекты еще и крутятся (исключительно вокруг оси перпендикулярной экрану).


ИМХО, странное освещение. В принципе, эффект выпуклости делается в самих спрайтах.

Я как-то хотел в самом SpriteCraft'e вертексное освещение сделать, для большего эффекта картинки. Для атмосферности. Но руки не дошли ;(

РМ>3) Я этого не делал, но можно комбинировать 4 (6, 8) разных пререндеренных спрайта, освещенных с разных сторон. Еслди нет выраженных теней, то должно работать. Попробую в ближайшее время.


Когда попробуешь, напиши, плиз, что получилось.
Re[2]: Освещение в 2D игре
От: HPR  
Дата: 26.01.06 09:19
Оценка: +1
Здравствуйте, Alexey Chen, Вы писали:

AC>Здравствуйте, Рома Мик, Вы писали:


РМ>>Очень хочется реализовать сабж, в том смысле, что летают объекты по экрану и из левого верхнего угла освещаются, точь в точь как кнопки в windows, только объекты еще и крутятся (исключительно вокруг оси перпендикулярной экрану).


AC>ИМХО, странное освещение. В принципе, эффект выпуклости делается в самих спрайтах.


Так они же у него вращаются...
Re[2]: Освещение в 2D игре
От: Рома Мик Россия http://romamik.com
Дата: 26.01.06 13:52
Оценка:
Здравствуйте, Alexey Chen, Вы писали:

AC>ИМХО, странное освещение. В принципе, эффект выпуклости делается в самих спрайтах.

Объекты крутятся. Как ни странно многие игры (например, astrogeddon из недавнего) делают эффект выпуклости в самих спрайтах, а потом эти спрайты спокойно себе вращают. Мне лично очень глаз режет. У меня так не будет.

AC>Я как-то хотел в самом SpriteCraft'e вертексное освещение сделать, для большего эффекта картинки. Для атмосферности. Но руки не дошли ;(

А толку от вертексного-то? Придется модельки делать, а не спрайты...

РМ>>3) Я этого не делал, но можно комбинировать 4 (6, 8) разных пререндеренных спрайта, освещенных с разных сторон. Еслди нет выраженных теней, то должно работать. Попробую в ближайшее время.

AC>Когда попробуешь, напиши, плиз, что получилось.
Вот в ближайшие выходные и попробую, или даже раньше, если получится. Эксперименты в фотошопе проходят успешно.
Re[3]: Освещение в 2D игре
От: Alexey Chen Чили  
Дата: 26.01.06 14:16
Оценка:
Рома Мик пишет:
> AC>Я как-то хотел в самом SpriteCraft'e вертексное освещение сделать, для большего эффекта картинки. Для атмосферности. Но руки не дошли ;(
> А толку от вертексного-то? Придется модельки делать, а не спрайты...
Ну когда игра — платформер, и свет используется не для выражения выпуклости, а для
создания атмосферы, то вполне можно спрайт натягивать на более мелкую сетку и освещять её
с учётом расположенных на сцене источников света. Сцена приобретает эфеект глубины и
атмосферу таинственности.

> РМ>>3) Я этого не делал, но можно комбинировать 4 (6, 8) разных пререндеренных спрайта, освещенных с разных сторон. Еслди нет выраженных теней, то должно работать. Попробую в ближайшее время.

> AC>Когда попробуешь, напиши, плиз, что получилось.
> Вот в ближайшие выходные и попробую, или даже раньше, если получится. Эксперименты в фотошопе проходят успешно.
Ты только о результатах написать не забудь. Желательно с шотами. Жутко интересно что
получится.
Posted via RSDN NNTP Server 2.0
Re: Освещение в 2D игре
От: HPR  
Дата: 26.01.06 18:43
Оценка:
Здравствуйте, Рома Мик, Вы писали:

Я бы посоветовал одну вещь, но я ведь Дэльфин . Ну да ладно: в общем в компоненте UnDelphiX у объекта TDirectDrawSurface есть такая функция DrawAdd: вывод спрайта с растровой операцией + альфой. Можно в Фотошопе сделать Lens Flare и выводить его потом этой функцией — получается эффект освещения.
Re[2]: Освещение в 2D игре
От: Рома Мик Россия http://romamik.com
Дата: 27.01.06 16:22
Оценка:
Здравствуйте, HPR, Вы писали:

HPR>Здравствуйте, Рома Мик, Вы писали:


HPR>Я бы посоветовал одну вещь, но я ведь Дэльфин . Ну да ладно: в общем в компоненте UnDelphiX у объекта TDirectDrawSurface есть такая функция DrawAdd: вывод спрайта с растровой операцией + альфой. Можно в Фотошопе сделать Lens Flare и выводить его потом этой функцией — получается эффект освещения.

Собственно это еще один эффкт, блики. С бликами тоже не все так просто, потому что перед тем как нарисовать, надо вычислить где рисовать. Но это я уже сделал.
... << RSDN@Home 1.2.0 alpha rev. 622>>
Re[3]: Освещение в 2D игре
От: Hacker_Delphi Россия  
Дата: 28.01.06 08:46
Оценка:
Здравствуйте, Рома Мик, Вы писали:

А не судьба спрайтов для всех вращений заранее сделать?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Re[4]: Освещение в 2D игре
От: Рома Мик Россия http://romamik.com
Дата: 28.01.06 12:41
Оценка:
Здравствуйте, Hacker_Delphi, Вы писали:

H_D>Здравствуйте, Рома Мик, Вы писали:


H_D>А не судьба спрайтов для всех вращений заранее сделать?

Я думал об этом, подсчитал объем и ужаснулся. Допустим штук 30 спрайтов, допустим по 15 кадров анимации на каждый, ну и штук 50 видимо разных углов поворота чтоб не дергалось. Итого 22500 картинок по 10 килобайт допустим каждая итого 225000 кб, т.е. 200 мегабайт примерно.
... << RSDN@Home 1.2.0 alpha rev. 622>>
Re[5]: Освещение в 2D игре
От: Hacker_Delphi Россия  
Дата: 29.01.06 11:47
Оценка:
Здравствуйте, Рома Мик, Вы писали:

РМ>Здравствуйте, Hacker_Delphi, Вы писали:


H_D>>Здравствуйте, Рома Мик, Вы писали:


H_D>>А не судьба спрайтов для всех вращений заранее сделать?

РМ>Я думал об этом, подсчитал объем и ужаснулся. Допустим штук 30 спрайтов, допустим по 15 кадров анимации на каждый, ну и штук 50 видимо разных углов поворота чтоб не дергалось. Итого 22500 картинок по 10 килобайт допустим каждая итого 225000 кб, т.е. 200 мегабайт примерно.
  1. нафига столько кадров анимации? (обычно в 2Д играх стока не используется)
  2. хватит 36 углов поворота (остальное уже можно просто поворотами добирать, возможно что хватит 16-ти)
  3. какого размера спрайты? если что-то типа 32*32 — получается, что у тебя
    32*32*4*36*15*30 = 66355200 байт, то есть около 64 мегабайт они займут в видеопамяти (а если все туда не запихнуть — будет медленно)
Не забывай, что PNG сжимает раза в 4-10, насколько я помню, то есть около 6-16 мегабайт на все спрайты...
а как уже говорилось, в принципе можно и меньше сделать
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Re[6]: Освещение в 2D игре
От: Рома Мик Россия http://romamik.com
Дата: 29.01.06 16:48
Оценка:
Здравствуйте, Hacker_Delphi, Вы писали:

H_D>>>А не судьба спрайтов для всех вращений заранее сделать?

РМ>>Я думал об этом, подсчитал объем и ужаснулся. Допустим штук 30 спрайтов, допустим по 15 кадров анимации на каждый, ну и штук 50 видимо разных углов поворота чтоб не дергалось. Итого 22500 картинок по 10 килобайт допустим каждая итого 225000 кб, т.е. 200 мегабайт примерно.
_D>
  • нафига столько кадров анимации? (обычно в 2Д играх стока не используется)
    А сколько? У меня вот столько получается... Летит кораблик космический, покачивается немного, лампочками мигает. Чтобы плавно было штук десять-пятнадцать кадров надо...

    H_D>
  • хватит 36 углов поворота (остальное уже можно просто поворотами добирать, возможно что хватит 16-ти)
    36 явно не хватает, я и в 50 не уверен: видны резкие скачки при смене освещенности.

    H_D>
  • какого размера спрайты? если что-то типа 32*32 — получается, что у тебя
    Ну минимум где-то как раз 32x32, до 512x512, а большинство 128x128.

    А вообще, о чем мы спорим?

    ЗЫ Чтой-то выходные прошли, а я так ни за что и не взялся
    ... << RSDN@Home 1.2.0 alpha rev. 622>>
  • Re: Освещение в 2D игре
    От: LexKex  
    Дата: 30.01.06 11:43
    Оценка: 1 (1)
    Здравствуйте, Рома Мик, Вы писали:

    РМ>Очень хочется реализовать сабж, в том смысле, что летают объекты по экрану и из левого верхнего угла освещаются, точь в точь как кнопки в windows, только объекты еще и крутятся (исключительно вокруг оси перпендикулярной экрану).


    если 2Д значит спраиты а значит все освечение прямо вних
    Re[2]: Освещение в 2D игре
    От: Рома Мик Россия http://romamik.com
    Дата: 30.01.06 19:01
    Оценка:
    Здравствуйте, LexKex, Вы писали:

    LK>если 2Д значит спраиты а значит все освечение прямо вних

    А топик прочитать?..
    ... << RSDN@Home 1.2.0 alpha rev. 622>>
    Re[3]: Освещение в 2D игре
    От: casual  
    Дата: 01.02.06 11:49
    Оценка: -1
    Здравствуйте, Рома Мик, Вы писали:

    РМ>Здравствуйте, LexKex, Вы писали:


    LK>>если 2Д значит спраиты а значит все освечение прямо вних

    РМ>А топик прочитать?..

    otvet pryamo v tochku — vse v spraity
    Re[4]: Освещение в 2D игре
    От: Рома Мик Россия http://romamik.com
    Дата: 01.02.06 16:17
    Оценка:
    Здравствуйте, casual, Вы писали:

    C>otvet pryamo v tochku — vse v spraity

    А прочитать топик!!!???
    ... << RSDN@Home 1.2.0 alpha rev. 622>>
    Re[5]: Освещение в 2D игре
    От: casual  
    Дата: 02.02.06 09:26
    Оценка: -1
    Здравствуйте, Рома Мик, Вы писали:

    РМ>Здравствуйте, casual, Вы писали:


    C>>otvet pryamo v tochku — vse v spraity

    РМ>А прочитать топик!!!???

    nu chital i chto tam takogo nu tkni nosom
    Re[6]: Освещение в 2D игре
    От: Сергей  
    Дата: 02.02.06 09:51
    Оценка:
    Здравствуйте, casual, Вы писали:

    [...]

    C>nu chital i chto tam takogo nu tkni nosom


    Мдя.
    Спрайты 128x128x32, 50 углов поворота (а то и больше, спрайты-то большие). Итого 3 метра на один кадр анимации спрайта. Не катит.
    Re[7]: Освещение в 2D игре
    От: casual  
    Дата: 02.02.06 13:24
    Оценка:
    Здравствуйте, Сергей, Вы писали:

    С>Здравствуйте, casual, Вы писали:


    С>[...]


    C>>nu chital i chto tam takogo nu tkni nosom


    С>Мдя.

    С>Спрайты 128x128x32, 50 углов поворота (а то и больше, спрайты-то большие). Итого 3 метра на один кадр анимации спрайта. Не катит.

    Rech na skolko ya ponyal o 2D a v 2D eto znacit sprity.
    Re[4]: Освещение в 2D игре
    От: Рома Мик Россия http://romamik.com
    Дата: 05.02.06 14:52
    Оценка: 48 (6)
    Здравствуйте, Alexey Chen, Вы писали:

    AC>Ты только о результатах написать не забудь. Желательно с шотами. Жутко интересно что получится.

    http://rsdn.ru/File/5663/light_demo.zip
    Стрелки влево-вправо — крутить корабль
    Вверх-вниз — крутить свет
    ... << RSDN@Home 1.2.0 alpha rev. 622>>
    Re[5]: Освещение в 2D игре
    От: WolfHound  
    Дата: 05.02.06 14:59
    Оценка:
    Здравствуйте, Рома Мик, Вы писали:

    AC>>Ты только о результатах написать не забудь. Желательно с шотами. Жутко интересно что получится.

    РМ>http://rsdn.ru/File/5663/light_demo.zip
    РМ>Стрелки влево-вправо — крутить корабль
    РМ>Вверх-вниз — крутить свет
    Здорово получилось
    ... << RSDN@Home 1.1.4 beta 6a rev. 436>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.