HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Наши проекты (https://hlfx.ru/forum/forumdisplay.php?forumid=1)
-- XashNT: блог разработчика (https://hlfx.ru/forum/showthread.php?threadid=5297)
Отправлено Дядя Миша 13-04-2023 в 12:05:
Цитата:
FiEctro писал:
А какие недостатки у жсона
Цитата:
FiEctro писал:
Бинарный формат однозначно. Его парсить быстрее.
Цитата:
SNMetamorph писал:
https://github.com/simdjson/simdjso...ormance-results
Воистину кому-то было нечем заняться.
И ты готов вот эту кучу кода утянуть в свой проект и регулярно проверять её насчёт обновления? А еще лучше - десять, двадцать, сто библиотек, и специальный планировщик, который всё это автоматически обновляет и билдит и тут же прогоняет юнит-тесты. Правда давно уже никто не понимает как это всё работает и старается не дышать рядом.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено SNMetamorph 13-04-2023 в 12:07:
Цитата:
Дядя Миша писал:
И ты готов вот эту кучу кода утянуть в свой проект и регулярно проверять её насчёт обновления? А еще лучше - десять, двадцать, сто библиотек, и специальный планировщик, который всё это автоматически обновляет и билдит и тут же прогоняет юнит-тесты. Правда давно уже никто не понимает как это всё работает и старается не дышать рядом.
А какой смысл её обновлять если оно и так работает нормально? Не, ну если зачем-то вдруг понадобится обновиться, то это все делается буквально заменой одной строчки в vcpkg-манифесте. А так я без понятия, зачем подобные вещи обновлять, ибо там уже и так есть всё что нужно.__________________
SNMetamorph's Personal Blog
Xash3D Modding Discord
Отправлено Дядя Миша 13-04-2023 в 12:36:
Цитата:
SNMetamorph писал:
А какой смысл её обновлять если оно и так работает нормально?
Раньше допущения делались на уровне концепций, а теперь - на уровне обновления сторонних библиотек. Растём, чоужтам.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено FiEctro 13-04-2023 в 13:13:
Цитата:
Дядя Миша писал:
И ты готов вот эту кучу кода утянуть в свой проект и регулярно проверять её насчёт обновления? А еще лучше - десять, двадцать, сто библиотек, и специальный планировщик, который всё это автоматически обновляет и билдит и тут же прогоняет юнит-тесты. Правда давно уже никто не понимает как это всё работает и старается не дышать рядом.
Так в чём проблема? Напиши свой парсер, причём тут формат? Ну могу скинуть тот что я юзаю, там всего 1 .h файлик, и никаких дополнительных библиотек
Правда он для работы только с текстовым Жсоном, но доработать под бинарный возможно.
Цитата:
Дядя Миша писал:
А еще лучше - десять, двадцать, сто библиотек,
По моему опыту это скорее плюс чем минус, главное конечно не перегибать с этим. Есть много библиотек которые ну очень мало весят.
Цитата:
Дядя Миша писал:
И ты готов вот эту кучу кода утянуть в свой проект и регулярно проверять её насчёт обновления?
Вместо этого конечно наплодить зоопарк форматов, и заставлять пользователей твоего движка регулярно проверять насчёт обновления, а ещё писать утилиты миграции
Историю сорсовских hlbsp v.... и hlmdl v.... я ещё помню
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено Дядя Миша 13-04-2023 в 14:46:
Цитата:
FiEctro писал:
По моему опыту это скорее плюс чем минус, главное конечно не перегибать с этим
Если стоит ограниченная задача, которую надо быстро решить и забыть - конечно плюс.
Цитата:
FiEctro писал:
Напиши свой парсер, причём тут формат?
При том, что JSON избыточный формат. Т.е. он минималистичен лишь относительно XML. А так всё равно избыточен.
Цитата:
FiEctro писал:
а ещё писать утилиты миграции
Ну утилиты миграции понадобятся в любом случае.
Цитата:
FiEctro писал:
Историю сорсовских hlbsp v.... и hlmdl v.... я ещё помню
Вот там-то как раз формат был нерасширяемым. Отсюда и постоянная смена версий с нервотрёпкой.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено a1batross 14-04-2023 в 22:21:
SNMetamorph
Цитата:
А так я без понятия, зачем подобные вещи обновлять, ибо там уже и так есть всё что нужно
Всё что нужно, в том числе уязвимости, по классике Си и С++. Ничего не утверждаю, но мало ли.
Добавлено 15-04-2023 в 01:21:
Я уже не говорю о том, что для валидации JSON документа придётся явно выдумывать что-то своё, так как стандарт не учитывает существование схем, в конце концов это просто способ представления JavaScript объектов. А JSON такой -- запросто можно пропустить ключ или не тот тип ему выставить, неймспейсов у него кстати тоже нет. 
__________________
Xash3D FWGS форк
Отправлено Дядя Миша 15-04-2023 в 05:34:
Вообщем пока решил всё же сделать текстовый формат исходников.
Как раз с неймспейсами.
Добавлено 15-04-2023 в 08:34:
Цитата:
a1batross писал:
в конце концов это просто способ представления JavaScript объектов
Ну так и Entity String - способ представления QuakeC объектов. Только вообще лишённый избыточности. Правда и иерархических вложений там нет.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Дядя Миша 16-04-2023 в 10:55:
Подведу небольшие итоги:
1. Формат описания исходников карт всё же будет текстовый.
2. Формат будет универсальный, абстрактный, позволяющий его легко расширять до бесконечности.
3. Формат с прямой и обратной совместимостью, т.е. если встретятся незнакомые описания, парсер их просто пропустит.
4. Формат иерархический вложенный, базируется на двух ключевых конструкциях:
- токенах, начинающися с решётки #, как директива препроцессору
- ключевых словах без решётки, обозначающих именованную секцию фигурных скобок. Имя каждой такой секции оканчивается на "Def", хотя будущим стандартом это и не регламентируется.
Подобная схема уже отлично себя зарекомендовала в файле настройек для компилятора уровней и в описании материалов (тоже абстрактная универсальная система). Пример простейшего map-файла:
C++ Source Code:
5 | "classname" "worldspawn" |
16 | "material" "AAATRIGGER" |
25 | "material" "AAATRIGGER" |
34 | "material" "AAATRIGGER" |
43 | "material" "AAATRIGGER" |
52 | "material" "AAATRIGGER" |
61 | "material" "AAATRIGGER" |
73 | "classname" "info_player_start" |
Оно чем-то напоминает Valve Map Format, но там идёт жесткая привязка к версиям редатора и другие ограничения. К тому же подобный формат может без проблем хранить не только уровни, но и модели, ландшафты и любые другие данные, главное ввести соответствующую именованную секцию. Причём парсер по глубине вложений понимает что перед ним - уровень или модель. Если на верхнем уровне секция MeshDef, значит это просто модель. Если же на верхнем уровне секция EntityDef, значит это уровень. Так же, напоминаю, будет доступна старая фишка когда уровни могут вкладываться друг в друга.
Модели вы сможете хранить в следующих форматах:
1. CSM - бинарный файл для хранения моделей. Содержит вспомогательную информацию для облегчения и ускорения компиляции, в частности - развертку для построения лайтмап, но не только. Редактировать можно Блендером. Компиляции не требует. Поддерживаются только статичные модели без костей.
2. MDL - нативный формат самого XashNT (возможно в будущем привычные расширения bsp, mdl, spr я заменю на какие-то иные, но тут зависит от мнения пользователей). Может содержать анимации, однако при вкомпиливании в карту остаётся только один статичный кадр. Но зато его можно выбрать в настройках энтити.
3. Старые форматы md3, ase, obj, smd. Компилятор автоматически превратит их в CSM. Но возможно будет лучше это сделать в процессе миграции с других игр. Пока ещё не знаю точно.
4. Собственно новый абстрактный формат описания уровней (расширение пока что не придумано).__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено FiEctro 16-04-2023 в 11:39:
интересно, а как отличить "material" и "AAATRIGGER" где параметр, а где его значение? только по очереди?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено Дядя Миша 16-04-2023 в 12:02:
Цитата:
FiEctro писал:
интересно, а как отличить "material" и "AAATRIGGER" где параметр, а где его значение? только по очереди?
ключ-значение ВСЕГДА идут парами.
Добавлено 16-04-2023 в 15:02:
Судя по всему этот же абстрактный формат придёт и на смену SMD, да и вообще любому другому формату исходников.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено FiEctro 16-04-2023 в 15:51:
Цитата:
Дядя Миша писал:
ключ-значение ВСЕГДА идут парами.
Ну и удалили мы "material" в начале, и всё местами поменялось 
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено Дядя Миша 17-04-2023 в 05:30:
Цитата:
FiEctro писал:
Ну и удалили мы "material" в начале, и всё местами поменялось
Ты в своих халфовских картах пробовал делать нечто подобное?
Или скажем, в CISC архитектуре, команды идут вперемешку с данными. Удали один байт и тоже всё перепутается.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено FiEctro 17-04-2023 в 08:00:
так можно просто запятую поставить:
"material" "AAATRIGGER",
"plane" "0 0 1 1000",
"uaxis" "1 0 0",
"vaxis" "0 1 0",
"id" "0",
"group" "0"
Тогда сразу будет понятно какое поле битое. Можно будет вывести в консоль сразу номер строки. Зачем усложнять отладку?
Цитата:
Дядя Миша писал:
Удали один байт и тоже всё перепутается.
Дык то байты, а то текст
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено Дядя Миша 17-04-2023 в 12:12:
Никакие запятые там нахрен не нужны.
Если соответствующий ключ не будет найден, он просто скипнется и работоспособность будет восстановлена, начиная со следующего ключа.
Это само-восстанавливающийся формат данных, если ты не знал.
Добавлено 17-04-2023 в 15:12:
Вот как раз наличие запятых и усложнит отладку и замедлит парсинг.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Дядя Миша 01-05-2023 в 10:12:
В телеграме выложил серию постов, отчёты о проделанной работе и о том, что предстоит сделать в ближайшее время. Ну а здесь хочу просто немного порассуждать на тему того, что является самым сложным в разработке, даже не софта, а как в моём случае - полноценной экосистемы.
Так уж получилось, что сейчас все увлекаются эко-системами. Какой-то изолированный программный продукт никого не удивляет и мало кому нужен.
Вот и XashNT разрабатывается как эко-система для разработки игр.
Изначально в 2019-м году я такой задачи перед собой не ставил, но в процессе дело приобрело невиданный размах и общественную значимость.
Так вот самое сложное, на мой взгляд - это определить границы экосистемы, а значит и ответственности. С одной стороны, заложенный потенциал, позволит всему этому разрастаться ещё достаточно долго если(тут следует перечисление всех возможных сценариев развития событий). Но исходя из пессимистичного варианта (я по прежнему продолжаю работу над движком в гордом одиночестве), границы моей ответственности будут ограничены редактором и созданием полноценного work-flow в будущем.
Это означает, что в идеале для разработки на XashNT не понадобятся никакие сторонние редакторы. Но конечно такое состояние будет достигнуто далеко не сразу.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'