|
|
|
|
|
Профиль : |
|
>Конвертор карт сделать сможешь? как сказать, такой чтобы вообще ручной работы не требовал, я вряд ли сделаю, а вот всякую мелочовку вроде тех же амбиент звуков, врагов, патроны разбосанные по всем углам, тривиальные свойства секторов, я должен суметь перекинуть на eduke32. Если так подумать, то все это, помноженое на колчество уровней в обоих аддонах, это колосальный объем рутинной работы который можно избежать.
> Хотя, кстати говоря, на каждый спрайт в дюке еще должны быть переменные xvel, yvel, zvel, clipdist и owner.
да, все эти перемыенные описаны в структурах: Код:struct Sprite { int x, y, z; short cstat, picnum; signed char shade; unsigned char pal, clipdist, filler; unsigned char xrepeat, yrepeat; signed char xoffset, yoffset; short sectnum, statnum; short ang, owner, xvel, yvel, zvel; short lotag, hitag, extra; }; |
|
|
Всего записей: 208 : Дата рег-ции: Апр. 2009 : Отправлено: 06 Мая, 2014 - 21:50:15 |
|
|
|
|
WWW : Профиль : |
|
Это структура Blood-карт? Тут для меня неизвестная переменная только filler ну и data1-data4 ) |
|
Всего записей: 946 : Дата рег-ции: Янв. 2008 : Отправлено: 06 Мая, 2014 - 22:37:34 |
|
|
|
|
Профиль : |
|
это структура спрайта дюка. в бладе структура может содержать дополнительную секцию xSprite которая и содержит переменные data1-data4
по формату MAP карт на форуме существует тема, ээээ... девятилетней свежости http://bloodgame.ru/forum/topic.php?forum=2&topic=2
и как результат иследования, итоговй excel-файл, где все структуры кроме xSprite расписаны: http://bloodgame.ru/download/mapformat.rar
зы про конвертор. индексакцию текстур я сделал, но на твоих картах на всех стенах заполнено поле overpic значением 5120. Его обязательно забивать?
Потом, не совсем понял, что с масштабом. Оружие, враги и медикаменты утопают в полу... какие занчения на сколько надо поменять?
(Отредактировано автором: 07 Мая, 2014 - 14:08:39) |
|
Всего записей: 208 : Дата рег-ции: Апр. 2009 : Отправлено: 07 Мая, 2014 - 05:06:29 |
|
|
|
|
WWW : Профиль : |
|
Цитата:индексакцию текстур я сделал, но на твоих картах на всех стенах заполнено поле overpic значением 5120. Его обязательно забивать? |
нет, не обязательно. видимо он сам забивается после конвертации.
Цитата:Потом, не совсем понял, что с масштабом. |
Дюк ровно в полтора раза меньше Калеба Карту нужно уменьшать, если знаешь как, уменьш, если нет забей, потом сам уменьшу...хотя вроде как mapster32 новый такое умеет |
|
Всего записей: 946 : Дата рег-ции: Янв. 2008 : Отправлено: 07 Мая, 2014 - 20:51:54 |
|
|
|
|
Профиль : |
|
Разобрался более-менее с геометрической системой простроения уровня. Как оказалось, х/y координаты блада и дюка совместимы, а вот про z-координату так не скажешь. И поэтому, когда загружаешся в немасштабированный уровень, воникает ощущение, что не идешь, а ползешь на брюхе.
Про конвертор. Доработать blud2b под полноценный конвертор, никак не получится, по той причине, что blud2b работает единовременно только о с одной записью т.е. посмотреть что записано в одном спрайте, и с учетом этого поменять информацию в другом спрайте, он никак не сможет. Нужно программу, которая бы загружала все карту в оперативку и могла бы прочесть/изменить произвольную запись. К счастью, когда я ковырял формат карт, я переписал blud2b на c++11, что бы программа мне распечатывала поля записей карты. Что бы сделать из нее конвертор, оставалось добавить запись в дюковский формат. В принципе, если сравнивать со скриптами mapster'a( я почитал немного вики, но пока бегло) то последний в разы удобнее будет конечно, и цель конвертора не в том что бы заменить мапстер, а том чтобы перекинуть недостающую инифу, которую blud3b режет.
Исходник, не знаю нужен или нет, но все-же выложил сюда: http://sourceforge.net/p/bloodcmhrp/blud2e/ci/master/tree/
написано под компилятор gcc, у кого нет его под рукой, могут спокойно собрать утилитку на облаке, например http://koding.com
утилита, пока почти без правил, переобразования, просто основа программы. Работая без правил, программа выдает результат идентичный blud2b. Сейчас нужно придумывать правила.
(Отредактировано автором: 11 Мая, 2014 - 21:11:05) |
|
Всего записей: 208 : Дата рег-ции: Апр. 2009 : Отправлено: 11 Мая, 2014 - 20:59:19 |
|
|
|
|
WWW : Профиль : |
|
Спасибо за исходники, будет с чего начать изучать с++ Видимо, надо будет составить таблицу соответствия номеров звуков оригинала с номерами звуков BloodCM (звуки в игру добавлял по мере необходимости, поэтому нумерация не совпадает) Список лучше хранить и загружать в программу из txt файла, так настройка будет более гибкой.
Ну видимо, скоро у нас появится новый конвертер карт, это круто |
|
Всего записей: 946 : Дата рег-ции: Янв. 2008 : Отправлено: 12 Мая, 2014 - 08:52:08 |
|
|
|
|
Профиль : |
|
>Спасибо за исходники, будет с чего начать изучать с++ ок. будет, что-то непонятно, спрашивай.
>надо будет составить таблицу соответствия номеров звуков оригинала с номерами звуков BloodCM (звуки в игру добавлял по мере необходимости, поэтому нумерация не совпадает)
да, задачка. пока единственное что приходит в голову: натравить программку сравнивать оригинальные карты и уже готовые. понятно что номера спрайтов сбиты, но каждый спрайт приписан к определенному сектору, кроме того имеет четкие пространственные координаты. и даже если оригинальный спрайт был передвинут, то скорее всего недалеко, и сравнивая модули векторв, можно построить таблицу соответствия.
>Список лучше хранить и загружать в программу из txt файла, так настройка будет более гибкой.
на мой взгляд сомнительно. в конфиг-файл надо пихать те данные которые придиться постоянно менять, т.е. это обычно пользовательские настройки: видео-режим и пр. а номера звуков зачем менять? я бы вынес табличку в заголовочный файл. но если очень хочется, могу прикрутить конфиг на LUA, это десять строчек в коде, а возможностей должно с головой хватить. Но так, чтобы дефолтные значения все равно задавались хардкорно, благо при открытых исходниках их посмотреть не проблема, а конфиг файл только бы менял их значения по необходимости.
|
|
Всего записей: 208 : Дата рег-ции: Апр. 2009 : Отправлено: 12 Мая, 2014 - 21:31:17 |
|
|
|
|
WWW : Профиль : |
|
Цитата:в конфиг-файл надо пихать те данные которые придиться постоянно менять, |
Это как раз и будут те самые данные, сама по себе blud2b должна конвертировать звуки один к одному, но если будет особый параметр, как в случае с BloodCM, то использовать его...ну другими словами, лучше сделать настройки по-умолчанию как в blud2b, а таблица звуков - это частный случай.
Цитата:понятно что номера спрайтов сбиты, |
Номера спрайтов как раз не сбиты, там смещение на 5120, грубо говоря, в оригинале все картинки хранятся с TILE000.ART, но т.к. в eduke32 эти тайлы заняты, то первый тайл BloodCM имеет TILE020.ART. Сначала я просто хотел сделать BloodCM как мод к дюку, поэтому решил сделать такое смещение....в общем абсолютно все текстуры в конверторе подчиняются этому правилу, за исключением некоторых текстур в самом конце архива тайлов (там уже просто подгоняли по размеру текстуры, которые плохо смотрелись на полу, после машстабирования уровня)
И приведу пример переменные звуков в BloodCM:
Код: //Caleb Talk define FRESHVICTIMS 1001 definesound FRESHVICTIMS 1001.wav 0 0 255 4 0 define BOOMSTICK 1002 definesound BOOMSTICK 1002.wav 0 0 255 4 0 define GOODBAD 1003 definesound GOODBAD 1003.wav 0 0 255 4 0 define SMELLOFNAPALM 1004 definesound SMELLOFNAPALM 1004.wav 0 0 255 4 0 define ALLIWANTISAFRIEND 1005 definesound ALLIWANTISAFRIEND 1005.wav 0 0 255 4 0 define NOONEWANTTOPLAY 1006 definesound NOONEWANTTOPLAY 1006.wav 0 0 255 4 0 define ISTHATGASOLINE 1007 definesound ISTHATGASOLINE 1007.wav 0 0 255 4 0 define OOH 1008 definesound OOH 1008.wav 0 0 255 4 0 define TADA 1009 definesound TADA 1009.wav 0 0 255 4 0 define LIVEAGAIN 1010
|
Может это тебе как-то поможет?
Если что, весь список звуков есть в файле sounds.con, хотя я не помню, притерпел ли он изменения с момента выхода версии 06.2013 |
|
Всего записей: 946 : Дата рег-ции: Янв. 2008 : Отправлено: 12 Мая, 2014 - 23:39:31 |
|
|
|
|
Профиль : |
|
> Номера спрайтов как раз не сбиты, там смещение на 5120, мы наверно говорили о разных переменных. я имел ввиду порядковый номер спрайта, а ты номер картинки. если в уровне всего около 500 спрайтов, то его номер не может быть более 5120
обновил программку. реализовал чтение переменных: data1-4 и launch байта. это позволило мне сделать: враги расставлены по уровням, предметы, оружие патроны на мультиплеер AmbientSFX, радиус вроде корректно преобразовывет, номер мелодии пока нет. SectorSFX только fix pic number т.е. Gib Object - удаление Explode Object/разрушаемый объект - вроде сделал, но не уверен, что правильно Aplayer(multiplay) - вроде сделал
Сейчас вроде все в вытаскивание сектор-зффектов уперлось. |
|
Всего записей: 208 : Дата рег-ции: Апр. 2009 : Отправлено: 14 Мая, 2014 - 22:30:01 |
|
|
|
|
WWW : Профиль : |
|
Цитата:обновил программку. реализовал чтение переменных: data1-4 и launch байта. это позволило мне сделать: |
Ченить придумал, где эти переменные будут у дюка? |
|
Всего записей: 946 : Дата рег-ции: Янв. 2008 : Отправлено: 15 Мая, 2014 - 22:07:28 |
|
|
|
|
Профиль : |
|
зависит от типа объекта. если это оружие или боеприпасы и launch байт равн 0x50 то в палитру пишем еденицу, и предмет помечается как для мультиплея. если это монстр, то в зависимости от значения того же launch байта пишем в lotag спрайта и монстр появляется на том уровне сложности, каком задумали левел-дизайнеры. если это амбиент, то дата3, номер мелодии, пишем в лотег, а дата2, раудиус, умножаем на десять и пишим в хайтег. ну и так далее и тому подобное) |
|
Всего записей: 208 : Дата рег-ции: Апр. 2009 : Отправлено: 16 Мая, 2014 - 06:11:41 |
|
|
|
|
WWW : Профиль : |
|
Ну впринципе да, чтото можно использовать. Не в курсе, в оригинале переменые xvel-zvel для спрайтов используются? |
|
Всего записей: 946 : Дата рег-ции: Янв. 2008 : Отправлено: 16 Мая, 2014 - 06:57:17 |
|
|
|
|
Профиль : |
|
в xvel какие-то данные есть. yvel/zvel забиты нулями, так что можно сделать вывод, что не используются. |
|
Всего записей: 208 : Дата рег-ции: Апр. 2009 : Отправлено: 16 Мая, 2014 - 09:00:55 |
|
|
|
|
WWW : Профиль : |
|
У меня скоро тоже будет что показать Поднял производительность в 2 раза, а может и выше...зомби стал немного умнее, буду теперь переделывать остальных врагов, и искать глюки |
|
Всего записей: 946 : Дата рег-ции: Янв. 2008 : Отправлено: 16 Мая, 2014 - 10:04:52 |
|
|
|
|
|
Всего записей: 946 : Дата рег-ции: Янв. 2008 : Отправлено: 28 Мая, 2014 - 13:31:34 |
|
|
|
|
Профиль : |
|
в прошлую неделю времени не было совсем, сейчас полегче. бьюсь с sectorSFX и ambientSFX, т.е. со звуковыми спрайтами.
Цитата:Список лучше хранить и загружать в программу из txt файла, так настройка будет более гибкой. |
я сделал как и было предложено, чтение con файла sounds.con. алгоритм простейший: файл парсится на ключевое слово define, по следующим за ним двум словам составляется табличка типа: название звука | его номер
сейчас нужно будет табличку соответствия с оригинальной нумерацией составить. ну и когда со звуками будет покончено, можно будет браться за двери. а то сейчас не интересно, дверь работает, а звука нет)
в целом, из-за парсинга con файлой и двух режимов работы, програмка стала несколько мудрёной по сравнению c blud2b
процесс идет потихоньку) |
|
Всего записей: 208 : Дата рег-ции: Апр. 2009 : Отправлено: 28 Мая, 2014 - 18:55:47 |
|
|
|
|
WWW : Профиль : |
|
А двери тоже можно переделывать программно? В это пока с трудом верится, даже просто алгоритм закрытия придумать сложно )
(Добавление) Таблицу соответствия можно взять тут.... http://rghost.ru/55936180 я сейчас поговорил с empy, он сказал, что не все звуковые эффекты можно будет заменить автоматом....т.к. в оригинале звуковой спрайт имеет 4 звука, у дверей - 2 для открытия и 2 для закрытия....в нашем ТСе мы для этого используем 2 звуковых спрайта
(Отредактировано автором: 28 Мая, 2014 - 21:49:53) |
|
Всего записей: 946 : Дата рег-ции: Янв. 2008 : Отправлено: 28 Мая, 2014 - 21:37:51 |
|
|
|
|
Профиль : |
|
> Таблицу соответствия можно взять тут.... О! это мне порядочно сэкономило времени, теперь можно к дверям приступать
> даже просто алгоритм закрытия придумать сложно я не стану говорить о чем пока не делал, а делал я пока floor door, а там его главное распознать что это имено floor door, присвоить лотаг соответствующий и z-координате пола присвоить z-координату потолка. и дверь работает.
что касается остальных типов, вроде тоже не должно быть проблем. немного возни с координатами, но все решаемо.
> 2 для открытия и 2 для закрытия....в нашем ТСе мы для этого используем 2 звуковых спрайта
проблем со вставкой дополнительных спрайтов по определенным правилам нет. Правда пока нет четкого мнения как выбирать x/y координаты для них.
|
|
Всего записей: 208 : Дата рег-ции: Апр. 2009 : Отправлено: 28 Мая, 2014 - 23:54:59 |
|
|
|
|
WWW : Профиль : |
|
Цитата:проблем со вставкой дополнительных спрайтов по определенным правилам нет. Правда пока нет четкого мнения как выбирать x/y координаты для них. |
Да можно одни и те же координаты использовать, а потом уже вручную разнести, если надо будет, а можно использовать вращающийся вектор и ставить второй спрайт на каком-нить расстоянии в пустое место, предварительно проверив, что 100% находшься в том же секторе, где и основной спрайт.
Цитата:что касается остальных типов, вроде тоже не должно быть проблем. немного возни с координатами, но все решаемо. |
На floor и ceiling двери я тоже делал скрипты, это не сложно....а вот слайд двери мы заменяем вручную, удаляем старую дверь, делаем дверной проем заново, а потом строим там саму дверь (дополнительный сектор)...поэтому просто протащить две вершины до закрытия двери не достаточно |
|
Всего записей: 946 : Дата рег-ции: Янв. 2008 : Отправлено: 29 Мая, 2014 - 07:03:06 |
|
|
|
|
Профиль : |
|
Менять ceiling-floor двери на дюковские и закрывать их не нужно. Дюковские мы уже не используем. Вместо них се69-70, и двери должны оставаться открытыми, как в оригинале.
В принципе, сделать скриптом их тоже нетрудно. Нужно просто поставить в секторе двери 3 спрайта: локер, се и мувер поинт.
Остальные двери, типа двустворчатых или раздвижных, требуют полной переделки вручную.
(Отредактировано автором: 29 Мая, 2014 - 11:52:17) |
|
Всего записей: 311 : Дата рег-ции: Февр. 2011 : Отправлено: 29 Мая, 2014 - 11:50:39 |
|
|
|
|
Профиль : |
|
по поводу звуков. преобразование id звуковых спрайтов я сделал. работает это так. имеется файл sounds.con взятый из con скриптов bloodcm. из него извлекается таблица вида: название звука | номер звука в bloodcm
также имеется файл sounds_old.con созданый на основе выложенной вчера таблички. из него извлекается следующая таблица: номер звука в blood | название звука
название звука явяется связующим элементом, который объединяет записи в общую таблицу вида http://pastebin.com/raw.php?i=UMFD6v3W
т.о. при конвертации на входе имеем id блада, на выходе id bloodcm. |
|
Всего записей: 208 : Дата рег-ции: Апр. 2009 : Отправлено: 29 Мая, 2014 - 12:59:26 |
|
|
|
|
WWW : Профиль : |
|
flanker можешь выложить новый конвертер? Основная работа занимается звуковые спрайты и уровни сложности, раз это все уже есть, значит можно использовать для 3го и 4го эпизода (все двери там уже сделаны) |
|
Всего записей: 946 : Дата рег-ции: Янв. 2008 : Отправлено: 01 Июня, 2014 - 23:53:06 |
|
|
|
|
Профиль : |
|
исходники лежат в репозитории, я ссылку давал: http://sourceforge.net/p/bloodcmhrp/blud2e/ci/master/tree/ собрать можно везде где есть более-менее свежий gcc. SectorSFX там пока реализован только в виде одного спрайта, т.е. случай когда data1, data2 совпадают c data3, data4. вставку спрайта еще только предстоит реализовать. но проблема не в этом. программа в качестве входного файла читает карту из блада. т.е. она не может взять уже полу-готовую карту из дюка и дописать туда свою инфу. Може у тебя есть способ перетащить инфу из одной дюковской карты в другую? в приципе можно попытаться прикрутить функцию стравнения секторов по х/у координатам стен и на основании этого переписывать инфу. но, там, где геометрия изменена, т.е. двери, я просто незнаю как программе показать, что это бывший сектор такой-то. |
|
Всего записей: 208 : Дата рег-ции: Апр. 2009 : Отправлено: 02 Июня, 2014 - 05:41:57 |
|
|
|
|
WWW : Профиль : |
|
Сравнивать дюковские карты не обязательно, пропустим через конвертер карты оригинала, потом выделим оттуда звуковые спрайты и вставим в уже рабочие карты, ничего сложного быть не должно
(Добавление) чето он больше не компилится blub2e.cpp не может найти путь к .h а если компилить сам blub2e.h то куча ошибок
(Добавление) Пришлось подключать <cstdlib>, чтобы прога понимала EXIT_FAILURE и EXIT_SUCCESS
(Добавление) Конвертация E3M5 не получилась, Invalid map format, nothing loaded (code -3). Редактор зависает
(Добавление) Удалось сконвертировать и открыть простенькую карту-коробку Может это поможет разобраться в ошибке http://rghost.ru/56078630
(Отредактировано автором: 02 Июня, 2014 - 08:23:40) |
|
Всего записей: 946 : Дата рег-ции: Янв. 2008 : Отправлено: 02 Июня, 2014 - 07:41:54 |
|
|
|
|
Профиль : |
|
нет, наверно у тебя что-то не так собирается. там теперь сборка идет утилитой make.
твоя коробочка у меня без проблем конвертируется http://fc07.deviantart.net/fs70/f/2014/152/8/e/duke0055_by_flankerus-d7kp9rh.png
и E3M5 в редакторе открывается. а тот файл который у тебя получился SPRITES-DUKE.MAP, он действительно поврежден.
Цитата:равнивать дюковские карты не обязательно, пропустим через конвертер карты оригинала, потом выделим оттуда звуковые спрайты и вставим в уже рабочие карты, ничего сложного быть не должно |
т.е. мне достаточно будет сейчас отконвертировать 3-й, 4-й эпизоды и послать карты тебе?
|
|
Всего записей: 208 : Дата рег-ции: Апр. 2009 : Отправлено: 02 Июня, 2014 - 09:19:12 |
|
|
|
|
Профиль : |
|
Что в итоге получится сконвертировать? Со спавном второго спрайта для двойных звуков нет проблем? Можно ли перенести уровни сложности врагов (там тоже есть нюансы) и мульти-синглплеерное оружие? |
|
Всего записей: 311 : Дата рег-ции: Февр. 2011 : Отправлено: 02 Июня, 2014 - 09:28:40 |
|
|
|
|
Профиль : |
|
добавление второго страйта, займет может строчки три в исходнике програмы, но я еще е тестировал такие объекты. если я для второго спрайта задам те же x/y/z координаты, можно ли в редакторе будет увидеть, что там именно два спрайта? ну так, в целом, коныертируются враги, оружие, снаряжение, амбиент звуки. SectorSFX пока частично, как говорил.
(Добавление) карта e3m5 для примера: http://yadi.sk/d/wyagqpE9Rx5Y6
(Отредактировано автором: 02 Июня, 2014 - 09:41:29) |
|
Всего записей: 208 : Дата рег-ции: Апр. 2009 : Отправлено: 02 Июня, 2014 - 09:39:53 |
|
|
|
|
WWW : Профиль : |
|
Цитата:нет, наверно у тебя что-то не так собирается. там теперь сборка идет утилитой make. |
Я в конечном итоге и собрал прогу с помощью make, а на выходе кривые карты
Цитата:т.е. мне достаточно будет сейчас отконвертировать 3-й, 4-й эпизоды и послать карты тебе? |
На первое время да. Цитата:редакторе будет увидеть, что там именно два спрайта? |
В редакторе этого видно не будет, пока не разнесешь спрайты вручную, но чисто логически, можно будет ожидать два спрайта в зоне сектора двери, а т.к. дверь все равно переделывать, то два спрайта легко будет обнаружить, так что это не проблема.
и да, как empy предлагает, мультиплеерному оружию применяй сразу палитру №1 при конвертации
(Добавление) Кстати, на уровнях есть спрайты с номером 9117, из-за которых игра не запускается, пишет много спрайтов игрока...эти спрайты я обычно удалял, если они тебе нужны, тогда лучше обнуляй им картинку или удалять вообще с уровня
(Отредактировано автором: 02 Июня, 2014 - 11:30:04) |
|
Всего записей: 946 : Дата рег-ции: Янв. 2008 : Отправлено: 02 Июня, 2014 - 11:28:52 |
|
|
|