crypt of decay - November 25th, 2013 [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

November 25th, 2013

а вот так могла бы выглядеть техдема Threat со светом [Nov. 25th, 2013|09:50 am]
ну, совсем техдема, да. так, накидал, выколупав движок освещения из D2D:VCD.



Link1 meow|meow!

если вдруг кому интересно, как там в Threat свет сделан [Nov. 25th, 2013|10:39 am]
угу, это динамический свет, с обсечением по препятствиям любой формы. чистый пиксель-пидарасинг, никаких векторов.

собственно, алгоритм простой, как поленом по яйцам: трассируем лучи из центра, пока не наткнёмся на стену или расстояние не станет слишком большим, строим из точек касания полигон. потом тупо этот полигон заливаем, уменьшая прозрачность в зависимости от расстояния до центра.

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

в принципе, немного «артефачит», но в action game как-то не до этого. да и не заметно почти. если разрешение 320x400 бампнуть, то и ещё меньше заметно будет.

ах, да: лайтмап живёт отдельно от картинки экрана. при выводе лайтмап накладывается на картинку. единственная хитрость тут — использовать premultiplied alpha, иначе цветное освещение косячит (да-да, оно там цветное, хоть на скриншотах этого нихуя и нет).

к сожалению, полутени по краям так сделать проблематично, поэтому обсечениесвета резкое, как понос: тут светло, там чернота. но для игрушки стиля gauntlet оно даже как-то прикольней так.

а. ещё вокруг игрока подсвечиваются непроходимые пиксели, чтобы было видно ближайшие стены. таким образом можно ориентироваться, смотреть на дизайнерские надписи «хуй» в тайлах и заодно не показывать сразу весь уровень, потому что так неинтересно. непроходимые пиксели — просто альфа-маской, без трэйсера.

а ещё я нихуя не придумал, как сделать нормальный collision detector для битмапового уровня, поэтому делаю тупо: создаю bounding ellipse и считаю, сколько непроходимых пикселей внутрь него попало. если больше некоторого количества — то застряли (в игре есть дурацкие тайлы с парой торчащих посредине непроходимых пикселей, поэтому threshold).

стены бывают ещё и косые/закруглённые, утыкаться в них неинтересно, поэтому сделал скольжение вдоль стены. дуболом может ходить в восьми направлениях; если вдруг прямо у него не получается, движок тупо пытается подвигать дуболома по сторонам. если получается — заебись. если нет — застрял нахуй. натурально, двигаем «влево-вправо» относительно того, куда смотрит ебальник дуболома.

максимум двигалки — один пиксель (если надо на пять пикселей вперёд — шагаем по одному пикселю пять раз), поэтому дуболом всё равно периодически застревает в хитровыебаных кривых стенах. но это не критично, его можно чутка повернуть, и он ломанётся дальше. и это в любом случае лучше, чем если бы дуболом всегда тупо утыкался в стену и медитировал на неё.
Link6 meows|meow!

про композитор [Nov. 25th, 2013|11:47 am]
патчик работает, кстати: после применения комптон ни разу не наебнулся. то есть, со времени поста с патчем оно так и не падало. а автор комптона по-прежнему сосёт. впрочем, если уж гугель сосёт, то и этому можно.
Linkmeow!

шота у меня запал того-с... [Nov. 25th, 2013|07:10 pm]
короче, искусственное поддержание себя в энергичном состоянии съело последних энергий, гыг. всё на холд пока: я там досовых игрушек накачал. ужасно хочу поиграть в римейк diskman (который из fcc же), но не хочу его делать.

ну, или я просто хуёво сплю, гыг.

заботьтесь о себе, бухайте вовремя. а то трезвым вокруг смотреть неприятно.
Link4 meows|meow!

navigation
[ viewing | November 25th, 2013 ]
[ go | Previous Day|Next Day ]