HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Xash3D (https://hlfx.ru/forum/forumdisplay.php?forumid=14)
-- Реюзабельность текстур в играх (https://hlfx.ru/forum/showthread.php?threadid=4870)
Отправлено Дядя Миша 13-10-2016 в 09:14:
Реюзабельность текстур в играх
Противники подхода "каждая модель содержит встроенные текстуры" упирают на то, что эти текстуры потенциально могут быть использованы вообще где угодно, а не только в этой модели. И в качестве реального примера приводят руки игрока от первого лица, где действительно используется одна и та же текстура, а когда я их спрашиваю: "а еще примеров можно?", начинают нести какой-то трэш в стиле "а вот я щас возьму текстуру кирпичей и натяну её на персонажа". Ну то есть всегда приводится один и тот же пример. Немного подумав и поанализировав я пришёл к выводу, что в той же параное, например, есть еще одно место, где действительно одна и та же текстура используется повторно - это трубы.
Но с системой скейла по трём осям надобность иметь одинаковые модельки, вытянутые в длину или наоборот сплющенные. полностью отпадает.
Зато исчезает необходимость искать эти чортовы текстуры по разным папкам, если вы захотели с кем-нибудь поделиться своей моделькой.
Причём текстуры отдельно от модели кладут по идее в сорсе, ну возможно в сталкере, т.е. в готовой игре. А в тех же клонах ку3 и д3 предпочитают держать текстуры одной модели в той же папке что и сама модель, прописывая пути из другой модели в шейдере. Этот подход еще смешнее на самом деле - вот мы удалили папку с моделью и по всей игре исчезли текстуры, которые использовали другие модели, зачем-то залезая в чужую папку.
Вообщем эта тема - ваш последний шанс пофлудить и порассуждать об шареных текстурах на моделях. Моё мнение прежнее - ничего кроме путаницы этот подход не приносит.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено XaeroX 13-10-2016 в 09:25:
Да что тут рассуждать? Вот если бы товарищ Скрама был жив, ну или по меньшей мере посещал наш форум, то рассказал бы, что в своих проп-моделях регулярно использовал обычные текстуры уровней. Да, собственно, и модели он делал в редакторе уровней, экспортируя потом в ase. Поэтому в волатиле сохранился этот подход, и текстуры с моделями разделены на самом верхнем уровне - модели в папке models (и подпапках), текстуры в папке textures (и подпапках). Модель в итоге может брать абсолютно любые текстуры, какие ей заблагорассудятся - хоть текстуры спецэффектов, чтобы потом deformvertex-autospritом рисовать полноценные glow-спрайты, не тратя ни одного эдикта (что безусловно должно порадовать нашего иксвайдера, например).
Я соглашусь с тем, что в ку3 и д3 подход идиотский (хотя ещё больший идиотизм - удалять какие-то модели из игры и ожидать, что она будет правильно работать). Равно как и в халфе, где приходится копировать одну и ту же текстуру в разные модели - если это какая-нибудь glue-текстура, т.е. используемая для закраски малозначимых мест на развёртке. А вот в волатиле - подход самый грамотный и удобный, на мой взгляд.
Не удивлюсь, если Дядя Миша в итоге заберёт его себе в ксаш. 
__________________
Отправлено Дядя Миша 13-10-2016 в 09:51:
Что-то мне подсказывает, что если на модельки пропсов подходят текстуры с планарных фейсов, то это в конечном итоге означает крайне низкую детализацию этих самых пропсов, ну примерно как и в самой Q3. Другой, напрашивающийся очевидный вывод - это низкодетализированные пропсы можно сделать брашами и обратить их в func_detail.
Добавлено 13-10-2016 в 12:51:
В ку3 был пропс скелетика. Ни разу не видел, чтобы его текстуру юзали где-то еще, кроме собственно, одной модельки. Потому что как только модель набирает достаточное число полигонов, текстура автоматически становится уникальной и не реюзабельной.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено mittorn 13-10-2016 в 09:59:
Дядя Миша
Если идёт речь о ксаше - то func_detail - плохой выход
Отправлено XaeroX 13-10-2016 в 10:21:
Цитата:
Дядя Миша писал:
Потому что как только модель набирает достаточное число полигонов, текстура автоматически становится уникальной и не реюзабельной.
Совершенно бездоказательное утверждение, взятое с потолка. Сразу видно человека, который ни разу не сделал ни одного пропа сложнее коробки (да и за последнюю не уверен).
Если ты делаешь проп, который ставится строго в определённое место на уровне, то тебе, вполне вероятно, придётся "подружить" его с прилегающими брашами или другими пропами. И тут почти наверное понадобятся их текстуры. Будешь делать копии?__________________
Отправлено ~ X ~ 13-10-2016 в 10:24:
Этот вопрос я поднимал на хлру лет эдак 10 назад... или больше.
Шаред-текстуры/анимации/прочие ресурсы - нужны и быть должны. Вопрос только в наследовании. Идиотизмов морра/обливона/скурима нам не надо.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Отправлено XaeroX 13-10-2016 в 10:24:
Цитата:
Дядя Миша писал:
В ку3 был пропс скелетика. Ни разу не видел, чтобы его текстуру юзали где-то еще, кроме собственно, одной модельки.
Обратите внимание, использован классический приём демагога: в ответ на посыл "существуют модели, где текстуры используются повторно" демагог сообщает о существовании модели, где текстуры повторно не используются, что изначально вовсе не оспаривалось.
Цитата:
Дядя Миша писал:
эта тема - ваш ... шанс пофлудить
У меня нет желания флудить и упражняться в демагогии, поэтому я, пожалуй, уйду из темы.__________________
Отправлено nemyax 13-10-2016 в 11:14:
Цитата:
XaeroX писал:
в волатиле сохранился этот подход, и текстуры с моделями разделены на самом верхнем уровне - модели в папке models (и подпапках), текстуры в папке textures (и подпапках)
Годно.
Отправлено Дядя Миша 13-10-2016 в 15:16:
Цитата:
XaeroX писал:
Совершенно бездоказательное утверждение, взятое с потолка.
То есть ты отвергаешь принципиальную разницу между планарными фейсами и трианглами в составе модели? На модели развертка обычно ложится и зачастую в диапазон 0-1. А на планарных фейсах репит-текстура.
Ясно же дело, что репит-текстуру куда как легче заменять на любую другую, чем то, что тщятельно наложено на каждый треугольничег и подогнано. Исключение составляют только примитивные пропсы, в форме змеипараллелепипеда. Пока писал, вспомнил, что в той же параное есть такие прикладки из моделек, которые прикладываются навроде плинтуса между стенкой и полом. Ну это вроде как небольшие насыпи из мусора, сами понимаете. И всё равно там своя отдельная текстура.
Так что мой вывод таков - если в игру можно вкомпиливать модельки, навроде как обычные браши (а в ку3 можно), то разумеется шареные текстуры полезны. Но если же нельзя, то их следует делать брашами и обращать в функ_детайл и следовательно щареные текстуры смысла не имеют. Иными словами нельзя об этом спорить не имея в виду конкретный движок. Пожалуй так будет правильно.
Цитата:
XaeroX писал:
ни разу не сделал ни одного пропа сложнее коробки (да и за последнюю не уверен).
Мой подвиг заключается в том, что я портировал редемир из UT99 в ксашмод. Это умственное упражнение навсегда отбило у меня охоту моделить.
Добавлено 13-10-2016 в 18:16:
Цитата:
mittorn писал:
func_detail - плохой выход
почему?__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено ~ X ~ 13-10-2016 в 15:18:
Цитата:
Дядя Миша писал:
почему?
vis + rad миллионы часов__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Отправлено Дядя Миша 13-10-2016 в 15:27:
~ X ~ а то есть, наложить на вкомпиленную в карту модельку лайтмапу - не тоже самое?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено ILZM 13-10-2016 в 16:11:
Ну прям как в сорсе - в папке materials лежит файлик, описывающий текстуру, и сама текстура. В папке models у модели стоит путь до текстуры. В некоторых рескинах под ксс кидают новую текстуру в материалы, а потом хексом в модели изменяют под новый путь до этого материала.
В параное память тратится на текстуры. А что если у некоторых моделей одинаковые бамп или какие-нибудь нейтральные общие текстуры? Они же ведь движком не различаются и он их всех запихает
Отправлено Дядя Миша 13-10-2016 в 16:26:
Цитата:
ILZM писал:
А что если у некоторых моделей одинаковые бамп или какие-нибудь нейтральные общие текстуры?
Цитата:
Представьте себе, что вдруг потребуется немедленная и одновременная
уплата всех долгов в мире! - воскликнул он слабеньким, но преисполненным
ужаса голосом. - Что тогда будет при существующем порядке вещей?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено KiQ 13-10-2016 в 16:33:
Я лично сделал так - текстуры в папке с игрой могут дублироваться, но при загрузке они кэшируются, соответственно в памяти остается только один экземпляр. Пока что проверка чисто по пути, то есть в кэш как ключ записывается полный путь до текстуры. Но теоретически можно сделать сравнение raw массива и тогда полностью исключить совпадение текстур в памяти. Правда какое время оно будет грузится...
__________________
-Brain is dead-
Отправлено ncuxonaT 13-10-2016 в 16:38:
Встроенные текстуры - лишнее неудобство при разработке. Сидишь собираешь-разбираешь модели.
Всё для того, чтобы делиться моделями? Не слишком ли редкий кейс?
Отправлено Дядя Миша 13-10-2016 в 16:43:
Цитата:
KiQ писал:
Но теоретически можно сделать сравнение raw массива
Пока грузишь - рассчитай MD5 
А еще лутьшы - запиши прямо в текстуру.
Цитата:
ncuxonaT писал:
Сидишь собираешь-разбираешь модели.
Так они в любом случае снаружи хранятся, те, которые полноцветные.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено KiQ 13-10-2016 в 16:59:
Кстати да, вот тут http://www.md5.cz например MD5 хэш выдается в том числе и в виде массива цветных пикселей. Ничего не мешает встроить его куда-нибудь в текстуру, а при загрузке в видеопамять просто игнорить
Добавлено 13-10-2016 в 19:59:
Ну или завести свой формат со специально отведенным блоком MD5
__________________
-Brain is dead-
Отправлено Дядя Миша 13-10-2016 в 17:55:
Да у тебя будет просто мусор первые 32 пикселя текстуры, ничего страшного в первокваке такое уже было 
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено thambs 13-10-2016 в 18:20:
Цитата:
Дядя Миша писал:
почему?
Щели, тайнифэйсы, дикие разбиения и прочая мерзость BSP-архитектуры же.__________________
http://www.moddb.com/mods/monorail-quest
Отправлено ncuxonaT 13-10-2016 в 18:55:
Цитата:
Дядя Миша писал:
Так они в любом случае снаружи хранятся, те, которые полноцветные.
Ну так зачем тогда плодить сущности. Там текстуры, тут текстуры, эти собери, те положи.
В идеале всем текстурам лежать бы в одной папке, всем моделям - в другой. Без подпапок. Для удобства навигации давать файлам осмысленные префиксы.
Отправлено KiQ 13-10-2016 в 19:09:
Цитата:
Дядя Миша писал:
Да у тебя будет просто мусор первые 32 пикселя текстуры, ничего страшного в первокваке такое уже было
там разве не поллитра была?__________________
-Brain is dead-
Отправлено Дядя Миша 13-10-2016 в 19:13:
ncuxonaT лучше плодить сущности чем ломать совместимоть. ну потом поймешь.
Цитата:
KiQ писал:
там разве не поллитра была?
там была какая-то текстура патронов и вот у ей первые 32 пикселя были белыми. Ну художник накосячил. ЧСХ под софтварным рендерером было незаметно.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено nemyax 13-10-2016 в 19:28:
Цитата:
Дядя Миша писал:
лучше плодить сущности чем ломать совместимоть
Ты сейчас про совместимость чего с чем?
Отправлено Дядя Миша 13-10-2016 в 21:29:
Я тут Urho3D скачал. Так там знаете, каждый материал в отдельной папке.
Ну то есть папка допустим Sand. И там три текстуры
Albedo.jpg, Normal.jpg, Properties.jpg. Заходиш в другую папку - там другие текстуры, с такими же именами. Правда здорово? Захочешь переместить текстурки и перезапишешь случайно.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено ILZM 14-10-2016 в 09:24:
Цитата:
Дядя Миша писал:
Я тут Urho3D скачал. Так там знаете, каждый материал в отдельной папке.
Ну то есть папка допустим Sand. И там три текстуры
Albedo.jpg, Normal.jpg, Properties.jpg. Заходиш в другую папку - там другие текстуры, с такими же именами. Правда здорово? Захочешь переместить текстурки и перезапишешь случайно.
Это все авторский индивидуализм. Он их мог назвать sand_normal.lul или sand_diffuse.lul. В сорсе точно такая же структура, но ведь никто не жалуется. Это достаточно просто, даже я после гс быстренько сориентировался.
Если будет способ определения дубликаций, то норм. По факту:
1. В каждой третей модели хл есть маленькая 64 на 64 текстура хрома.
2. Очень много повторяющихся текстур рук, потому что они разбиты и не на одной uv карте
Если это не проблема для количества нужной памяти, то да, будет прикольненько
ПРЕДЛОЖЕНИЕ: Кстати, многие боятся повторения текстур, когда сами используют тот же меш для рук множество раз(лалки). В халфе, грубо говоря, 20 пушек. Везде в этих моделях одинаковые руки с текстурами. Т. е. в каждой модели дописывается при компиляции референс рук. Почему бы этот референс рук не удалить из конечной модели? А в игре к пушке прикреплять отдельную модель рук. Так и текстуры экономятся, и размер самой модели.
Если будет твой способ, то пусть ети мододелы в принудительном порядке удалят все меши рук с их оружий, и создадут отдельную модель. А чтобы в код не лезть, можно добавить параметр $ATTACH_MODEL PUT/RUKI.mdl. С таким способом открываются многие пути для экономия памяти.
ПРЕДЛОЖЕНИЕ: В Параное у многих персонажей одинаковые анимации. А что если в конечной модели персонажей не удалить повторяющиеся анимации? Запихиваем эти анимации в отдельную модель и пишем в qc персонажа $ATTACH_ANIMATION PUT/ANIMACII.ani.
ПРОБЛЕМА:
1. Так как в гсе удаляются все кости без прикрепленных к ним вершин, то надо убрать эту фичу. А то как создать модель без меша и только с анимами. Чтобы определять что за тип модели это, добавляем ANI расширение. MDL - есть вершины с анимациями. ANI - нет вершин, только анимации.
2. С прикреплением анимаций возникает проблема определения нужной анимации. В коде используются индексы для нужной анимации. А что если обращаться к нужной анимации на сервере по уникальному имени, а не номеру анимации в модели?
В общем, в конце концов я за Дядь Мишу, но только если он добавит $attach_model *.mdl и $attach_animation *.ani, ну и пару тех фич
Отправлено Chyvachok 14-10-2016 в 10:21:
Цитата:
ILZM писал:
В халфе, грубо говоря, 20 пушек. Везде в этих моделях одинаковые руки с текстурами. Т. е. в каждой модели дописывается при компиляции референс рук.
Ну в халве еще проблема в том что руки разные с разной разверткой и мешами, и плюс скелет рук не всегда одинаковый, то есть если с другого оружия загрузить анимацию на руку есть шанс что рука будет жутко вывернута, тут для начала нужно еще будет переанимировать оружие чтобы руки имели одинаковый скелет и могли использовать анимации от всего оружия. Совмещение моделей уже сделано для моделей игрока и _p моделей оружия.
Цитата:
ILZM писал:
1. Так как в гсе удаляются все кости без прикрепленных к ним вершин, то надо убрать эту фичу. А то как создать модель без меша и только с анимами. Чтобы определять что за тип модели это, добавляем ANI расширение. MDL - есть вершины с анимациями. ANI - нет вершин, только анимации.
Это уже компилятор удаляет, а не сам двиг, я думаю что достаточно студиомдл команду сделать, что кости не трогает.
Добавлено 14-10-2016 в 12:21:
Насчет дублирования текстур тех же рук, можно как в сорсе сделать чтобы при компиляции можно было указать папку где лежат текстуры.
Отправлено nemyax 14-10-2016 в 10:47:
Цитата:
ILZM писал:
Чтобы определять что за тип модели это, добавляем ANI расширение. MDL - есть вершины с анимациями. ANI - нет вершин, только анимации.
Я убеждён, что анимации должны быть отдельными файлами (ну или записями в "базе"), содержащими только иерархию и последовательности трансформаций костей.
Отправлено Paopapel 14-10-2016 в 11:51:
Добавить настроек для этих команд или новую с расширенными функциями.
$sequencegroupsize
$externaltextures
Отправлено KiQ 14-10-2016 в 13:28:
Вообще, мне кажется, что _t.mdl файлы и были изначально, чтобы шарить текстуры. Друого применения я им не вижу.
__________________
-Brain is dead-
Отправлено XaeroX 14-10-2016 в 13:29:
Цитата:
KiQ писал:
Друого применения я им не вижу.
Включи фантазию. 
Я дам на водку: mdl-файлы грузятся не только на клиенте (для отрисовки), но и на сервере (для трассировки).__________________
Отправлено Дядя Миша 14-10-2016 в 15:14:
XaeroX от, сам сказал покинул тему, а сам нет-нет, да и заглядываешь.
Значит тебе тоже интересно, несмотря на твердо принятое решение.
Я ведь и от вадов не планирую отказываться, смысл?
Я вообще так товарищам и говорю, если не будет вадов и хотя бы минимальной совместимости с халфой, то у нас получится очередной генерик энджин, которыми забит весь инет. Но вы почему-то на эти самые движки переходить не хотите, а ждёте от меня, чтобы я сделал еще один точто такой же. Ну и где в этом логика, я вас спрашиваю?
Ну и юзайте свой любимый Ухо3Д или леадверкс какой-нибудь, кто ж вам не дает или что?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено ILZM 14-10-2016 в 15:29:
Дядя Миша какие мысли насчет предложенной идеи? Кроме первой ассоциации слова "донат" лул
Отправлено Crystallize 14-10-2016 в 15:46:
Цитата:
Дядя Миша писал:
Ну и юзайте свой любимый Ухо3Д или леадверкс какой-нибудь, кто ж вам не дает или что?
А под них можно мапать чисто брашами, без пропов и 3D Max? Радиосити-лайтмапы там есть?
Отправлено nemyax 14-10-2016 в 17:58:
Цитата:
Дядя Миша писал:
хотя бы минимальной совместимости с халфой
Так ты объясни раз и до смены концепции навсегда, в каких границах должна быть эта совместимость. Не бинарная же совместимость с файлами ресурсов тебе нужна? На уровне исходников, надо думать.
Отправлено Дядя Миша 14-10-2016 в 19:20:
Цитата:
nemyax писал:
Не бинарная же совместимость с файлами ресурсов тебе нужна?
ну формат моделек, спрайтов и вадов я пока что ломать не планирую.
Изломаю и что будет показывать джек, а?
Только не надо мне рассказывать, напиши свой джек, напиши свои утилиты, свою среду, вообще всё своё напиши. Даже если на минутку представить, что я это сделаю - ну вон же полно движков, где всё своё. Но вы их отчего-то не юзаете, плюетесь. Т.е. когда я допустим всё это сделаю, вы наплюнете и на мой движок тоже. Потому что в этом увлекательном процессе что-то такое исчезнет навсегда. В этом и заключаетеся великий парадокс пользователя. С одной стороны вы хотите "отвязаться от проклятой халфы", с другой напрочь игнорируете движки, где о ней ничего не напоминает.
Потому что нипривычнааа, нипанятнааа, ниудобнаа. И бутерброд.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено nemyax 14-10-2016 в 19:34:
Цитата:
Дядя Миша писал:
С одной стороны вы хотите "отвязаться от проклятой халфы", с другой напрочь игнорируете движки, где о ней ничего не напоминает.
Не полностью же отвязаться, а в особо давящих местах. Беда в том, что у каждого представление о таких местах сугубо индивидуальное =)
Приведу пример, который, я знаю, тебе очень понравится. Линукс не стремился сделаться "настоящей" трутвёрдыйзнак юникс-системой, но некоторое юниксоподобие сохранил, а на остальное юниксовое наследие накакал. Где теперь те истинные юниксы, и где линукс.
Отправлено Дядя Миша 14-10-2016 в 20:11:
Цитата:
nemyax писал:
Не полностью же отвязаться, а в особо давящих местах
перечисли особо давящие места. Я лично одно место знаю - ограничение на путь к файлу (любому) в 56 символов. Вот от этого гамна в халфе хочется на стенку лезть просто.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено nemyax 14-10-2016 в 20:22:
Цитата:
Дядя Миша писал:
перечисли особо давящие места
Мне кругозора хватает тока на развесовку и на разный шейдинг мешей и брашей (ну и что нельзя всё наколбасить модельками).
Отправлено Дядя Миша 14-10-2016 в 21:35:
nemyax ну шейдинг разный, это как раз таки вообще не проблема и к совместимости отношения не имеет. Но ты же всё равно на ксашы делать не будешь ничего, так какая разница?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено nemyax 14-10-2016 в 21:42:
Цитата:
Дядя Миша писал:
ты же всё равно на ксашы делать не будешь ничего
Неправда, как минимум босса хипнотика доделаю =)
И остальных монстров хотелось бы потихоньку обновить.