При хостинг поддержке Интернет-сообщества VBIOS CS-Mapping.com.ua
Вернуться   CS-Mapping.com.ua > Forum > Картостроение > Туториалы
Ник
Пароль
Регистрация Правила форума FAQ Пользователи Администрация Календарь Поиск За 24 часа Пометить все разделы прочитанными

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.10.2013, 20:05  #1
Yo Den
Yo Den
Лейтенант
Регистрация: 02.10.2013
Адрес: Масквабад
Возраст: 24
Сообщения: 747
Замечания: 1


Ok Загадка размера юнита. Реалмаппинг

Небольшое такое исследование.

Введение. Зачем это нужно

Каждый маппер Half-Life (ну или там Counter-Strike, не суть), хоть раз пытавшийся сделать реалистичную карту или воссоздать средствами маппинга какое-либо реальное место, будь то своя школа, универ или дом, сталкивался с вопросом размерности этого самого места в игре.
Нигде ведь не указано, чему в «Халве» равна минимальная единица измерения расстояния - юнит. Как же делать правдивую карту, не зная, какого масштаба она должна рисоваться на клеточном поле Хаммера?
Конечно, можно начать лепить её «на глаз», но что это за реалмаппинг, когда «замаппеные» помещения и парты любимой/нелюбимой школы такие большие, что начинаешь думать, что персонаж, которым ты играешь, до школы то ещё и не дорос? Или, когда дверные проёмы своей квартиры такие маленькие, что в них приходится протискиваться, будто ты играешь каким-то Ёкодзуна c монтировкой или АК в руке?
Вся прелесть реалмаппинга состоит, как ни странно, именно в реализме: карта, имеющая, к примеру, правильное соотношение сторон, но неправильный масштаб не будет тру! Кто-то, отмахнувшись рукой, скажет, что всё это ерунда, реалмаппинг убивает геймплей, а Халва не правильно отражает масштабы, и продолжит клеить карту, запустив которую, задаёшься вопросом, "а не Ратс ли это, случаем?". Вообще говоря, геймплей убивает плохая фантазия автора. Но, в конце концов, выбор за тобой, дорогой читатель.
Итак, чему же всё-таки равен юнит?)

Пример реалмаппинга комнаты:

Обманчивый взгляд

Для начала, нужно решить, от чего же мы отталкиваемся, когда говорим, что карта имеет неверный масштаб. Конечно же, от себя самих. Правда, вид камеры от первого лица слишком неоднозначен в вопросе оценивая размерности игрового мира (восприятие меняется в зависимости от соотношения сторон дисплея, его диагонали, да и редактирование значения fov никто не отменял), поэтому мир следует оценивать по размеру NPC или мультиплеерных игроков/ботов относительно его самого. Ну это, в принципе, и ежу понятно)

Логика отцов

Учитывая, что юниты впервые применились в игре Quake от ID Software, и играем мы в ней от лица человека, то посмотрим, чему же там равен рост этого самого человека. Открываем раритетный Worldcraft 1.6, скаченный с какого-то забугорного квейковского фан-сайта, настраиваем на Quake, добавляем info_player_start, и, оп, 56h.
Можно предположить что, учитывая, что разработчики живут в США, то и размер юнита должен, скорее всего, приравниваться к какой-нибудь стандартной единице измерения в этой стране. Возьмём дюйм (2.54 см), как объективно самый близкий. 56 ю х 2,54 см = 142,24 см, н-да... низковат солдат, особенно для мужественного героя-пехотинца. Где же логика? К слову, высота энтити врагов-солдат равна 64 юнитам, но в игре они имеют тот же рост, что и главный герой - 56 юнитов, да и выглядят также.
И тут мне стало интересно, чему же равен рост игрока в другом проекте «Айди», созданным до Quake - Doom. Казалось бы, движок Дума даже не до конца 3D, что здесь может быть общего? Но смотрим http://ru.wikipedia.org/wiki/Doom_e....B3.D1.80.D0.B0 … и, бац, 56 текселей, авезоме! Для справки, «думовский» тексель равен одному пикселю спрайта персонажа. Кстати, высота человека в Quake 2 тоже равна 56 (юнитам), т.е. «Айдишники», по крайней мере, изначально, придерживались общих стандартов при смене движка, что, конечно, логично, ведь так привычнее и удобнее, да и смысла менять размеры не было, ведь игры того времени были достаточно схематичны.

Рост игрока в исходниках Wolfenstein 3D:

Не останавливаясь, копнём ещё глубже, и вспомним, что в продолжении Doom - Doom 2: Hell on Earth, есть секретные уровни из ещё более ранней игры ID - Wolfenstein 3D (Е1М1 и Е1М9). На этих картах используются и оригинальные NPC из "Волфенштейна" - офицеры СС, и в игре они имеют тот же рост, что и враги-солдаты в Думе, т.е. масштаб в играх, в общем-то, одинаковый.
Заглянув в историю, можно заметить, что в Фашистской Германии для офицеров был обязателен высокий рост, простые же солдаты обычно были поменьше ростом. В оригинальном Wolfenstein 3D есть эти самые простые солдаты и их рост как раз заведомо ниже, и составляет он 48 текселей. Но почему же такие нелогичные числа, спросите вы, ведь куда логичнее было бы использовать, например 64 или, допустим, 32? Так и есть, размер спрайтов в "Вольфе" и равен 64 х 64 пикселя, в независимости от того, какого размера изображён персонаж и как много использовано маски альфа-канала прозрачности. В Doom же просто перенесли те же масштабы персонажей, и получилось, что рост людей там равен 56. Всё просто.
Но вернёмся к немцам, чему же равен рост солдат в игре в пересчёте на реальные, неигровые единицы измерения? Не факт, конечно, что ID, рисуя малопиксельных офицера и солдата, приравнивали их к каким-то определённым пропорциям людей. Но если оставить эту мысль, то можно вдруг обнаружить интересную вещь - если предположить, что 56 пиксельный офицер имеет рост 70 дюймов, а 48 пиксельный солдат, соответственно, 60 дюймов, обнаруживаем, что в 1 пикселе 1,25 дюйма (70:56 = 1,25; 60:48 = 1,25), т.е. 3,175 см! Везде числа ровные и удобные для подсчёта, да и с ростом всё неплохо сходится: 152,4 см для солдата (не стоит забывать, что они специально сделаны низкого, неказистого роста, да и некая мультяшность и стереотипность даёт о себе знать), и 177,8 см для офицера (рост Гиммлера был 174 см, Геринга 180 см). Совпадение ли? Да и 70 дюймов довольно подходящий рост для коренастого Doomguy'а.

Думгай, главный герой Doom:

Поворот вентиля

С играми от ID разобрались, но что же с Вэлв? Каждый уважающий себя маппер "под халву" знает, что рост игрока в ней составляет 72 юнита. И эта разница начисто убивает «айдишное» понятие юнита. Значение юнита в 1,25 дюйма для Valve, в отличие от ID, было чуждым, да и бессмысленным, поэтому для удобства при разработке Half-Life «Вентили» могли повернуть его в сторону уменьшения, т.е. прировнять 1 юнит к 1 дюйму (правда, уменьшив при этом обзор). Что, скорее всего и сделали. Здесь я согласен с автором статьи «Размеренные размеры», Yarko.
К тому же, если посмотреть на пропорции человека в Квейке, то можно заметить, что он слегка приплюснут, в Халве же Фримен наоборот изображён довольно рослым человеком, поэтому отказ от «кваковских» пропорций не случаен.

Рост человека в разных играх:

Но возникает вопрос, почему именно 72, а не, например, 70? Да потому что 72 дюйма это ровно 6 футов, то есть, также как и в случае с «Вольфенштейном», рост человека сделали ровным в футах.
Итак, получается, что рост Фримена - чуть меньше 182,9 см (отсюда нужно вычесть высоту подошвы обуви), если посмотреть на официальные пикчи, всё, в общем-то, сходится.

Применение

Хотим мы, сделать, допустим, карту своей квартиры, напичкав её кровожадными хедкрабами и зомби. Берём, не ленимся и измеряем стены комнаты, получаем, к примеру, что длина стены равна 2,5 м, т.е. 250 см. 250 : 2,54 = 98 юнитов (хоть в первой, хоть во второй «халве», размерность в них одинаковая). Делаем браш с соответствующей длиной и т.д. Всё это, в общем-то, вам подскажет всемогущий Кэп, да вы и сами всё знаете.
Далее, таким образом делаем-делаем, компилируем, и внезапно обнаруживаем, что игрок с трудом перемещается по пространству, не вмещается в дверной проём и т.п. Не стоит отчаиваться, потому то тут нам на помощь приходит один полезный параметр компиляции «hullfile» (поддерживается в компиляторах ZHLT и производных от них, таких как, например, VHLT), который позволяет изменить физические пропорции игрока. Мерили, значит, считали и строили под размер модели игрока, а теперь ещё зачем-то меняем его пропорции, где логика? – Спросите вы. А логика тут проста: в Half-Life бокс игрока имеет следующие размеры: 16 х 16 х 72 (ширина х длина х высота, в юнитах), и при такой его высоте, показатели длины и ширины, всё-таки немного завышены при маппинге узких помещений.
Как пользоваться командой «Хуллфайл»:
1) Создаём текстовый документ, для примера назовём его hulls.txt
2) Состоять он должен из трёх строк вида «ширина от центра игрока, длина от центра игрока, высота игрока» (без кавычек), первая строка – размер игрока в положении стоя; вторая – размер большого хитбокса (для монстров, пушаблей); третья – размер игрока в положении сидя.
Параметры по умолчанию:
16 16 72
64 64 64
16 16 36

По ним видно, что ширина и длина игрока равна 32 (16 + 16), нам же нужно, чтобы было, к примеру, 28, поэтому во всех строчках все числа 16 меняем на 14.

Пример изменения размера hull игрока:

3) Прописываем в параметрах hlcsg «-hullfile hulls.txt». Компилируем и наслаждаемся.

Послесловие

В случае если изображение в игре вам кажется мелковатым, можно поиграться с консольной переменной default_fov. По умолчанию она равна 90, попробуйте приблизить взгляд, сделав, её равной, например, 80 или 85.
И да, если вы делаете свой собственный супер-мод, то можно чуть поэкспериментировать и прировнять рост игрока к другим показателям, например, к своему собственному росту, тем самым получив новый размер юнита и не только… Но об этом позже)
[ Миниатюры ]
wolf size player.png Просмотров: 1699 Размер:  22.3 Кбайт  DoomGuy.png Просмотров: 2223 Размер:  32.9 Кбайт  sizes.png Просмотров: 2066 Размер:  15.3 Кбайт  hulls.PNG Просмотров: 1754 Размер:  3.0 Кбайт  myflat.PNG Просмотров: 2001 Размер:  463.3 Кбайт  

Последний раз редактировалось Yo Den, 10.04.2017 в 13:28.
Yo Den вне форума Ответить с цитированием
Старый 04.10.2013, 20:33  #2
Ренфилд
Ренфилд
renf1ld
Регистрация: 06.04.2007
Адрес: Россия Москва
Возраст: 29
Сообщения: 8,951
Замечания: 1


По умолчанию

Интересненько. Действительно при реал-маппинге, начинает казатся, что игрок слишком крупный и здоровый, по сравнению с окружающим пространством. Надо поиграться с этими hulls-показателями, ни когда не пробовал.
Еще бы я посоветовал бы, для модов стремящихся к реализму, понижать скорость хотьбы и высоту прыжка у Гордана. Слишком быстрая ходьба и высокий прыжок тоже как ни странно искажают реальное восприятие размера игрока и окружающего пространства.
Ренфилд вне форума Ответить с цитированием
Старый 04.10.2013, 20:47  #3
Yo Den
Yo Den
Лейтенант
Регистрация: 02.10.2013
Адрес: Масквабад
Возраст: 24
Сообщения: 747
Замечания: 1


По умолчанию

[ Цитата ] Сообщение от Ренфилд: Интересненько. Действительно при реал-маппинге, начинает казатся, что игрок слишком крупный и здоровый, по сравнению с окружающим пространством. Надо поиграться с этими hulls-показателями, ни когда не пробовал.
Еще бы я посоветовал бы, для модов стремящихся к реализму, понижать скорость хотьбы и высоту прыжка у Гордана. Слишком быстрая ходьба и высокий прыжок тоже как ни странно искажают реальное восприятие размера игрока и окружающего пространства.

не только с хулл, но и дефолт вьюфом, да и отображение v_моделей на экране возможно стоит делать меньшим... По поводу физики игрока, согласен, только при уменьшении скорости передвижения игрока, нужно будет ещё фиксить звук шагов
Yo Den вне форума Ответить с цитированием
Старый 04.10.2013, 20:49  #4
3AXBAT
3AXBAT
Нагибатор
Регистрация: 23.03.2005
Сообщения: 6,698
Замечания: 18


По умолчанию

Хорошая статья. А еще приглянулся скрин где реализовано зеркало на шкафу, советую сделать урок по этому моменту (если это конечно не копи паст комнаты )
3AXBAT вне форума Ответить с цитированием
Старый 04.10.2013, 20:51  #5
qpAHToMAS
qpAHToMAS
z3r0t0l3r4nc3
Регистрация: 22.10.2006
Адрес: Russian Far East
Возраст: 26
Сообщения: 8,812


По умолчанию

[ Цитата ] Сообщение от 3AXBAT: Хорошая статья. А еще приглянулся скрин где реализовано зеркало на шкафу, советую сделать урок по этому моменту (если это конечно не копи паст комнаты )
Это судя по всему Xash3D (правда клейма на скриншоте нет).
qpAHToMAS вне форума Ответить с цитированием
Старый 04.10.2013, 20:57  #6
Yo Den
Yo Den
Лейтенант
Регистрация: 02.10.2013
Адрес: Масквабад
Возраст: 24
Сообщения: 747
Замечания: 1


По умолчанию

Не, это не Xash3D, а немного "противоположный берег" - многострадальный trinity renderers)
Yo Den вне форума Ответить с цитированием
Старый 04.10.2013, 21:31  #7
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 11,920


По умолчанию

[ Цитата ] т.е. «Айдишники», по крайней мере, изначально, придерживались общих стандартов при смене движка
Вообще-то квейк писался прямо поверх дуума. А квейк2 - поверх первого. И всё остальное по такой же схеме. если немного покопаться в дууме - найдем тот самый квейковский AI и много чего еще.
Дядя Миша вне форума Ответить с цитированием
Старый 04.10.2013, 22:07  #8
Yo Den
Yo Den
Лейтенант
Регистрация: 02.10.2013
Адрес: Масквабад
Возраст: 24
Сообщения: 747
Замечания: 1


По умолчанию

[ Цитата ] Сообщение от Дядя Миша: Вообще-то квейк писался прямо поверх дуума. А квейк2 - поверх первого. И всё остальное по такой же схеме. если немного покопаться в дууме - найдем тот самый квейковский AI и много чего еще.

ясно, главное, что это не отменяет следствие о размерности)
Yo Den вне форума Ответить с цитированием
Старый 04.10.2013, 23:13  #9
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 11,920


По умолчанию

Не отменяет конечно. Кармак вообще-то всю жизнь писал именно движки, а не игры. Игра шла в нагрузку, как демонстрация возможностей. Именно поэтому у Id сюжет игр незамысловатый, незапоминающийся. Wolf - сбежали из тюрьмы, мочим фашистов. Doom - открыли портал в ад, полезла нечисть, идём мочить.
Quake - изобрели слипгейт, обратно полезла нечисть, идём мочить. Quake2 - воюем со строггами, идём мочить. Doom3 - опять открыли портал в ад, опять мочим. Ну немного разбавили диалогами, следуя тенденциям моды. Все эти игры объединяет одно - они не создают своего мира. Да, там встречаются харизматичные монстры, но они спокойно выдираются из контекста.
В таких условиях заморачиваться над высотой игрока попросту некому.
Дядя Миша вне форума Ответить с цитированием
Старый 16.10.2013, 23:57  #10
Manson
Manson
любитель кубизма
Регистрация: 18.12.2007
Адрес: Сумы
Возраст: 32
Сообщения: 4,915
Замечания: 11


По умолчанию

Спасибо Братюнь..это то, что сейчас мне и нужно, ставлю лойс...( без приколов )
Manson вне форума Ответить с цитированием
Старый 17.10.2013, 00:30  #11
Lamerog
Lamerog
Младший сержант
Регистрация: 04.08.2012
Адрес: Украина
Возраст: 21
Сообщения: 148
Замечания: 1


По умолчанию

Отличная статья! Вмемориз!
Lamerog вне форума Ответить с цитированием
Старый 17.10.2013, 10:15  #12
[POD]ILLbot0
[POD]ILLbot0
Главный бездельник
Регистрация: 04.12.2006
Сообщения: 2,025


По умолчанию

1. Я сделал модель в редакторе, импортировал в игру, а она стала больше в размерах. Почему?
Бывает, что 1 дюйм приравнивают к 2,5 см, а не к 2,54. То есть округляют для удобства счёта.
2. Я сделал дверь на карте 2 метра высотой, сделал ручку на высоте 1 метр. Но в КС кажется, что она на уровне груди игрока. Почему?
Камера ("вид из глаз") в КС в модели расположена не на уровне глаз, а на уровне шеи.
3. Я сделал дверь на карте шириной 40 юнитов (1 метр), но при игре создаётся ощущение, что она "узкая", в неё трудно "вписаться" при движении. Особенно если она оказывается не перед тобой, а сбоку. Почему?
Не забываем, что по умалчанию в КС (да и во многих других играх) игрок бежит, а не идёт. Попробуйте у себя дома быстро пробежать из своей комнаты, например, на кухню. Что, цепляетесь за углы? Не вписываетесь в проёмы? Опять же, не забываем, что в играх, движок которых корнями восходит к Doom, движение наискосок (w + a или w + d) быстрее, чем движение строго вперёд или в бок. А ведь в игре вы поворачиваете не одной лишь мышкой, а совместно с клавишами a или d. Поэтоу приходится делать окна и двери шириной юнитов так 48.
+ к этому игрок в КС бегает со скоростью примерно 256 юнитов в секунду.

Последний раз редактировалось [POD]ILLbot0, 17.10.2013 в 11:10.
[POD]ILLbot0 вне форума Ответить с цитированием
Старый 17.10.2013, 11:49  #13
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 11,920


По умолчанию

2 [POD]ILLbot0: камера в шее находится только в CS. В оригинальном ХЛ, на уровне глаз, в этом легко убедиться, посмотрев на себя в зеркало.
Дядя Миша вне форума Ответить с цитированием
Старый 17.10.2013, 17:12  #14
Yo Den
Yo Den
Лейтенант
Регистрация: 02.10.2013
Адрес: Масквабад
Возраст: 24
Сообщения: 747
Замечания: 1


По умолчанию

[ Цитата ] Сообщение от [POD]ILLbot0: 2. Я сделал дверь на карте 2 метра высотой, сделал ручку на высоте 1 метр. Но в КС кажется, что она на уровне груди игрока. Почему?
Камера ("вид из глаз") в КС в модели расположена не на уровне глаз, а на уровне шеи.

ну да, это ведь логично, если учесть, что игрок в кс пригнувшийся (по моделям видно), размерность там та же, что и в хл, судя по моделям заложников-учёных
Yo Den вне форума Ответить с цитированием
Старый 17.10.2013, 18:01  #15
Pops
Pops
レズビアン
Регистрация: 20.03.2009
Адрес: долб
Возраст: 23
Сообщения: 2,610
Замечания: 10


По умолчанию

[ Цитата ] Сообщение от [POD]ILLbot0: Попробуйте у себя дома быстро пробежать из своей комнаты, например, на кухню.
попробовал, это правда
Pops вне форума Ответить с цитированием
Старый 16.03.2017, 12:22  #16
crystallize
crystallize
Лейтенант
Регистрация: 06.06.2014
Сообщения: 709


По умолчанию

А как быть с тем, что при отображении досовского 320x200 на мониторе 4:3 пиксель не квадратный? Имеет ли смысл сравнивать нарисованные таким пикселем спрайты с моделями и уровнями нарисованными под квадратный пиксель и высчитывать что-то из них?
crystallize вне форума Ответить с цитированием
Старый 16.03.2017, 12:53  #17
Yo Den
Yo Den
Лейтенант
Регистрация: 02.10.2013
Адрес: Масквабад
Возраст: 24
Сообщения: 747
Замечания: 1


По умолчанию

[ Цитата ] Сообщение от crystallize: А как быть с тем, что при отображении досовского 320x200 на мониторе 4:3 пиксель не квадратный? Имеет ли смысл сравнивать нарисованные таким пикселем спрайты с моделями и уровнями нарисованными под квадратный пиксель и высчитывать что-то из них?
при "320x200 на мониторе 4:3" всё изображение сжимается или только спрайты?
Yo Den вне форума Ответить с цитированием
Старый 17.03.2017, 03:34  #18
crystallize
crystallize
Лейтенант
Регистрация: 06.06.2014
Сообщения: 709


По умолчанию

2 Yo Den:
всё изображение.
crystallize вне форума Ответить с цитированием
Старый 10.04.2017, 06:16  #19
crystallize
crystallize
Лейтенант
Регистрация: 06.06.2014
Сообщения: 709


По умолчанию

А в чём косяк на приведённом в начале скриншоте комнаты? Хаундаев на сорсе всё равно официально нет, да и этот почему-то без тени, как будто в воздухе.
crystallize вне форума Ответить с цитированием
Старый 10.04.2017, 10:23  #20
Yo Den
Yo Den
Лейтенант
Регистрация: 02.10.2013
Адрес: Масквабад
Возраст: 24
Сообщения: 747
Замечания: 1


По умолчанию

[ Цитата ] Сообщение от crystallize: А в чём косяк на приведённом в начале скриншоте комнаты? Хаундаев на сорсе всё равно официально нет, да и этот почему-то без тени, как будто в воздухе.
там голдсорс, нет косяка

Yo Den, подумав, добавил 10.04.2017 в 10:28
а по поводу того твоего вопроса лично я просто не особо понял в чём соль, если изображение растягивается при нестандартном разрешении экрана, то при чём тут маппинг, во всех остальных случаях же всё нормально. Физика (взаимодействие с реальной геометрией уровня) же важнее графики (её неправильного отображения)

Последний раз редактировалось Yo Den, 10.04.2017 в 10:29.
Yo Den вне форума Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 09:30.


Designed by FT-502, TRUP@C. Originally by Ulric Spaak
Hosted by: VBIOS.COM, Powered by: vBulletin
copyright © 2002 - 2017 by CS-Mapping.com.ua Community