Перейти к публикации
Планета Deus Ex

Zzz

Invisible Hand
  • Публикации

    1890
  • Зарегистрирован

  • Посещение

Все публикации пользователя Zzz

  1. Zzz

    Hotel Carone

    Это концовка демы, а что они хотели сделать в настоящей концовке - фиг знает.
  2. Апдейт :) Про паки: Как написал выше. Наследование (новое!) Еще подправил концовку, и еще сморозил кору: Кстати, у нас появился один лишний Зондер или один лишний Дедъ. Кто наврал? Нехорошо.
  3. Zzz

    Просто flood

    А в конце все-таки закончил ее?
  4. Если ты серьезно, то ты просто не знаешь именно эти слова. То что они обозначают ты знаешь 8) Ты чувствуешь это :D Да, про абстрактные нужно, т.к. я написал "класс Actor. Все что находится под ним может быть помещено на карту" %)Про наследование наверно тоже нужно бы %))). А про перегрузку тогда тоже %))))))))) Но если про перегрузку, тогда нужно обьяснять что такое функции и процедуры. Чо делать? :twisted:
  5. Так пойдет? Предложи свой вариант :wink: Про инкапсуляцию, наследование, полиморфизм и прочие нюансы (как то: перегрузка функций, абстракиные классы) я хотле рассказть в 3 туторе =) Во втором - практика. Можно я так и сделаю? :D Просто что бы не перегужать человека таким количеством информации :)
  6. Короче я попытаюсь высказать вышеперечисленные понятия, потом дополним/подправим, и после этого можно будет залить как статью. Идет? З.Ы.: Это недедъовский тутор, всмысле не для Дедъа :lol: V1.12 2004.01.29 - 3:44 //========================== // Introduction. //========================== Все что здесь описывается - относится к редактированию Deus Ex и других игр, построенных на Unreal Engine. Так что это может пригодится не только для Deus Ex. Ну и опыт тоже добавит 8). U Engine (впрочем любой Engine) - это не программа, это собирательное понятие, которое основывается на системе хранения и обработке данных. Программа - это просто метод реализации. В U игре есть т.н. ресурсы: Уровни, текстуры, звуки и т.п. Все ресурсы распиханы по пакам (pack, сокращение от package - упаковка). Данный подход (не в открытом виде, а запакованный), позволяет уменьшить занимаемое место на HDD (за счет уменьшения количества файлов), увеличить скорость загрузки данных, а также применить сжатие (в U не исползуется!). Содержимое ресурсов зависит от их типа (по расширению файла), у каждого типа есть свое местоположение: ..utx - пак с текстурами (textures), т.е. картинками - стены, мебель, предметы и т.д. .uax - звуки, все что мы слышим в игре .umx - музыка .dx (как вариант .unr) - файл карты, по сути так же является универсальным паком. - папка с ридми файлами, а еще там находятся splash скриныMaps - карты, все карты тут (.dx) Music - музыка (.umx) Save - файлы сохранения, нас это не будет интересовать 8) Sounds - звуки (.uax) System - главные паки (те что универсальные) .u, файлы локализации (например .int файлы; об этом подробнее в последующих туторах), exe файл нашей игры, dll (библиотеки, в которых содержатся отдельные части приложения; используются exe файлом), файлы инициализации (т.н. конфиги, ini файлы), логи. Textures - текстуры (.utx) . В данном туторе рассмотрим классы (и иже с ними), что это такое, и что они дают. //========================== // OOP, classes and objects. //========================== Используемая система обьектов, взаимодействия обьектов друг с другом и т.д. - все это построено на Объекто Ориентированном Программировании (ООП). Не будем вдаваться в подробности, просто заметим, что данный подход позволяет реализовывать сложные и интересные конструкции взаимодействия: например NPC (компьютерный персонаж) может сесть на стул, Projectile (т.е. снаряд) от огнемета зажигает обьекты и т.д. Класс (Class, Classes - мн. ч.) - это некий тип данных. В нем содержится описание чего-либо, а также специальные подпрограммы для выполнения различных задач. Класс может создавать обьект (точнее обьект создается по шаблону, которым как раз и является класс). Дальше это тоже будет рассмотрено ;). Ключевой особенностью ООП является иерархия классов: существует некий класс Object (не путайте с обьектами!!!), который является родительским (или супер классом) по отношению ко всем нижеследующим классам. Все нижеследующие являются дочерними классами к классу Object. У дочерних классов класса Object могут быть также свои дочерние классы. Дерево классов, графическое представление иерархии классов: Object | / Class1 Class2 | / Sub1 Sub2 Class1 и Class2 - дочерние классы к Object, Object является родителем для них. Sub1 и Sub2 - дочерние классы к Class1, а Class1 для них является родительским. Наследование Теперь зачем это все надо, спросите вы. А вот зачем: дочерние классы наследуют все содержимое родителей. Еще одна иллюстрация: Class1: Title | Class2: Title + Color | Class3: Title, ColorУ Class1 есть переменная Title (заголовок, например отображаемое название обекта). Class2 наследует эту переменную от родителя, и кроме этого обьявляется новая переменная Color (например цвет обьекта). А Class3 наследует все от Class2, соответсвенно у него изначально есть и Title, и Color. Т.е. в самом первом классе (в самом наивысшем в иерархии), определяются самые общие значения. А потомки уже конкретезируют задачи. Например в DX существует класс Weapon. В нем описано все то, что нужно для успешного использования предметов типа "оружие" (например то, что оружие можно взять на изготовку, перезарядитть, выстрелить). У этого класса есть подкласс DeusExWeapon. В нем разработчики Deus Ex добавили новые описания (например что у оружия может быть несколько типов патронов). Таким образом в DeusExWeapon есть все что было в классе Weapon плюс свои собственные. Вернемся ко второй иллюстрации. Классы кроме переменных еще обладают функциями (процедуры, подпрограммы) - это куски кода, выполняющие различные операции. В нашем случае это можеть быть перекрашивание обьекта. Так вот, подпрограммы так же наследуются. Если в Class1 обьявить функцию перекрашивания, то она будет и у Class2, и у Class3. Кроме этого Можно делать т.н. override (перезапись, перегрузка) родительской функции. Например в Class1 функция перекрашивания изменяет цыет свего обьекта. А в Class2 нам нужно перекрашивать только верхнюю часть обьекта (например). Нам ничего не мешает переделать эту функцию в Class2!!! Только учтите что у Class3 функция перекрашивания будет уже от Class2 :). Одним из дочерних классов Object является класс Actor. Все что находится под ним (за исключением абстрактных классов, об этом в следующий раз) может быть помещено на карту (map, level, уровень, етц.) в виде обьекта (это не так страшно как звучит, мы разберем это чуть ниже). Например такая цепочка (ну или адрес, можно еще назвать веткой): Object>Actor>Weapon>DeusExWeapon>WeaponPistol Это класс пистолета. В этом классе содержится описание его характеристик: какую модель использовать, какие звуки проигрывать, какой тип повреждений и т.д. Обьект - это некий предмет, который может взаимодействовать с миром и другими предметами. Можно сказать что обьект создается по шаблону, описание которого заключено в классе этого обьекта. Для упрощения понимания возьмем автомат с газ. водой. Пусть это будет класс. Вы жмете на кнопку, и из него вылетает банка Pepsi/<укажите ваш вариант>. Эта банка Pepsi - уже обьект. По образу одного класса может создаваться множество обьектов с идентичными параметрами и характериситиками. Класс пистолета WeaponPistol только один, а обьекты (много обьектов!) этого класса есть и у Unatco, и у NSF :P //========================== // Ending. //========================== Наверняка у вас есть один вопрос: почему все так сложно? На самом деле (если вникнуть, конечно) все НЕ сложно. Главное понять основу! Теперь вы имеете небольшое представление о внутренностях вашей любимой игры. В следующий раз я расскажу вам о Unreal Ed, UCC.exe и о том, как сделать свой первый (а может быть и не первый) пак со своим классом => свой пистолет например 8) => модификация своими руками. Это может сделать любой, даже ты :wink:
  7. Zzz

    Neon Genesis Evangelion

    Не надо все принимать всерьез :lol:.
  8. Zzz

    Оружие ближнего боя

    ОУ ЙЕЕЕ!!!!111 Неправильн написал название меши в
  9. Zzz

    Просто flood

    Окончанием музыкально школы, лоль!
  10. Это был развернутый вариант фразы "Кадый человек решает для себя в чем его смысл жизни" :lol:
  11. Zzz

    Оружие ближнего боя

    Нууууууууу =( А ты ничего подобного не делал? Всмысле ножи лимки и т.п.? А в модах где-нить было такое?
  12. Zzz

    Оружие ближнего боя

    Я тоже подумал про это :) Ставил 0.1 - то же самое :lol: RATE=30 - это 30 кадров в секунду? Т.е. если 15 кадров, то должно идти пол-секунды?
  13. Zzz

    Оружие ближнего боя

    Crowbar: #exec MESH NOTIFY MESH=Crowbar SEQ=Attack TIME=0.5 FUNCTION=HandToHandAttackИ также для Attack2 и Attack3. Добавил себе. Не помогает =(
  14. Сначала найди в браузере классов класс этой пушки (под Weapon>DeusExWeapon), потом нажми на него два раза. Измени там что нить (например в заголове допиши "1"). После этого жмешь кнопку внизу Export. После этого в корневой директории появится папка с названием пака (к которому принадлежал этот класс), в нем папка Classes, а в ней уже файл с названием того самого класса. Вот его-то и засовываешь в свой пак. При это вроде бы надо изменить его название (и название класса соответсвенно). А еще номер предмета (он типа должен быть уникальным). Ну а потом редактируешь там все что нужно :lol: Стив Так, как обычно. Что бы сделать свой projectile, нужно сделаить подкласс в DeusExProjectile. Еще можно свой собсвтенный тип повреждения придумать :)
  15. Zzz

    Neon Genesis Evangelion

    Ы! Я иммел ввиду что хотел сказать Дедал. Если взять среднстатистических юзеров, то будет то что я сказал. А кто идет в профи (.т.е. идут работать ими) - это уже другое :lol:
  16. Но по-сути этому человеку уже будет все равно :lol:
  17. Zzz

    сигнатуры и aватары

    Да-да, именно ты! А почему буквы лесенкой на сигнтауре?
  18. Это Дедала так понесло? :lol: Или кого-то другого =) А что мешает придумать его? Кадый человек решает для себя в чем его смысл жизни © meselfУ Дедъа например смысл жихни убить всех людей. А пока ему нужно закончить цыферки. Мой смысл жизни - to merge with computer. Только тогда я буду спокоен. Если более призеиленно, то мой смысл жизни - играть. Мозскъ должен быть занят чем-то, иначе "мы проиграем". А как же бессмертие и искуственная жизнь? :) Что бы жить. У каждого человека есть вещи, которые ему нравится делать. Вот хотя бы ради этих удовольствий и стоит жить. Мне нравится играть, я хочу жить что бы играть. Почему бы и нет?
  19. Zzz

    Просто flood

    Стирай.А потом я сотру Зондераъ :lol: А потом я обижусь на тебя :) А че не на пять? :P
  20. Zzz

    сигнатуры и aватары

    А с пришельцами ты поодиночке будешь воевать? Это как старые добрые пословицы про кулак и пальцы, или про вязанку хвороста и отдельные хворостины ( :lol: ). Управлять сложнее, зато результат лучше. Конечно %-ная вероятность корупции и принижение цены чел-й жизни большая, но если все грамотно сделать... это будет новый этап в развитии человечества. Взаимное понимание и стремление к успеху.
  21. Zzz

    Neon Genesis Evangelion

    О наверно имел ввиду что процент мужиков хорошо рисующих аниме меньше, чем процент... девушек :lol:
  22. Zzz

    Deus Ex & Radeon

    Долго ждать еще :lol:
  23. Zzz

    End Game 4

    Мечтать полезно, но только если в меру. И не зацикливаться на мечтах. Так пойдет? P.S.: Мы с тобой любители досказать невысказанное :mrgreen: 8)
  24. Zzz

    Оружие ближнего боя

    В то время я даже не запускал его, точнее в то время у меня его вообще не было :mrgreen: Milkshape 3D, быстро, удобно, ресурсы не нужны. А главное всего 4 мега качать нужно было 8)
  25. Zzz

    End Game 4

    Я бы сказал полезно :wink: Но мы можем стремится к тому чего мы хотим. И мы можем добиться того чего мы хотим. Конечно не в 100% случаев, но все же. ИМХО мы можем максимально приблизиться к нему...
×
×
  • Создать...