Разработка и ромхакинг > Ромхакинг и программирование
[SMD] хакинг Dune: The Battle for Arrakis
<< < (436/447) > >>
SeregaZ:
альтернативные события Великой Отечественной 41-45 годов.
SeregaZ:
о редакторе карт и миссий:

Lipetsk:
SeregaZ, респект, продолжай.
SeregaZ:
по просьбам трудящихся надо зашпилить статью о формате файла миссии.
заголовок часть первая, нафиг не нужная, но она есть:состоит из трех частей - надписей, точнее названия файлов, которые по идее картинки, которые выпрыгивали бы в конце при победе или поражении и так-же картинка брифинга. в оригинал почти не играл, посему не помню как там и что. а у нас все просто:
00 00 00 0E 4C 4F 53 54 42 49 4C 44 2E 57 53 41 00 00
взято из первой миссии атрейдисов. итак
00 00 - номер, некий id чтоль.
00 0E - размер строчки текста - 14 символов в данном случае
4C 4F 53 54 42 49 4C 44 2E 57 53 41 00 00 - сам текст LOSTBILD.WSA

по такому-же принципу идут эти самые id 00 01 и 00 02 - айди, размер, сама строчка


заголовок часть вторая, нужная:00 03 00 00 - опять айди так сказать - 00 03 и значение 00 00 - 03 это таймер. соответственно значение ноль.

00 04 00 01 - Map Scale - типа пометка, что карта будет использована 32х32, то есть 00 01 значение. ежели бы там было 00 00 - значит 64. (128 пока пролет)

00 05 04 C8 - 00 05 айди это курсорная позиция при старте игры. значение 04 С8 следует понимать так:
$4С8 = 1224 / 64 = 19 (нас интересуют целые, с округлением вниз) так вот 19 это значение по вертикали, координата Y
64 * 19 = 1216
1224 - 1216 = 8 - эта 8 это координата по X. в результате получается 8:19 и там рисуется курсор, который мы видим при старте карты в игре.

00 06 04 C8 - 00 06 - это айди экрана. то есть курсор то это одно, а координаты экрана это другое. причем не нужно смотреть, что координаты вроде те-же самые. это как бы середина экрана. надо сминусовать 2-3, точно уже не скажу - и тогда это будут координаты левого верхнего угла экрана. ну не суть. можно впендюрить такие-же как у курсора - не ошибешься как говорится.

00 07 00 04 - 00 07 это флаг поражения. значение 00 04 следует читать в бинарном формате %00000100 - то есть каждый бит это включение\выключение нужных условий для поражения. и в данном случае это видимо потеря зданий
потеря юнитов и зданий
потеря зданий союзника
потеря зданий
закончилось время
потеря здан, юниты и союзн здания
добыча врагом спайса
потеря союзн юнитов и зданий

00 08 00 06 - 00 08 тож самое, только что флаг победы. и 6 в данном случае: %00000110 - уничтожить все здания и юниты врага либо добыть спайс
унич враж здания
унич враж здания и юниты
добыть спайс
закончилось время
унич враж здания и добыть спайс
унич враж юниты
унич враж юниты и добыть спайс
унич враж здания харконенов
унич враж здания атрейдисов
унич враж здания ордосов
унич враж здания фрименов
унич враж здания сардукаров

остальное:до этого момента они как бы шли по порядку 00 00 до 00 08. теперь история меняется.
01 53 00 01 - 01 означает принадлежность чему-то там. 53 команда номер карты. 00 01 - само значение. первая карта.
01 42 00 03 х1 х1 х2 х2 х3 х3 - в этой карте мин как бы нет. но они типа есть и 42 символизирует об этом. 00 03 - количество мин. х1 х1 и далее по 2 байта - это координаты друг за другом этих трех мин. координаты по той-же схеме - делить на 64 - целые это Y, остаток Х

команды начинающиеся с 02, 03, 04, 05, 0B - это настройки домов. где 2 hark, 3 atr , B frm, 4 ordos, 5 sard. то есть первый байт это номер дома. второй - определяет что это за параметр дома.
$51 лимит спайса - сколько надо добыть, если флаг победы включен добыть спайс
$43 кредиты - стартовые деньги
$4D лимит юнитов
$42 человек играет этим домом или AI. скажем харконены для человека 02 42 00 48. а атрейдисы 03 42 00 $43 - AI
команды по сути 4 байтовые. типа 02 51 01 00 - харконены имеют настройку лимит спайса $100 (256)


06 - там где первый байт 06 - это настройки старпорта. какие юниты там будут продаваться и в каком количестве.
06 04 00 01 - старпорт 06, 04 - пехотинец кажись, 00 01 - в количестве одна штука

07 - группы. компьютер строит эти самые группы и отправляет в атаку пачкой. нежели тупо по одному на убой по мере готовности.
07 01 00 00 00 4E 00 46 00 02 00 04
07 - группа
01 - некий свой внутренний номер 01, 02, 03 по счету...
00 00 - дом. 00 00 харк, 00 01 атр, 00 02 орд, 00 03 фрм, 00 04 сард - следует заметить что коды домов отличаются от тех, что были в настройках домов.
00 4E - тип атаки. 00 4E нормал, 00 4B камикадзе. в чем суть без понятия.
00 46 - тип группы. 00 46 foot, 00 57 wheel, 00 54 track. жирность группы определяет какая попрет в атаку
00 02 - минимальное количество в группе
00 04 - максимальное количество в группе

08 - юнит
08 0B 00 03 00 19 01 00 02 FC 00 00 00 04
0B - внутренний номер по счету
00 03 - дом
00 19 - номер юнита в списке из 32 юнитов. и 19 в хексе это 25 в рублях. а 25 у нас... эээ... червяк чтоль :) с нуля счет начинается. не с 1.
01 00 - здоровье. и это вроде в процентах. $100 - это 256. типа 100% - полное хп кароче.
02 FC - координаты по той-же схеме.
00 00 - угол поворота. у червей нет углов, так что 0 для всех положений.
00 04 - поведение юнита. может быть охранять, охранять местность, засада и охота. для червя понятно охота. сранно... охота это вроде 11 то есть $0B. впрочем это я смотрю кажется 3 миссию. там черви как бы есть, но не жрут. 04 это охранять местность.

09 здания.
их бывает два штуки.
09 49 - нормальный режим
09 49 00 01 hh hh nn nn hp hp xy xy
в длинном 00 01 - внутренний свой айди по счету 1, 2, 3, 4...
hh hh - дом
nn nn - номер здания по счету. типа 00 02 дворец, 00 03 машинный завод и так далее по порядку
hp hp - количество жизней
xy xy - координаты по старой схеме
09 47 - укороченый
09 47 xy xy hh hh nn nn
xy xy - координаты
hh hh - дом
nn nn - номер.
укороченный потому и укороченный что здесь либо одиночный фундамент - 0, либо четверной - 1, либо стена. 15 чтоль или какая там стена по счету. все остальные домики в длинном формате


0A десант.
0A 01 00 00 00 04 00 07 0A 00
01 внутренний айди по счету 1, 2, 3, 4...
00 00 дом
00 04 юнит. 4 это солдат по порядку в списке из 32 юнитов
00 07 где происходит респаун. 0-5 рандом (не ясно что за рандом и почему их целых 6 вариантов), 6 у врага на базе, 7 у своей базы. начиная с 8 вроде как точные координаты. по старой схеме.
0A таймер
00 рипит. если 00 - один раз, 01 - два, 02 - три и так далее

и в конце файла FF FF - как ежик ходит фыкает, когда его тревожат... вот так и файл миссии фы фы фы фы.

тут надо ремарку сделать. в случае 32х32 карты - можно ставить вплотную к краю здания. в случае 64х64 - должен быть обязательно отступ на 1 клетку от краев. потому что игра съест эти квадраты. то есть размер карты получается 62х62.
SeregaZ:
итак. пока не забыл о кнопках в редакторе миссий:

1. левая кнопка мышки...
- при выбранном каком-либо юните или здании из списка внизу - рисует этого самого юнита или здание на карте. (зажатие кнопки работает на юнитах, но не работает на зданиях)
- если никакой пункт для рисования не выбран, то в зависимости от режима - здания или юниты - производит селект здания или юнита.
- если бы заселекчен юнит или здание, и был клик левой в любом пустом месте - произойдет анселект этого юнита или здания.

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

3. средняя кнопка мышки, что под колесиком...
- в зависимости от режима рисования - здания или юниты - путем зажатия этой кнопки включает режим ластик, и сносит либо юниты либо здания под курсором. то есть зажал и стираешь.

4. колесико мышки...
- если нет селекта юнита - происходит скролл карты. в основном по Y. чтобы начать скролить по X - надо спустить мышку на горизонтальный скроллбар и начать крутить колесико мышки, либо кликать левой про скролл бару.
- если был селект юнита и происходит кручение колесика мышки, то будет меняться угол расположения юнита. (спорная фича из-за привычки пользователя крутить колесиком скролл веб страниц. но мне очень хотелось крутить угол юнита колесиком мышки. прикрутить дополнительный флаг нажатия Crtl не получилось. канвас не поддерживает, по всей видимости, подобного события. хотя возможно сделаю в опциях галку отключения прокрутки угла юнита колесиком. хотя надо еще продумать как это отключать.) зажат левый Ctrl - происходит изменение угла выбранного юнита.

5. правый Ctrl, на время зажатия этого самого Ctrl, включает режим отображения полосок HP и тип поведения AI юнитов на карте.


на панели есть два гаджета для управления углом и количеством HP. когда нет какого-либо селекта юнита или здания, то изменение этих параметров производит глобальное изменение угла или HP. то есть выставил какие-то углы или HP, после начинаешь рисовать новых юнитов или здания - то они все имеют установленное HP или угол. если же был селект юнита, к примеру, то изменение параметров в этих гаджетах производит изменение угла или HP только заселекченного юнита.


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


для редактора ландшафта предусмотрена галка отображения всех метатайлов. при включении её - будут доступны для выбора все возможные метатайлы. однако не все из них могут быть использованы. как известно (не всем возможно) в файле карты всего 1 байт информации ответственен за номер метатайла. напомню - 1 байт это максимальное число 255. а всего метатайлов 320 штук. выходит только первая часть из этой бригады может быть использования для рисования ландшафта. однако я все равно сделал эту галку. просто подобные вещи позволяют несколько разнообразить ландшафт. например у одного из ромхакеров в ландшафте указаны метатайлы стен. своего рода развалины можно нарисовать на карте. и проблемой, а может быть наоборот бонусом - является то, что их нельзя уничтожить. юниты не будут наводится (скорей всего) на подобные стены и не смогут проехать по ним. своего рода неуничтожимые и непреодолимые развалины древних :) это конечно больше баг, чем фича. но это можно использовать в своих ромхаках. поэтому сделал такую галку. просто следует держать в уме, что метатайлы более 255 номера будут рисоваться не верно. точнее вместо выбранных в игре будут совсем другие.


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

SeregaZ:
однако завезли наконец левый контрол. так что теперь юниты крутятся вертятся по зажатому контролу и колесиком мышки.
pornov:
здорова народ...
релиз
https://www.dune2slava.com/pvp
SeregaZ:
Пушкин с Ожеговым в наших головах просто взорвутся от обилия ашипок в тексте сей ссылки :) лучше б вместо французского афтор учил русский :)

Добавлено позже:
кто-то помница спрашивал сто лет назад как сделать мерцающую надпись на титульнике. записал коротенькое видео об этом:

pornov:

--- Цитата: SeregaZ от 17 Март 2020, 21:59:20 ---Пушкин с Ожеговым в наших головах просто взорвутся от обилия ашипок в тексте сей ссылки :) лучше б вместо французского афтор учил русский :)

--- Конец цитаты ---

а ты не читай если не нравится...
Ti_:
В первом сообщении ссылка неправильная.

Постоянная ссылка на актуальные версии сборщика:
https://yadi.sk/d/hNUyatG33NUZCc

Немного обновил R82: (изменения от-но версии 10 Apr 2019)
+ обновленный DUE 0.8.5a, и в build_rom_info.asm  появился пункт  TEST_HOUSE  =  , для быстрого запуска теста миссии без меню ментата и т.п.
+ флаг dmg_build_flag (buildings\turret_dmg.asm) теперь влияет и на стены (при "0" пушки не повреждают здания и стены, ранее - только здания).
+ добавлен файл gfx\block_nums.asm для последней версии DUE, для изменения номера метатайла блума, стен, плиты.
NakL3:

--- Цитата: Ti_ от 11 Апрель 2020, 14:48:38 ---+ обновленный DUE 0.8.5a

--- Конец цитаты ---

У меня почему-то вылеает редактор, если щёлкать по музыке и звукам cfg файлов. Если активно перещёлкивать между ними.
Ti_:

--- Цитата: NakL3 от 11 Апрель 2020, 16:52:28 ---У меня почему-то вылеает редактор, если щёлкать по музыке и звукам cfg файлов. Если активно перещёлкивать между ними.

--- Конец цитаты ---
Попробуй сейчас (перезалил).
ALEX_230_VOLT:
Ti_, обновил ссылку в первом посте
NakL3:

--- Цитата: Ti_ от 11 Апрель 2020, 17:02:03 ---Попробуй сейчас (перезалил).

--- Конец цитаты ---
Не  представляю, что ты сделал, но я вроде сейчас яростно щёлкал по ним и не вылетало.
SeregaZ:
из глобального:

* включен наконец редактор карт - ландшафта
* добавлен редактор миссий
* добавлено проигрывание GEMS как полагается путем эмуляции аудиодрайвера (Sharpnull)
* мелкие фиксы старых багов и завезли новые
чего не хватает, но хотелось бы:

* отображение прогресс бара по отслеживанию сколько песня проиграла, конечно при условии что там нет бесконечного зацикливания
* возможность мышкой перемотать длинную песню - передвинуть прогресс бар, как в винампе
из долгосрочных планов:

* GEMS трекер
* редактор графики и метатайлов - чтобы можно было легко и без танцев с бубном редактировать графику ландшафта и заводов
из радостных новостей:

* наконец-то можно вернуть получение списка игр для базы GEMS - из интернета. список скачивается с гитхаба, а там ссылка постоянная и можно изменять список путем добавления новых игр (если они конечно будут). в версию редактора из архива - это не попало
Добавлено позже:
п.с.: товарищи ромхакеры, у которых есть большие кастомные горы - надо записать маленький стрим, где я буду объяснять как пользоваться редактором шаблонов в редакторе ландшафта. чтобы была видеоинструкция так сказать. объясняю для чего: что есть гора? это не одиночный метатайл 32х32 пикселя с готовой горой. это пазл из нескольких метатайлов, которые обязательно должны быть рядышком в определенном порядке. стандартные горы уже внесены в шаблоны и они есть на выбор. но если пользователь создавал свой кастомный метатайловый файл, где есть измененные горы - то для того, чтобы рисовать такие горы однокликово, а не тыркая все кусочки пазла вручную - и были добавлены эти шаблоны. туда внес один раз такую кастомную гору и она добавилась на панель. и в последующем однокликово можно рисовать такую гору. в принципе как-бы интуитивно понятно что делать... но лучше все-таки записать маленький видеоурок :)
w_Denis_w:

--- Цитата: Ti_ от 11 Апрель 2020, 14:48:38 ---В первом сообщении ссылка неправильная.

Постоянная ссылка на актуальные версии сборщика:
https://yadi.sk/d/hNUyatG33NUZCc

Немного обновил R82: (изменения от-но версии 10 Apr 2019)
+ обновленный DUE 0.8.5a, и в build_rom_info.asm  появился пункт  TEST_HOUSE  =  , для быстрого запуска теста миссии без меню ментата и т.п.
+ флаг dmg_build_flag (buildings\turret_dmg.asm) теперь влияет и на стены (при "0" пушки не повреждают здания и стены, ранее - только здания).
+ добавлен файл gfx\block_nums.asm для последней версии DUE, для изменения номера метатайла блума, стен, плиты.

--- Конец цитаты ---
А мне редактор не понравился очень отвратителен дизаин А вот у него (SeregaZ) очень красивый и понятно где чё находится
SeregaZ:
эм... ну ладно  :lol:

задумка была - самая самая изначальная - что вмещаться будет в разрешение экрана 800х600 - чтобы на любом калькуляторе программа помещалась полностью. но в процессе все вылезло в чуть большие размеры, то есть 1024х768. дальше увеличивать размер уже нельзя, так как старые компьютеры останутся неудел. поэтому при добавлении новых всяких функционалов пришлось выкручиваться и вписывать в существующий дизайн. поэтому там всякие костыли типа где редактор ментатов, экранов и регионов - на одной кнопке, а редактор палитры вылазит попапом поверх основного редактора. внутри звуковой части тоже есть дополнительный переключатель онлайн-локал... итак далее - все издержки влезания в эти 1024х768. можно конечно изменить размеры кнопок справа и сделать их помельче и тогда можно будет редактор ментатов и экранов с регионами сделать однокнопочными... но уж как сделано так сделано. переделывать там дофига. я уже сам плаваю в коде... набыдлокодил так, что сам не разберусь теперь.
SeregaZ:
очередная новость про экранизацию Дюны и на этот раз про червей чуток. просто текст правда :) ну хоть такие новости: http://lostfilm.info/news/id38359/
w_Denis_w:
SeregaZ, когда обновления будит хек-редактор ваш :-\
SeregaZ:
w_Denis_w, ну надо бы. музыкальный треккер хочу. но даже не садился с того времени. опять через год наверное вдохновение по голове стукнет :)
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

Перейти к полной версии