Помощь - Поиск - Пользователи - Календарь
Полная версия: карта мира
UoKit.com Форумы > Ultima Online : Dev > Работа с клиентом UO
Страницы: 1, 2
kklej
хей, подскажите пожалуйста где можно другую карту скачать и заменить оригинал? я тут нажимал в поиске "новая карта" но чего то не нашол!!
StaticZ
Цитата(kklej @ 27.2.2012, 22:26) *

хей, подскажите пожалуйста где можно другую карту скачать и заменить оригинал? я тут нажимал в поиске "новая карта" но чего то не нашол!!


Карт есть много, но их никто не выкладывает ибо делаются они для сервера самими серверами.. Есть один человек что продает карты, ну и пара более менее глобальных работ, что выложены в открытую знаю:
1) Измененная Карта Malas'а c сервера uoquint
2) Собственная карта Gaia (копирайты хз чьи) - сильно не доделанная карта,
3) Карта "Die Scherbe", автор - eri - Во много раз уменьшенная замена илшинару. К сожалению размер карты примерно с хороший данж.
4) Карта "2 Welten", автор - eri - достаточно креативная карта, но имеет не завершенный характер - полностью отсутствуют данжи, немного пустоват мир и могут быть сложности с размещением домов. Так же она сделана с использованием не стандартных мулов, что тоже может стать проблемой. (мулы кстати сделаны по немецки - с кучей ошибок и через заднее место)
kklej
спасибо за ответ! аа ещё мне как бы надо карта - стандартная, просто, чтобы ещё было дополнительно два острова есть ли такая?
StaticZ
Цитата(kklej @ 27.2.2012, 22:57) *

спасибо за ответ! аа ещё мне как бы надо карта - стандартная, просто, чтобы ещё было дополнительно два острова есть ли такая?
Как бы тогда просто нарисуйте два острова, а не ищите новую...
kklej
отлично! а это правда,что можно Аксисом статику править?
StaticZ
Цитата(kklej @ 27.2.2012, 23:20) *

отлично! а это правда,что можно Аксисом статику править?
Можно, но если вы хотите рисовать острова то вам потребуется редактировать не только статику но и карту а для этого потребуется чтото помощнее например CentrEd+
kklej
спасиб. а вот я скачал то CentrED. чего то приконектитца не могу, пишетца - connection refused.
StaticZ
Цитата(kklej @ 28.2.2012, 0:28) *

спасиб. а вот я скачал то CentrED. чего то приконектитца не могу, пишетца - connection refused.
читайте сентрад и вики на сайте.. я там все на русском языке написал...
kklej
спасиб за прогу! я тут почитал, всё настроил. щас поздно уже, но ещё вопрос пожалуйста. Тоесть можно выкинуть старые проги и пользоватца CentrED'om?
StaticZ
Цитата(kklej @ 28.2.2012, 1:13) *

спасиб за прогу! я тут почитал, всё настроил. щас поздно уже, но ещё вопрос пожалуйста. Тоесть можно выкинуть старые проги и пользоватца CentrED'om?
Вам решать, мы кроме CentrEd+ пользуемся только Fiddler+ (тоже собственная модификация), в другом по надобности нет...
kklej
это правда, что какие то функции CentrED'a работают на runuo, но не работают на сфере? Или это домыслы злые? скажите пожалуйста! У меня сфера.
M@X
Цитата(kklej @ 2.3.2012, 16:27) *

это правда, что какие то функции CentrED'a работают на runuo, но не работают на сфере? Или это домыслы злые? скажите пожалуйста! У меня сфера.

Сендер это отдельный сервер работающий с мулами всех клиентов оси ультимы.

Другое дело, что в стандартных мулах старых клиентов отсутствует множество нужных итемов, текстур и прочего... К примеру "Но драв" итемы позволяющие делать невидимый пол, крышу и т.д...
StaticZ
Цитата(kklej @ 2.3.2012, 17:27) *

это правда, что какие то функции CentrED'a работают на runuo, но не работают на сфере? Или это домыслы злые? скажите пожалуйста! У меня сфера.
Как и сказали выше CentrED это отдельный сервер, ни как не связаный с сферой или ранкой, что работает с мул файлами (картой и статикой). Однако, по ряду причин для серьезной коллективной работы удобно сделать такую связь, т.е. интегрировать или связать с игровым сервером (например для автоматического обновления карт на сервере). При необходимости это делается лично в частном порядке ибо тут нет универсального решения и да проще написать такой код на ранке ибо там полноценный язык программирования позволяющий запустить другой процесс и управлять им. Но опять же данная потребность возникает у тех кто серьезно занимается декорированием глобально переделывая и создавая новые локации. Для остальных это нужно также как интеграция фтп сервера в ранку\сферу (то есть нафих не нужно).

А что касается мулов, то наша версия поддерживает все мулы от SL (пре-альфа) до самого последнего HS, в будущем также в планах сделать поддержку использование текстур и статики из вердаты и патч мулов карт/статики.
EL-GReeN
Появилась идейка подгрузить мапу уо в одну среду разработки игр, может знает кто структуру файлов мапы, какие файлы за что отвечают, или может где то можно почитать про это, направьте пожалуйста в нужном направлении.
StaticZ
Ну я знаю, А можно поподробнее?
Что касается структуры то тут все зависит от клиента и версии, для классика МЛ-СА хорошее пособие исходники UltimaSDK, также входящие в проект Fiddler, в версии вятта можно посмотреть алгоритмы работы с уоп'ами HS клиентов, с анимацией уопошной, что появилась в СА, дела обстоят сложнее. Информации о ней нет, так что пришлось ковыряться, не так давно мне удалось вскрыть формат и извлечь оттуда анимацию, но к сожалению пока не разобрался как правильно работать с палитрами и как следствие абилие артефактов на кадрах, вторая проблема это проблемы с хешами индексов, пока единственное решение мне видится в брутфорсе....

ЗЫ имхо уо слишком тяжелая игра для подобных сред и готовых тайловых движков, так что лучше не тратить на это время вообще, а если интересно то браться за свое двигло (я кстати этим как раз занимаюсь, правда пока без особого энтузиазма в перерывах между работами на сервере)....
Warstone
Цитата(EL-GReeN @ 3.10.2012, 0:41) *

Появилась идейка подгрузить мапу уо в одну среду разработки игр, может знает кто структуру файлов мапы, какие файлы за что отвечают, или может где то можно почитать про это, направьте пожалуйста в нужном направлении.
Для 2.0Х - 6.0Х используются mul файлы. Вообще - подробно о них можно почитать на стратикзе, там было где-то... Я гуглил по UO FileFormat ( http://uo.stratics.com/heptazane/fileformats.shtml )
StaticZ
Цитата(Warstone @ 3.10.2012, 13:48) *

Для 2.0Х - 6.0Х используются mul файлы. Вообще - подробно о них можно почитать на стратикзе, там было где-то... Я гуглил по UO FileFormat ( http://uo.stratics.com/heptazane/fileformats.shtml )

до 5.х какогото клиента если не ошибаюсь была вердата, а это отдельная тема она вообще крайне глючная штука, да и по мне вносит огромную путаницу... в более поздних ее заменили на дефы... что касается описания то там ошибок и косяков пруд пруди, но главное оно совсем не полное и по ходу его чтения вопросов возникает не меньше ответов... так что имхо лучший гайд сурсы уосдк, благо для учебных целей написаны они грамотно (кроме анимации)
EL-GReeN
Ничего серьезного просто ковыряюсь, версия обычная старая от абиса, исходники Ultima.dll от фидлера нашел но там слишком сложно, не понять.
Это правильно?:
Цитата
3.8 MAP0.MUL

This file holds all the base-level terrain, and doesn't look too pretty without the static data.

The map is stored as a 768x512 matrix of blocks. A block is basically a 8x8 matrix of cells. Each individual cell contains data about the tile for that cell, and the cell's altitude. Therefore, the entire map is 6144x4096 individual cells in size.

Blocks are loaded top-to-bottom then left-to-right. Cells are loaded from blocks left-to-right then top-to-bottom.

The formula used to locate an individual CELL in the file is a little complex, since you have to work out what block it is in...

If you refer to the map in blocks, then there's 512 blocks down, by 768 blocks across.

XBlock = Int(XPos/8)
YBlock = Int(YPos/8)
Block Number = (XBlock * 512) + YBlock
MAP0 (37,748,736 bytes)

393,216 [Block]s sequentially, Block = 196 bytes
DWORD header, unknown content
64 Cells
Cell (3 bytes)
0 1 2
Color Alt

UWORD cell graphic (which can be looked up in RADARCOL).
BYTE Altitude (-128..127 units above/below sea level).

На первый взгляд вроде так и есть, 4байта чего то, потом 64ячейки по 3 байта, это блок 8х8 тайлов.
Блоки загружаются сверху вниз, а затем слева-направо. Тайлы загружаются из блоков слева-направо, затем сверху-вниз.
Только не понятно что это значит: 393,216 [Block]s sequentially
StaticZ
Цитата(EL-GReeN @ 3.10.2012, 18:44) *
Ничего серьезного просто ковыряюсь, версия обычная старая от абиса, исходники Ultima.dll от фидлера нашел но там слишком сложно, не понять.
Да нет там ничего сложного, недельку повтыкать и сами потом начнете проповедовать всем карму... Когда пойдете по тайлам и анимации горя в этих гайдах хлебнете, там памоему даже в хуесах и то ошибка )))



Цитата(EL-GReeN @ 3.10.2012, 18:44) *
Это правильно?: На первый взгляд вроде так и есть, 4байта чего то, потом 64ячейки по 3 байта, это блок 8х8 тайлов.
Блоки загружаются сверху вниз, а затем слева-направо. Тайлы загружаются из блоков слева-направо, затем сверху-вниз.
правильно, правда блоки сами грузятся помоему сверзу-вниз и слева-направо.... 4 байта хедера, он ни на что не влияет, ну покрайне мере его влияние выявлено не было.


Цитата(EL-GReeN @ 3.10.2012, 18:44) *

Только не понятно что это значит: 393,216 [Block]s sequentially
Означает ровным счетом то что и написано - последовательность из 393,216 блоков. (512 * 768 = 393,216), но опять же это уже ересь ибо у каждой карты свой размер, да и размер 0 и 1 мапы уже давным давно больше....
StaticZ
Ваше впринципе UltimaSDK и создана для того чтобы упростить жизнь людям, то есть вы можете просто использовать ее в своем проекте и не париться о том как устроенны мулы... просто дергайте АПИ..... есть еще схожий проект - заброшенный OpenUO (интересен тем что ориентирован под WPF и содержит кое какие полезные расширения например графику можно грузить сразу в текстуры директа), но по мне он слишком костляв и не удобен... также как говорил ведем работу над новым проектом UltimaUDK, он подходит к данному вопросу с другой стороны полностью абстрагируясь от модели хранения данных ну и более ориентирована тяжелую работу, т.е. посути это движок а не просто АПИ... если в паскале шаришь есть еще исходни редактора сентрада, там посути своя библиотека работы с мулами...
EL-GReeN
Ошибка с осью Z, написано "-128..127 units above/below sea level" а на самом деле без знаковый байт и чем больше тем глубже.(может в каких то файлах так и есть)
393,216 [Block]s sequentially теперь понятно, сбила с толку запятая (393216)
Идеальный вариант прицепить конечно дллку, но без документации к ним на это способны только програмёры, да и среда не особо мощная может просто не поддерживать что то.
А где можно почитать о UltimaUDK, на какой стадии разработка?
Вроде получилось, теперь бы еще придумать как это покрасивее отрисоватьsad.gif3 блока)
Изображение
StaticZ
Цитата(EL-GReeN @ 4.10.2012, 0:33) *
Ошибка с осью Z, написано "-128..127 units above/below sea level" а на самом деле без знаковый байт и чем больше тем глубже.(может в каких то файлах так и есть)
Я же говорил там ереси в описаниях навалом, но хуже всего ошибки... =) Но вообщем тут все зависит как его читать если как SBYTE то -128..127 если как BYTE то 0-255, но исторически сложилось что на всех серверах используется интервал -128..127, так что это для многих уже привычнее..

Цитата(EL-GReeN @ 4.10.2012, 0:33) *
Идеальный вариант прицепить конечно дллку, но без документации к ним на это способны только програмёры, да и среда не особо мощная может просто не поддерживать что то.
Она с открытым кодом, достаточно проста - один файл - один класс - один мулл (+ несколько общих). В большинстве случае все понятно из названий методов, единственное немного путанно сделана анимация и карта. Для карты надо смотреть TileMatrix он объединяет в себе как мулы статики так и карты, а вот сам Map это уже описание карт и рендинг "миникарты" в битмап, ну а с анимацией не очень хорошо вышло из-за того что они зачем-то растащили ее на разные классы один "просмотрщик" другой "редактор" и между ними надо вечно скакать... )))

ЗЫ а что за среда? советовал бы устроить хард тест оч велика вероятность что у нее будет падение фпс до 0 при большом числе тайлов (в уо очень много тайлов на сцену)... Кроме того камнем предкновения может стать окраска предметов, прозрачность, свет и прочие эффекты.

Цитата(EL-GReeN @ 4.10.2012, 0:33) *
А где можно почитать о UltimaUDK, на какой стадии разработка?
Вернее EssenceUDK (Ultima Developer Kit). Проект молодой, сама идея родилась недели 3 назад... В общем его можно охарактеризовать как движок UO, API для работы с мулами и набор компонентов... Основная цель - предоставить гибкий и удобный инструментарий для создания собственного ПО и контролов для работы с УО. На данный момент параллельно с ним ведется разработка на его базе библиотеки контролов, аналога Fiddler'а и генератора карт, в будущем также в планах портирование редактора карт CentrEd+ и если движок окажется достаточно быстрым то и альтернативный клиент... Все пишется на C#4.0 под WPF. Почитать можно будет у нас на сайте dev.uoquint.ru, когда появится что-то достаточно завершенное, пока не вижу смысла замарачиваться т.к. интерес представляет только для разрабов которых всеравно нет (((

ЗЫ пара скринов на затравку:
Изображение Изображение
Все это приложение написано 3мя строчками кода:
Код
                // now we need create base uo data storage class, it base class we will use to do any work with uo data, so generally we need to store it as static.
                // but just now for testing we dont do it. (Remember shilw we will write controls in EsseceUDK.Add-ins we need to get manager at EsseceUDK assembly)
                var manager = new UODataManager(new Uri(clients[0].DirectoryPath), UODataType.ClassicAdventuresOnHighSeas, UOLang.Russian, false);

                // ok, we get manager just now let get tiles and set them as sourse to our list. Yeh, it's really simple)
                tileItemView1.ItemsSource = manager.GetItemTile(TileFlag.Wall); // lets get all walls to look throw

                // just now we use same souce for binding to differen controls. So we represent different data viewer for same data.
                var lands = manager.GetLandTile(TileFlag.None).Where(t => t.TileId < 1000); // just now we get first 1000 valid lands for testing (we dont take care what is this)
                tileLandView1.ItemsSource = lands;
                tileTexmView1.ItemsSource = lands;

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

В коде выше к свойствам исоточника данных контролов tileItemView1 и tileLandView1 просто присваиваются колекиции описывающие тайлы, пример модели объекта LandData. Как видно объединяет в себе данные из тайлдаты, артмула, текстмапов, клилока и все это еще модифицированное дифами при загрузке... Собственно также идет и редактирование просто меняем нужное нам свойство и все автоматом сохраняется....
Код
    public sealed class ModelLandData : UOBaseViewModel, ILandTile, ILandData
    {
        #region Declarations
        private readonly ILandTile _data;
        #endregion

        #region Properties
        public uint TileId { get { return _data.TileId; } set { _data.TileId = value; RaisePropertyChanged(() => TileId); } }
        public bool IsValid { get { return _data.IsValid; } }
        public ISurface Surface { get { return _data.Surface; } set { _data.Surface = value; RaisePropertyChanged(() => Surface); } }
        public ISurface Texture { get { return _data.Texture; } set { _data.Texture = value; RaisePropertyChanged(() => Texture); } }
        public string Name { get { return _data.Name; } set { _data.Name = value; RaisePropertyChanged(() => Name); } }
        public TileFlag Flags { get { return _data.Flags; } set { _data.Flags = value; RaisePropertyChanged(() => Flags); } }
        public ushort TexID { get { return _data.TexID; } set { _data.TexID = value; RaisePropertyChanged(() => TexID); } }        
        #endregion

        #region Ctor
        public ModelLandData(ILandTile data)
        {
            _data = data;
        }
        #endregion
    }
EL-GReeN
Цитата
3.8 MAP0.MUL

This file holds all the base-level terrain, and doesn't look too pretty without the static data.

The map is stored as a 768x512 matrix of blocks. A block is basically a 8x8 matrix of cells. Each individual cell contains data about the tile for that cell, and the cell's altitude. Therefore, the entire map is 6144x4096 individual cells in size.

Blocks are loaded top-to-bottom then left-to-right. Cells are loaded from blocks left-to-right then top-to-bottom.

The formula used to locate an individual CELL in the file is a little complex, since you have to work out what block it is in...

If you refer to the map in blocks, then there's 512 blocks down, by 768 blocks across.

XBlock = Int(XPos/8)
YBlock = Int(YPos/8)
Block Number = (XBlock * 512) + YBlock
MAP0 (37,748,736 bytes)

393,216 [Block]s sequentially, Block = 196 bytes
DWORD header, unknown content
64 Cells
Cell (3 bytes)
0 1 2
Color Alt

UWORD cell graphic (which can be looked up in RADARCOL).
BYTE Altitude (-128..127 units above/below sea level).

Помогите вычислить номер тайла в блоке, что то не доходит как это делается.
Блок 8х8 загрузить получилось:
Код

XBlock=floor(1415/8) // Х блока
YBlock=floor(1700/8) // У блока
BlockNumber=(XBlock * 512) + YBlock //номер блока

for (i=0;i<=195;i+=1){//1 блок = 196 байтам, цикл счетчик для чтения 196 байтов
file_bin_seek(map0,(BlockNumber*196)+i)//сдвиг метки чтения в файле
data[i]=file_bin_read_byte(map0) //чтение побайтово в массив
}

cnt=6
for (ii=1;ii<=8;ii+=1){
for (iii=1;iii<=8;iii+=1){
  tile[iii,ii]=data[cnt]
  cnt+=3
}
}

Результат массив tile[iii,ii] с высотой тайлов всего блока, но как определить высоту у определенного тайла?
StaticZ
Цитата(EL-GReeN @ 22.11.2013, 21:28) *

Помогите вычислить номер тайла в блоке, что то не доходит как это делается.

Результат массив tile[iii,ii] с высотой тайлов всего блока, но как определить высоту у определенного тайла?

Блок это 8х8 тайлов, т.е. грубо говоря хедер (4 байта) и одномерный массив из 64 структур описывающих тайлы в этом блоке. Т.е. для тайла с координатами X,Y (от 0 до 7) индекс структуры в загруженном массиве равен 8 * X + Y (или 8 * Y + X - уже не помню). Сама структура каждого тайла состоит из 3х байт, где первые два байта это айдишник ленды из арт мула (от 0 до 0х3FFF), а последний байт собственно и есть высота. Значение хедера не выявлено, так что можете его просто игнорировать, хотя если вы хотите пересохранять мулы поли коректнее сохранять значения хедеров чтобы сохранить все в первозданном виде. Ну а дальше уже идет математика при помощи операций деления (/) и остатка от деления (%) определяются нужные вам координаты внутри блока.
К примеру для тайла с координатами XPos, YPos:

BlockIdx = XPos * 64 + YPos / 8
TileIdx = 8 * (X % 8) + Y % 8
EL-GReeN
XBlock=floor(1415/8) // Х блока
YBlock=floor(1700/8) // У блока
BlockNumber=(XBlock * 512) + YBlock //номер блока
BlockNumber==90324

8 * Y + X //тайл внутри блока х-2, у-1 нумерация 0-7
==10 //верно

BlockIdx = XPos1415 * 64 + YPos1700 / 8 //BlockIdx это номер блока?
BlockIdx==90772 //не совпадает с тем что выдает оригинальная конструкция с BlockNumber

TileIdx = 8 * (Y1700 % 8) + X1415 % 8 //номер внутри блока, нумерация х 0-6143 у 0-4095, то что нужно было)
TileIdx==39//верно

Спасибо!
StaticZ
Цитата(EL-GReeN @ 23.11.2013, 20:59) *

BlockIdx = XPos1415 * 64 + YPos1700 / 8 //BlockIdx это номер блока?
BlockIdx==90772 //не совпадает с тем что выдает оригинальная конструкция с BlockNumber

Спасибо!

Всегда пожалуйста. Насчет BlockIdx верно эт номер блока. Виноват - не подумал увлекся математикой и забыл про округления, сократив выражение из-за чего и ошибки. Это тоже что вы и написали: BlockIdx = XPos / 8 * 512 + YPos / 8
EL-GReeN
Как клиент УО сглаживает ландшафт?
У меня вот такие ужасы получаются:
Изображение

Может кроме высоты тайлов есть еще высоты углов тайлов где то в файлах?

Пример алгоритма ужаса:
Верхний угол это: (X координата тайла в мире) (Y координата тайла в мире - 24 + (средняя величина высоты текущего тайла и тайла выше / 5))
StaticZ
Чето вы в какую-то ересь подались. Все куда проще - высота тайла это высота верхнего угла грида поверхности, т.е. чтобы найти координаты всех тайлов - надо смотреть высоты соседних тайлов. Инкримент по Z если мне память не изменяет равен 4 пикселям. Что касается сглаживания самих тайлов то там какой-то особый алгоритм - там рисуется все ручками через GDI\DirectDraw, причем так что острые углы немного сглаживаются, чтобы понять о чем я - сравните скрины например сентрада и клиента - там на границах перехода тайлов в текстуры заметно отсутствие сглаживания. Но для начала можно на сглаживание забить, если сделаете без него будет уже круто -)
EL-GReeN
Я наверно плохо объяснил про какое сглаживание, сглаживание ландшафта тайлов, а не тукстур.
Сейчас правильно считываются и отрисовываются тайлы используя текстуру и высоту, в 2D, то есть глобально есть только X Y без координаты высоты Z, высота эмитируется прибавлением высоты тайла к его координате Y(вертикаль).
При отрисовке текстуры отдельного тайла используются 4 точки(1я верх, 2я правая, 3я нижняя, 4я левая, это 4 угла тайла), каждая с XY рассчитанные от глобальных координат тайла.
(глобальные координаты не то же самое что XY тайла в уо, например X если грубо это количество тайлов по горизонтали * 48, и используется для отрисовки и удобства некоторых вычислений)
1 тайл состоит из:
XY в UO
XY глобальные в движке
Текстуру
Высоту
Этот набор расфасован по массивам, но одновременно в массивах находятся только тайлы которые видно.
Без сглаживания ландшафта это выглядит так(Брит банк):
Изображение

Сделал как вы написали, для текущего тайла высота каждой отдельной точки из 4х это среднее от высоты соседних тайлов(1+3):
Изображение

В честь этой маленькой победы smile.gif скомпилировал результат (управление на стрелках): http://yadi.sk/d/1mN6r6B_DKv2D
Заодно можно сверить fps, у меня в 800х600 - 51, это при том что оно не оптимизировано.
EL-GReeN
Что добавили в новые map0.mul?
Просто вот подгрузил от МЛ а она там больше (85мб вместо 37мб) и что странно работает так же вроде.

Еще вопрос про самую проработанную map0.mul без дырок с вшитыми патчами, где бы на опыты такую взять?
StaticZ
Цитата(EL-GReeN @ 27.11.2014, 15:19) *

Что добавили в новые map0.mul?
Просто вот подгрузил от МЛ а она там больше (85мб вместо 37мб) и что странно работает так же вроде.
Чего-то Вы путаете она 89 915 392 байт, вместо 77 070 336. Ничего там не добавили просто изменили размер с 768 x 512 блоков до 896 x 512. Работает также т.к. блоки идут сначала по X, а потом по Y, в результате у вас просто не считывается добавленный кусок справа.

Цитата(EL-GReeN @ 27.11.2014, 15:19) *
Еще вопрос про самую проработанную map0.mul без дырок с вшитыми патчами, где бы на опыты такую взять?
Не сказал бы что она самая проработанная, скорее даже на оборот - со временем она стала самая корявая. О каких дырках вы говорите я вообще не понял, ну а вшить диф патчи в мулы можно при помощи того же фидлера. В принципе можно и самому сделать, благо там делать нечего - считываем idx и блоки, карт\статики и патчей, для карт тупо замещаем блоки, а для статики добавляем в конец, обновляя при этом оффсеты ну и конечно обновляем данные в idx таблице. Ну а дальше по хорошему надо еще дефрегментацию сделать, можно тупо пересохранить и пересчитав офсеты ну или при помощи того же фидлера.


Цитата(EL-GReeN @ 26.11.2013, 9:58) *
В честь этой маленькой победы smile.gif скомпилировал результат (управление на стрелках): http://yadi.sk/d/1mN6r6B_DKv2D
Заодно можно сверить fps, у меня в 800х600 - 51, это при том что оно не оптимизировано.
Безумно мало, даже если рисовка идет стандартными средствами GDI. Основная нагрузка на рендер идет за счет статики и анимации. Вообще если речь идет про GDI, DirectDraw или что-то в этом роде, то обязательно нужна частичное обновление экрана иначе никакое железо не потянет это. Ну а если это openGL или Direct3d, то у вас явно чето не то при рендинге, типа постоянного создания текстур.
EL-GReeN
Цитата(StaticZ @ 27.11.2014, 18:46) *

Чего-то Вы путаете она 89 915 392 байт, вместо 77 070 336. Ничего там не добавили просто изменили размер с 768 x 512 блоков до 896 x 512. Работает также т.к. блоки идут сначала по X, а потом по Y, в результате у вас просто не считывается добавленный кусок справа.

Не сказал бы что она самая проработанная, скорее даже на оборот - со временем она стала самая корявая. О каких дырках вы говорите я вообще не понял, ну а вшить диф патчи в мулы можно при помощи того же фидлера. В принципе можно и самому сделать, благо там делать нечего - считываем idx и блоки, карт\статики и патчей, для карт тупо замещаем блоки, а для статики добавляем в конец, обновляя при этом оффсеты ну и конечно обновляем данные в idx таблице. Ну а дальше по хорошему надо еще дефрегментацию сделать, можно тупо пересохранить и пересчитав офсеты ну или при помощи того же фидлера.
Безумно мало, даже если рисовка идет стандартными средствами GDI. Основная нагрузка на рендер идет за счет статики и анимации. Вообще если речь идет про GDI, DirectDraw или что-то в этом роде, то обязательно нужна частичное обновление экрана иначе никакое железо не потянет это. Ну а если это openGL или Direct3d, то у вас явно чето не то при рендинге, типа постоянного создания текстур.

Так написано в свойствах 85,7 МБ (89 915 392 байт), по блокам понятно, спасибо.
http://uo.stratics.com/heptazane/fileformats.shtml#3.8 - "MAP0 (37,748,736 bytes)"

Насчет проработанности не имел ввиду что она самая проработанная. Из тех что есть в природе на разных шардах какая самая качественная фелюка? или можно взять с последней версии офф клиента где еще использовались мулы.
Раньше часто встречались текстуры тайлов не на месте(выглядело именно как дырки), или кривости высоты.
StaticZ
Цитата(EL-GReeN @ 1.12.2014, 18:05) *

Так написано в свойствах 85,7 МБ (89 915 392 байт), по блокам понятно, спасибо.
http://uo.stratics.com/heptazane/fileformats.shtml#3.8 - "MAP0 (37,748,736 bytes)"

хрень там написана. Посчитайте сами 512х768х196 (число блоков на размеры одного блока) = 77,070,336. но не как 37 мб... Вообще в том гайде ошибок дохрена, даже на уровне описания форматов. Уже не помню где именно но пару крупных ляпов и ошибок я там в свое время находил. Так что советую относиться к нему несколько критично, а не брать все слепо на веру )



Цитата(EL-GReeN @ 1.12.2014, 18:05) *
Насчет проработанности не имел ввиду что она самая проработанная. Из тех что есть в природе на разных шардах какая самая качественная фелюка?
Гм... Ну те кто не занимаются декором\строительством у тех карта ничем не отличается от осишной, а кто занимается... тут уже не совсем фелюка и вопрос скорее вкусов )


Цитата(EL-GReeN @ 1.12.2014, 18:05) *
Раньше часто встречались текстуры тайлов не на месте(выглядело именно как дырки), или кривости высоты.
Ну ети ляпы из-за того что ОСИ сначала решила сделать ставку под 3д клиент а потом под КР и енчант... Под классик скорее всего ресурсы получаются тупым конвертированием... Так что исходя из этого в древних клиентах карта должна быть получше, однако них карта отличается от той что в новых.... Вообще вопрос странный - если вы делаете для игроков\админов то они полюбому будут брать мулы используемые на том сервере, т.к. лучше кривые текстуры чем спотыкаться о невидимые препятствия... Если же вы делаете собственный сервер, то надо отталкиваться от того что именно вам нужно, да и в принципе такие мелочи наверное проще самому подправить со временем чем сидеть изучая мулы сотни клиентов )
StaticZ
Цитата(EL-GReeN @ 26.11.2013, 9:58) *
В честь этой маленькой победы smile.gif скомпилировал результат (управление на стрелках): http://yadi.sk/d/1mN6r6B_DKv2D
Заодно можно сверить fps, у меня в 800х600 - 51, это при том что оно не оптимизировано.


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

Изображение
EL-GReeN
Я вот в октябре импортнул в юнити карту высот, дальше пока не продвигаюсь, жду локализации документации юнити(ну по крайней мере так самооправдываюсь в лени).
Если подумать, то получается делать уо2 из ресурсов уо не приемлемо если подразумевается монетизация, потому что права как ни крути у кого то есть на уо(вроде у EA).
Значит нужно делать что то похожее, очертания мира, изменение названий всего, свои или свободные ресурсы, и что бы это нечто выглядело более менее придется разбираться с шейдерами и своим движком, или использовать юнити, свой движок слишком сложно делать с современной картинкой.
Изображение
StaticZ
Цитата(EL-GReeN @ 16.1.2015, 18:21) *

Я вот в октябре импортнул в юнити карту высот, дальше пока не продвигаюсь, жду локализации документации юнити(ну по крайней мере так самооправдываюсь в лени).
Если подумать, то получается делать уо2 из ресурсов уо не приемлемо если подразумевается монетизация, потому что права как ни крути у кого то есть на уо(вроде у EA).
Значит нужно делать что то похожее, очертания мира, изменение названий всего, свои или свободные ресурсы, и что бы это нечто выглядело более менее придется разбираться с шейдерами и своим движком, или использовать юнити, свой движок слишком сложно делать с современной картинкой.
Изображение
Если делать свою игру то по любому достичь хорошей картинки будет сложно и дорого, ведь помимо движка еще нужно нарисовать тысячи, если не десятки тысяч моделей и текстур, и анимировать сотни из них. Причем все нужно оптимизировать, на что уйдет куча времени если нет реального опыта подобных разработок, ибо не один движок не потянет кучу полигонов. А если делать 2д уровня того же UO то придется не слабо повозиться с движком, ибо сейчас движки не рассчитаны под такое засилие спрайтов, как в UO (видел я такую UO на юнити 1-2 фпс без шуток). А вместе с игрой придется и свой сервер писать еще, для комерческого использования ни ранка ни сфера не прокатят - они тупо не смогут выдержать приличный онлайн. Ну и главное в результате всего трудозатраты могут даже и не окупиться, у подобного проекта вообще высокий шанс свернутся еще до релиза...

Кстати графика того же же дико популярного майнкрафта на фоне UO смотрится как полное убожество. Есть и куча других ММО с графикой куда хуже UO и пользующихся популярностью. В прочем и современный клиент UO ситуацию почти не изменил, так что проблема не в графике (хотя да без спорно классический клиент давно покрылся слоем пыли, виной чему низкие разрешения и отвратный GUI).
Warstone
Раскопайте исходники Iris'а. Думаю что много мешей там уже есть.
StaticZ
Цитата(Warstone @ 16.1.2015, 23:58) *

Раскопайте исходники Iris'а. Думаю что много мешей там уже есть.
Проще самом клиент написать с нуля чем разобраться в сорсах ирисах xD Мнение кстати не только мое но и всех знакомых кто пытался там ковыряться...
EL-GReeN
Есть какой софт в котором можно получить полную карту в виде .bmp без высоты и статики?
(при тайле в 32 получится примерно 196608х131072 пикселей)
StaticZ
Цитата(EL-GReeN @ 23.1.2015, 20:43) *

Есть какой софт в котором можно получить полную карту в виде .bmp без высоты и статики?
(при тайле в 32 получится примерно 196608х131072 пикселей)
А для чего оно Вам? это ни много ни мало а 98 GB, если все же исхитриться и сохранить в 16 битах (не уверен позволяет ли это формат), то выйдет 49 GB. Ни одна 32х разрядная программа в принципе не сможет открыть такой огромный файл, да и х64 скорее всего впадут в ступор, т.к. тупо не рассчитаны такое. Я сейчас сам мучаюсь уже с файлами 12288х8192, даже при этом редакторы подвисают и периодически вылетают, да и оперативы жрут по 30 GB....


Ну а так вообще можно сделать при помощи Essence UDK (скрины из которого кидал выше, собственно как раз для этого я его этим и занимался), есть как гуищный интерфейс так и через консольное приложение. Позволяет сохранять любую область карты в повернутой проекции с разрешением от 1х1 до 16х16 пикселей на тайл (больше нельзя из-за оптимизации отрисовки, что сразу сжимает тайлы в 2 раза, для устранения артефактов от поворота без интерполяции). Если нужен не повернутый вариант, то либо можно потом повернуть в любом ПО по работе с изображениями на 45 градусов ну или при желании сделать по аналогии (там по сути идентично все, нужно лишь пересчитать координаты блоков и заменить вызовы методов плоского рендера на аналогичные для Oblique)..

Была также какая-то древняя тулса MapRender или что-то в этом роде, но помниться она крайне капризная и часто выдает какой-то треш, то одно не прорисовывает то другое, в одном разрешении нормально в другом черные дырки и тд. В свое время замучался кое как удалось отрендерить ей кусок карты, но замучался )


Ну а что касается получение карты без статики то либо самому немного подправить ручками либо просто подсунуть пустую статику (если лень замарачиваться можно тупо сгенерить пустой IDX файл нужного размера через EssenceUDK.Tools)
Sirocco
http://www.youtube.com/watch?v=kGYR2qBNUXQ
Ну теперь можно и картографию сделать нормальную.

А еще зум.
http://www.youtube.com/watch?v=ZeWUBEPnSqE
StaticZ
Цитата(Sirocco @ 25.1.2015, 1:34) *

http://www.youtube.com/watch?v=kGYR2qBNUXQ
Ну теперь можно и картографию сделать нормальную.

А еще зум.
http://www.youtube.com/watch?v=ZeWUBEPnSqE

Что за клиент? Iris 2 ?
M0rBiT
похож на Чешский сервер Endor smile.gif

У них там весь мир изменен )

http://screens.endor.cz/
StaticZ
Цитата(M0rBiT @ 25.1.2015, 17:52) *

похож на Чешский сервер Endor smile.gif

У них там весь мир изменен )

http://screens.endor.cz/

Причем тут сервер? на скринах там явно класик клиент, а тут явно нет. Судя по нижней полосе он напоминает Iris 2, но на сколько помню там не было зума... Хотя хз все может быть...
M0rBiT
Цитата(StaticZ @ 25.1.2015, 18:07) *

Причем тут сервер? на скринах там явно класик клиент, а тут явно нет. Судя по нижней полосе он напоминает Iris 2, но на сколько помню там не было зума... Хотя хз все может быть...


Ну а вдруг) разрабы эндора мудрят rolleyes.gif
Sirocco
Там же ссылки даны на сайт, скачайте клиент, зарегистрируйте. Поиграйте.

что еще я нашел интересного в этом клиенте/сервере:
- меню которое показывает метки кол-ва мобов рядом.
- дополнительные слоты для размещения используемых предметов.
- угол обзора, т.е. за стенами не видны предметы и нпс
- есть инфо даже по статичным предметам
- клиент может показывать графику из интернета.
- возможность зума
- оригинальная картография, работа с картами
- любой размер экрана выбирается прямо из настроек!
- при наведении на гамп появляется картинка, ну это тот же тултипс, но там еще бегущая строка есть.
- 4 иконки для выбора комплектов одежды, которые одеваются почти мгновенно.


глюки которые я заметил
- чар разбегается при изменении скорости движения (какая-то лунная походка получается)
- при изменении мелодии зачем-то идет инфа в журнал
- при заходе в дверь его жутко дергает
- мессаджи от кликов подолгу висят в воздухе
- прилоченные предметы можно двигать... т.е. они активны, но возвращаются назад.
Aimed
Цитата(EL-GReeN @ 26.4.2017, 15:33) *


Жаль только что с анимациями ничего не сделать.
EL-GReeN
Вот что что а анимации в юньке супер, я думал что например совместить бег и одновременно анимация каста руками сложно и геморно, но нет, посмотрел гайд на ютубе все понятно(там типа слой задается на определенные кости, тупо кликами).
Ну и + бесплатной качественной анимации много в том же ассет сторе.

Проблемы могут быть с не гуманоидными мобами, наверно.

Или ты про анимацию из УО? это просто забей, 2к17й же.
Aimed
Цитата(EL-GReeN @ 26.4.2017, 19:46) *

Вот что что а анимации в юньке супер, я думал что например совместить бег и одновременно анимация каста руками сложно и геморно


Это ж будет по идиотски выглядеть.

Я имел в виду анимации из УО, да. Но уже понял что ты ничего не конвертировал
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.