- Туториал: Ошибки и Баги.
- Автор: Learning Unreal Engine 3 – UE3 Editor
- Орегнал: Cjmmon errors and bugs.
- Перевод: FACH
Типы ошибок и багов
Ошибки на картах, можно распределить на следующие категории. Пройдите через все категории и средства, прежде чем распространять свою карту.
Check Map for Errors (проверить карту на наличие ошибок) – для этого выберите Tools->Check Map for Errors
Build Errors - ошибки, которые появляются, когда Вы строите карту (освещение, дорожки, геометрия, или все).
Gameplay Bugs- все, что задевает игрока во время игры.
Art Bugs- все, что визуально отвлекает игрока.
Build Errors / Check Map for Errors
У Вас, безусловно, есть ошибки, возникшие при построении карты.
Если вы дважды щелкните на ошибку, Unreal покажет этот объект на сцене. (Вы иакже можете выбрать объект и нажать кнопку "Home" и камера сцентрируется на предмет). Большинство ошибок с объектами, которые имеют определенное размещение, решение, как правило, достаточно очевидное - либо переместить, либо удалить объект, чтобы ошибка исчезла.
Полный перечень строительных ошибок и их решения могут быть найдены здесь: http://udn.epicgames.com/Three/MapErrors.html
Вот некоторые из наиболее распространенных ошибок и пути их решения, с которыми Вы будете сталкиваться.
Only [x] PlayerStarts in this level (need at least 16)
Разместите больше PlayerStart узлов до тех пор, пока их не станет, по крайней мере 16.
Run СClean BSP MaterialsФ to clear [x] unnecessary material references
Перейдите в меню Tools->Clean BSP Materials.
Brush_[x] : Brush has NULL material reference(s)
Стандартный материал (клетчатый) на геометрии, необходимо применить какой-нибудь материал, если поверхность видна. RemoveSurfaceMaterial (удалить материал с поверхности), если поверхность не видно (например, скрытые под StaticMesh (статической сеткой), или на нижнем игровом пространстве). Для скрытых поверхностей, откройте свойства поверхности и установить Lightmap Resolution (разрешение) на 65536, и снимите галки с освещения.
StaticMeshActor_[x] in same location as StaticMeshActor_[y]
Два объекта, один из которых находятся в другом или совпадает с ним. Обычно это происходит, когда Вы случайно дублируете сетку. Просто удалите одну из них.
StaticMeshActor_[x] has invalid DrawScale/DrawScale3D
Увеличение какого-нибудь Mesh’а по какой-нибудь оси равна 0. Удалите сетку или исправьте ее масштаб.
No paths from PathNode / UTPickupFactory / PlayerStart / Etc
(Нет пути к объекту геймплея, ведущим к нему.)
Там может быть несколько причин:
1) Не хватает pathnodes в месте подключения к сети, т.е. Разместите несколько pathnodes к объекту, чтобы его связать с остальными объектами.
2) Либо объект находится в геометрии или под игровой зоной. Переместите объект (попробуйте нажить кнопку «End») и постройте путь снова.
3) Объект находится в скрытой collision (столкновение, статической, не пропускающей) геометрии. (Та же проблема 2, только это труднее обнаружить.) Перейдите в показ актеров (Toggle Show Flags) и поставьте галку на collision (или нажмите клавишу "C"), чтобы посмотреть на «мир столкновения».
Navigation point not on valid base, or too close to steep slope
(Навигационная точка не на базе (нет привязки к объекту), или находится слишком близко к крутому склону)
Как и в предыдущем вопросе. Вам, наверное, просто нужно обновить позицию pathnode.
Или открыть его свойства (F4) Attachment, и привяжите pathnode к какому-нибудь объекту рядом, выделив этот объект и нажав на зеленую стрелку справа от поля Base.
[Path Node] is unnecessary and should be removed
(Path Node является излишним и должен быть удален)
Это может быть потому, что один из pathnode находится слишком близко к другому, или все pathnodes в его окрестности находятся на прямой видимости от него. Вы можете увидеть все пути в меню показа актеров, включение пути (или нажмите клавишу "P"). Удалите узел, или переместите его в такое место, где он создаст новый, полезный путь.
Actor has bAcceptsLights set but only uses unlit materials
(материал неосвещен)
Обычно это происходит со skydomes, объемной подсветкой или любых других объектов с материалами, которые не получили освещения.
Откройте свойства объекта, и перейдите в StaticMeshActor->Lighting и снимите галки с bAcceptsDynamicLights, bAcceptsLights и CastShadow.
В большинстве случаев Вам также необходимо отключить столкновение, для этого перейдите в свойствах объекта во вкладку Collision и измените CollisionType на COLLIDE_NoCollision.
[Pickup] doesn’t have a pickup light near it
(нет света рядом с оружием, аптечками, усилителями… (пикапами))
В таком случае, Вам одна дорога в Actor Classes или кликните меню Tools->Add Pickup Lights. Каждый раз, когда Вы перемещаете, добавляете или удаляете «пикап», Вам нужно запускать ребилд света, чтобы все pickuplights обновились.
Игровые Баги
Некоторые из этих ошибок будут найдены только после создания карты.
Вот некоторые из наиболее распространенных категорий геймплейных ошибок. Только некоторые из них могут быть рассмотрены как ошибка, но, например, один игрок или команда имеет довольно большое преимущество над другими, ошибку не выдаст.
Player can get permanently stuck
(игрок навсегда застрянет)
В Вашем уровне, может содержать место, куда игрок может попасть, и не вылезти, оттуда. Это может быть что-то очевидное, как глубокая яма, или же, может быть баг физики.
В этих ситуациях, обычно это непредвиденный проход в геометрии, или проход между blocking volume’ми.
Player can get temporarily stuck
(игрок может на время застрять)
Как и в вышеописанной ситуации. Возможно, игрок может двойным прыжком или translocator’ом выйти из помещений и застрять где-нибудь там. Такие проходы закройте blocking volume’ми.
Player can escape the world
(игрок может выйти за пределы игрового пространства)
Есть пространство, где игрок может выйти за область геймплейя. Иногда делают плоскость под картой, чтобы игрок падал и разбивался. И игрок не должен попадать в не застроенный район карты.
В любом месте карты должны быть blocking volume, чтобы удерживать игрока внутри. И помните, что игрок может использовать translocator самым неожиданным образом, так что вам может понадобится заделать весь окружающий мир blocking volum’ами.
Player can use translocator/vehicles/etc to get to unintended places
(игрок может использовать translocator / транспортные средства / и т.д., чтобы оказаться в непредвиденном месте)
Можно использовать translocator или что-то еще, чтобы получить доступ к хорошей позиции для снайперов. Проверьте все ваши карнизы и плоские поверхности вверху вашего уровня. Отключите столкновения в объектах, чтобы игрок не смог куда-нибудь, залезть или поставьте blocking volume.
Player gets snagged on walls/props/etc
(игрок может наткнуться на что-нибудь)
Это, очевидно, возникнет там, где много углов в стенах уровня и много всяких декоративных сеток.
Это вероятно один из наиболее тяжелых типов ошибок, а плавный переход является важным фактором вашего уровня.
Выключите столкновении на небольшие объекты, если они стоят на пути, или создайте blocking volume, которые позволяют игроку гладко проскользить по препятствию. Используйте трапецеидальные blocking volume в углах стен и подобных переходах. (Вы можете заметить их вдоль стен, особенно вокруг труб и столбов на официальных карах Epic’ов.)
Player gets snagged on invisible geometry
(Игрок натолкнется на невидимую геометрию)
Есть много причин для такого рода ошибка.
-- Небольшой объект или выход с карты
-- blocking volume размещен неправильно
-- потолок или объект слишком низкий, и игрок задевает их головой
-- порог или ступенька слишком высокая для того, чтобы просто пройти
-- Столкновение geo за сеткой, не совпадает с видимой geo зоной (в частности, проблема с сетками очень большого масштаба.)
Чтобы отследить это, в PIE (игра в окне редактора), откройте консоль и введите "show collision" - надеюсь, причина ошибки станет очевидной.
Player can pass through geometry
(Игрок может пройти в геометрию)
Иногда столкновения ГЕО не совпадает с видимой сеткой или сетка на столкновение не включена, и игрок может пройти через нее. Это может быть использовано в многопользовательской игре. Как правило, причины проблемы очевидны, но Вы всегда можете разместить blocking volume, если нет другого хорошего решения.
Player falls through the world
( Игрок упадает сквозь мир)
Это так же, как и выше. Может быть, земная сетка не столкновение GEO, или столкновение выключено. Blocking volume простой способ решить эту проблему.
Bullets hit invisible surfaces
(Пули попали в невидимую поверхность)
Это обычно, сетка луча прожектора, часть листвы или аналогичных прозрачных объектов, где включено столкновение. Правильно устанавливайте тип столкновения.
Также это может произойти, когда объект находится в bHidden режиме - он не видим, но его столкновения по-прежнему активны. Снимите галку, чтоб выключить столкновения совсем.
Player’s camera jitters when running up a staircase
(Камера дрожит, когда игрок поднимается вверх по лестнице)
Когда игрок резко поднимается по лестнице, камера мгновенно прыгает на новую высоту. Обычно это бывает, когда игрок идет по BSP лестнице и камера «вибрирует» во время подъема.
Либо замените BSP лестницу на статическую сетку (где, вероятно, гладко сделано столкновения GEO), или поставьте blocking volume, который создает плавный пандус над ступенями лестницы.
Lifts/Doors not working
(Лифты / Двери не работают)
Это должно быть достаточно очевидно, во время Вашего теста карты, так что тестите все Ваши лифты и двери, или проверьте их на столкновение или сам кисмет.
Bots experience any of the above issues
(Боты сталкиваются с любой из вышеперечисленных проблем)
Это может быть очевидным, но не забудьте тщательно проверить с ботами Ваш уровень, чтобы убедиться, что они действуют, как должны.
Bots donТt path to certain areas
(У ботов нет пути к определенным областям)
Во-первых, убедитесь, что Ваши пути прошли ребилд.
Если есть, можно еще заметить, что иногда определенные районы вашего уровня не прорабатываются, или не будут приниматься определенные пути. Это, как правило, потому, что нет смысла в этом маршруте. Лучший способ заставить построится путь, использовать разные пикапы в удаленных уголках вашего уровня (Это, как правило, тоже хорошо и для игрока!).
Bots donТt defend spaces intelligently
(Боты не защищают пространство интеллектуально)
Вы помните, на каком месте лучше всего поставить UTDefensePoints, чтобы боты оборонялись там, где Вы хотите?
Art Bugs
Ошибки связанные с артом, как правило, не столь серьезные, как геймплейные ошибки, но хороший арт – это основное достоинство Вашей карты.
Вот несколько категорий ошибок, которые в целом могут относится к арту.
Object placement issues
(Размещения объектов)
Это когда объект, находится под землей или пересекается с другим.
Z-fighting (flickering surfaces)
(мерцание поверхности)
Это происходит, когда две поверхности непосредственно друг на друге. Чтобы решить проблему, просто передвиньте одну из сеток или удалите ее. Z-fighting, как правило, более заметен на расстоянии и не может быть виден вблизи.
Gaps between meshes/BSP
(Разрывы между сетками / BSP)
Посмотрите внимательно, чтобы убедиться, что нет маленьких пробелов между сетками или BSP поверхностями.
Can see outside the world
( Можно увидеть внешний мир)
Убедитесь в том, что игрок не сможет увидеть ничем не застроенное пространство, оно дает характерный мерцающий эффект, это происходит, когда игрок видит бесконечность.
Lighting issues
(Освещение)
Иногда необходимо, проработать lightmap сетки, для того чтобы была хорошая тень. Если у вас есть швы между сетками, которые размещены в линию (например, стены или перила), Вам, возможно, потребуется снять галку с "bUseSubDivisions" (или поставьте галку на AdvancedLighting).
Lighting is too dark (goes pure black)
Освещение слишком темное (выходит чисто черно)
Убедитесь, что освещение в вашем уровне и не черное, и убедитесь, что каждое пространство освещается достаточно хорошо. Вам, возможно, потребуется разместить Небесный купол и некоторой низкой интенсивности, направленный свет, или даже низкой интенсивности pointlights в темную область.
High/Medium/Low Detail
(Высокая/Средняя/Низкая детализированность)
Не забывайте, проверить вашу карту в Максимальном, Среднем и Низком качестве, и ищите проблемы в каждом!
*** Тутор будет еще доробатываться ***