Автоматическая раздача сервером нестандартного персонажа

Автоматическая раздача сервером нестандартного персонажа.

Статья описывает способ передачи сервером UT2004 нестандартной модели персонажа по сети каждому клиенту, без надобности каждому клиенту скачивать ресурсы персонажа отдельно в виде архива.

Статья подробно описывает проблему, позволяя не только решить проблему, но и понять сам способ решения проблемы.

Итак...

Любая модель персонажа состоит из ресурсов (класс, текстуры, анимация, звуки, описание) и описателя.

огда клиент устанавливает себе нестандартного персонажа, он распаковывает из архива все ресурсы по своим папкам и в папке System появляется файл-описатель с расширением .upl, примерно следующей структуры (базовый вариант):

[Public] Player=(DefaultName="ModelRedex", Mesh=HumanMaleA.MercMaleC,species=xGame.SPECIES_Merc, BodySkin=TextureRedex.BodyRedex,FaceSkin=TextureRedex.HeadRedex, Portrait=TextureRedex.FotoRedex)

Опишем параметры структуры:

  • DefaultName - имя персонажа в игре
  • Mesh - анимационная модель персонажа
  • species - класс управления персонажем
  • BodySkin - текстура туловища
  • FaceSkin - текстура головы
  • Portrait - фото персонажа в виде текстуры (256 на 512)

Чтобы установленный таким образом персонаж работал по сети, он должен быть предварительно установлен у каждого клиента, в противном случае вместо него остальные игроки будут видеть Вас как персонажа "Jakob".

Чтобы сервер UT2004 раздавал нестандартного персонажа каждому клиенту автоматически, нужно файл-описатель .upl перевести в файл-скрипта .u, тогда сервер сможет его передать каждому клиенту вместе с ресурсами персонажа.

Структура описателя .upl в виде скрипта .u примерно такая:

class ModelRedex extends PlayerRecordClass;
defaultproperties
{
Species=class'xGame.SPECIES_Merc'
MeshName="HumanMaleA.MercMaleC"
BodySkinName="TextureRedex.BodyRedex"
FaceSkinName="TextureRedex.HeadRedex"
Portrait=Material'TextureRedex.FotoRedex'
TextName="XPlayers.Default"
Sex="Male"
Menu="SP"
}

Как видно, описатель в формате .u представляет из себя пустой класс. Название класса (в данном случае ModelRedex) совпадает с именем персонажа в игре. Класс наследуется от класса PlayerRecordClass, который отвечает за данные игроков в игре. В классе имеется блок defaultproperties, в котором присвоены значения переменных по-умолчанию, которые являются параметрами персонажа. Как видно, структура описателя в виде скрипта .u сильно похожа по аналогии на структуру описателя .upl, поэтому создать подобный класс вручную на основе описателя .upl не составит труда.

Чтобы получить описатель в виде скрипта .u, нужно его сначала скомпилировать. Для этого создайте в папке с игрой (\UT2004) папку с именем персонажа, но добавив на конце слово "Mod" (например ModelRedexMod), далее в этой папке создайте папку с именем "Classes" и в ней создайте файл c именем персонажа (например ModelRedex) и с расширением .uc (формат скрипта в исходном, не скомпилированном виде). После этого переместите структуру описателя в виде скрипта в этот файл.

атем нужно данный класс .uc скомпилировать, чтобы его можно было использовать в игре. Для этого в папке System откройте файл конфигураций UT2004.ini и в секцию [Editor.EditorEngine] добавьте параметр EditPackages и после знака "=" укажите название персонажа, но добавив на конце слово "Mod" (например ModelRedexMod).
Должно получиться примерно так:

[Editor.EditorEngine]
...
...
EditPackages=ModelRedexMod
...

После этого запустите компилятор UCC.exe, который находится в папке System, с параметром командной строки "make" (например так "C:\Games\UT2004\System\UCC.exe" make). После успешной компиляции без ошибок в папке System появится скомпилированный файл скрипта со структурой описателя персонажа. Этот файл уже будет иметь расширение .u и его уже можно использовать в игре. Название файла совпадает с названием персонажа с добавлением на конце слова "Mod". При повторной компиляции того же скрипта нужно предварительно удалить скомпилированный файл скрипта.

В завершении остаётся добавить скомпилированный файл скрипта в список сервер-паков (это список скриптов, которые будут автоматически скачиваться клиентом с сервера). Для этого в папке System откройте файл конфигураций UT2004.ini и в секцию [Engine.GameEngine] добавьте параметр ServerPackages и после знака "=" укажите название персонажа, но добавив на конце слово "Mod" (например ModelRedexMod).
Должно получиться примерно так:

[Engine.GameEngine]
...
...
ServerPackages=ModelRedexMod
...

После всего этого расположите ресурсы персонажа по соответствующим папкам:
Файл текстур .utx в папку Textures
Файл анимации .ukx в папку Animations
...и так далее по аналогии.
Файл текстур содержит в себе обычно текстуру туловища и текстуру головы и фотографию персонажа также в виде текстуры.

Всё. Теперь сервер будет всем подключившемся игрокам автоматически раздавать модель персонажа. Однако стоит заметить, что скачанный таким образов персонаж клиент не сможет использовать непосредственно, как если бы его установил через архив, так как все ресурсы будут храниться в папке "Cache" с хешированными именами, а сам файл-описатель будет в виде скрипта, который будет нужно декомпилировать и затем перевести в формат описателя .upl.

Отдельно спасибо XCanG за поддержку.

Информация

Добавил: Redex (Другие статьи пользователя)

Дата добавления: 01 Апрель 14, 18:00

Категории: Unreal Tournament 2004 - Руководства

Статистика

, 5

XCanG
XCanG 30 Май 15
Кстати, вот чисто для примера больше переменных, описывающих персонажа в .upl-файле:
Код

[Public]Player=(DefaultName="RndXan",Race="Cybernetic",Mesh=XanRobots.XanM03,species=xGame.SPECIES_Bot,BodySkin=RndXan.RndXan_Body,Face Skin=RndXan.RndXan_Head,Portrait=RndXan.RndXan_Portrait,Text="Name:  RndXan|Race:  Cybernetic||Data:||RndXan the aggressive professional player in UT2004",Sex=Male,Menu="SP",Accuracy=+10.0,Aggressiveness=+10.0,Tactics=+10.0,Jumpiness=+10.0,StrafingAbilit y=+10.0,CombatStyle=0.5,ReactionTime=+10.0,TeamFace=1,BotUse=1)

Собственно в .uc это превращается примерно в такой вид:
Код
class RndXan extends PlayerRecordClass;
defaultproperties
{
DefaultName="RndXan"
Race="Cybernetic"
MeshMame="XanRobots.XanM03"
Species=class'xGame.SPECIES_Bot'
BodySkinName="RndXan.RndXan_Body"
FaceSkinName="RndXan.RndXan_Head"
Portrait=Material'RndXan.RndXan_Portrait'
TextName="Name:  RndXan|Race:  Cybernetic||Data:||RndXan the aggressive professional player in UT2004"
Sex="Male"
Menu="SP"
Accuracy=+10.0
Aggressiveness=+10.0
Tactics=+10.0
Jumpiness=+10.0
StrafingAbility=+10.0
CombatStyle=0.5
ReactionTime=+10.0
TeamFace=1
BotUse=1
}
XCanG
XCanG 21 Август 14
Анонимка, не понятно в чём проблема. Если хотите ответа, то пишите что и где сделано и где возникла проблема и с чем.
Анонимка
Анонимка 18 Август 14
Всё работает. Но при копировании с сайта не работает файл upl, коды перехода на новую строку не те...