HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > XashNT: блог разработчика
Часть I
Страницы (241): « Первая ... « 178 179 180 181 [182] 183 184 185 186 » ... Последняя »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
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'

Сообщить модератору | | IP: Записан
Сообщение: 213981

Старое сообщение 13-04-2023 12:05
-
SNMetamorph
Житель форума

Дата регистрации: Jun 2018
Проживает: Ижевск
Сообщений: 560

Рейтинг



Цитата:
Дядя Миша писал:
И ты готов вот эту кучу кода утянуть в свой проект и регулярно проверять её насчёт обновления? А еще лучше - десять, двадцать, сто библиотек, и специальный планировщик, который всё это автоматически обновляет и билдит и тут же прогоняет юнит-тесты. Правда давно уже никто не понимает как это всё работает и старается не дышать рядом.

А какой смысл её обновлять если оно и так работает нормально? Не, ну если зачем-то вдруг понадобится обновиться, то это все делается буквально заменой одной строчки в vcpkg-манифесте. А так я без понятия, зачем подобные вещи обновлять, ибо там уже и так есть всё что нужно.

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord

Сообщить модератору | | IP: Записан
Сообщение: 213982

Старое сообщение 13-04-2023 12:07
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
SNMetamorph писал:
А какой смысл её обновлять если оно и так работает нормально?

Раньше допущения делались на уровне концепций, а теперь - на уровне обновления сторонних библиотек. Растём, чоужтам.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 213984

Старое сообщение 13-04-2023 12:36
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12901
Возраст: 32

Рейтинг



Цитата:
Дядя Миша писал:
И ты готов вот эту кучу кода утянуть в свой проект и регулярно проверять её насчёт обновления? А еще лучше - десять, двадцать, сто библиотек, и специальный планировщик, который всё это автоматически обновляет и билдит и тут же прогоняет юнит-тесты. Правда давно уже никто не понимает как это всё работает и старается не дышать рядом.


Так в чём проблема? Напиши свой парсер, причём тут формат? Ну могу скинуть тот что я юзаю, там всего 1 .h файлик, и никаких дополнительных библиотек Правда он для работы только с текстовым Жсоном, но доработать под бинарный возможно.

Цитата:
Дядя Миша писал:
А еще лучше - десять, двадцать, сто библиотек,


По моему опыту это скорее плюс чем минус, главное конечно не перегибать с этим. Есть много библиотек которые ну очень мало весят.

Цитата:
Дядя Миша писал:
И ты готов вот эту кучу кода утянуть в свой проект и регулярно проверять её насчёт обновления?


Вместо этого конечно наплодить зоопарк форматов, и заставлять пользователей твоего движка регулярно проверять насчёт обновления, а ещё писать утилиты миграции Историю сорсовских hlbsp v.... и hlmdl v.... я ещё помню

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Отредактировано FiEctro 13-04-2023 в 13:21

Сообщить модератору | | IP: Записан
Сообщение: 213987

Старое сообщение 13-04-2023 13:13
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
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'

Сообщить модератору | | IP: Записан
Сообщение: 213989

Старое сообщение 13-04-2023 14:46
-
a1batross
Житель форума

Дата регистрации: May 2016
Проживает: Москва
Сообщений: 516
Возраст: 26

Рейтинг



SNMetamorph

Цитата:
А так я без понятия, зачем подобные вещи обновлять, ибо там уже и так есть всё что нужно


Всё что нужно, в том числе уязвимости, по классике Си и С++. Ничего не утверждаю, но мало ли.

Добавлено 15-04-2023 в 01:21:

Я уже не говорю о том, что для валидации JSON документа придётся явно выдумывать что-то своё, так как стандарт не учитывает существование схем, в конце концов это просто способ представления JavaScript объектов. А JSON такой -- запросто можно пропустить ключ или не тот тип ему выставить, неймспейсов у него кстати тоже нет.

__________________
Xash3D FWGS форк

Сообщить модератору | | IP: Записан
Сообщение: 214010

Старое сообщение 14-04-2023 22:21
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Вообщем пока решил всё же сделать текстовый формат исходников.
Как раз с неймспейсами.

Добавлено 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'

Сообщить модератору | | IP: Записан
Сообщение: 214012

Старое сообщение 15-04-2023 05:34
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Подведу небольшие итоги:

1. Формат описания исходников карт всё же будет текстовый.
2. Формат будет универсальный, абстрактный, позволяющий его легко расширять до бесконечности.
3. Формат с прямой и обратной совместимостью, т.е. если встретятся незнакомые описания, парсер их просто пропустит.
4. Формат иерархический вложенный, базируется на двух ключевых конструкциях:
- токенах, начинающися с решётки #, как директива препроцессору
- ключевых словах без решётки, обозначающих именованную секцию фигурных скобок. Имя каждой такой секции оканчивается на "Def", хотя будущим стандартом это и не регламентируется.

Подобная схема уже отлично себя зарекомендовала в файле настройек для компилятора уровней и в описании материалов (тоже абстрактная универсальная система). Пример простейшего map-файла:

C++ Source Code:
1
#version 1.0
2
 
3
EntityDef
4
{
5
  "classname"	"worldspawn"
6
  "message"		"Test Level"
7
 
8
  ConvexDef
9
  {
10
    "flags"	"C_SOLID"
11
    "id"	"0"
12
    "group"	"0"
13
 
14
    SideDef
15
    {
16
      "material"	"AAATRIGGER"
17
      "plane"		"0 0 1 1000"
18
      "uaxis"		"1 0 0"
19
      "vaxis"		"0 1 0"
20
      "id"		"0"
21
      "group"		"0"
22
    }
23
    SideDef
24
    {
25
      "material"	"AAATRIGGER"
26
      "plane"		"0 0 -1 1010"
27
      "uaxis"		"1 0 0"
28
      "vaxis"		"0 1 0"
29
      "id"		"0"
30
      "group"		"0"
31
    }
32
    SideDef
33
    {
34
      "material"	"AAATRIGGER"
35
      "plane"		"0 1 0 1000"
36
      "uaxis"		"1 0 0"
37
      "vaxis"		"0 1 0"
38
      "id"		"0"
39
      "group"		"0"
40
    }
41
    SideDef
42
    {
43
      "material"	"AAATRIGGER"
44
      "plane"		"0 -1 0 1010"
45
      "uaxis"		"1 0 0"
46
      "vaxis"		"0 1 0"
47
      "id"		"0"
48
      "group"		"0"
49
    }
50
    SideDef
51
    {
52
      "material"	"AAATRIGGER"
53
      "plane"		"1 0 0 1000"
54
      "uaxis"		"1 0 0"
55
      "vaxis"		"0 1 0"
56
      "id"		"0"
57
      "group"		"0"
58
    }
59
    SideDef
60
    {
61
      "material"	"AAATRIGGER"
62
      "plane"		"-1 0 0 1010"
63
      "uaxis"		"1 0 0"
64
      "vaxis"		"0 1 0"
65
      "id"		"0"
66
      "group"		"0"
67
    }
68
  }
69
}
70
 
71
EntityDef
72
{
73
  "classname"	"info_player_start"
74
  "origin"		"0 0 64"
75
}


Оно чем-то напоминает 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'

Сообщить модератору | | IP: Записан
Сообщение: 214022

Старое сообщение 16-04-2023 10:55
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12901
Возраст: 32

Рейтинг



интересно, а как отличить "material" и "AAATRIGGER" где параметр, а где его значение? только по очереди?

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Сообщить модератору | | IP: Записан
Сообщение: 214023

Старое сообщение 16-04-2023 11:39
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
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'

Сообщить модератору | | IP: Записан
Сообщение: 214024

Старое сообщение 16-04-2023 12:02
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12901
Возраст: 32

Рейтинг



Цитата:
Дядя Миша писал:
ключ-значение ВСЕГДА идут парами.


Ну и удалили мы "material" в начале, и всё местами поменялось

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Сообщить модератору | | IP: Записан
Сообщение: 214025

Старое сообщение 16-04-2023 15:51
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
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'

Сообщить модератору | | IP: Записан
Сообщение: 214033

Старое сообщение 17-04-2023 05:30
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12901
Возраст: 32

Рейтинг



так можно просто запятую поставить:
"material" "AAATRIGGER",
"plane" "0 0 1 1000",
"uaxis" "1 0 0",
"vaxis" "0 1 0",
"id" "0",
"group" "0"

Тогда сразу будет понятно какое поле битое. Можно будет вывести в консоль сразу номер строки. Зачем усложнять отладку?

Цитата:
Дядя Миша писал:
Удали один байт и тоже всё перепутается.


Дык то байты, а то текст

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Отредактировано FiEctro 17-04-2023 в 08:04

Сообщить модератору | | IP: Записан
Сообщение: 214036

Старое сообщение 17-04-2023 08:00
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



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

Добавлено 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'

Сообщить модератору | | IP: Записан
Сообщение: 214039

Старое сообщение 17-04-2023 12:12
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



В телеграме выложил серию постов, отчёты о проделанной работе и о том, что предстоит сделать в ближайшее время. Ну а здесь хочу просто немного порассуждать на тему того, что является самым сложным в разработке, даже не софта, а как в моём случае - полноценной экосистемы.
Так уж получилось, что сейчас все увлекаются эко-системами. Какой-то изолированный программный продукт никого не удивляет и мало кому нужен.
Вот и 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'

Сообщить модератору | | IP: Записан
Сообщение: 214235

Старое сообщение 01-05-2023 10:12
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 02:15. Новая тема    Ответить
Страницы (241): « Первая ... « 178 179 180 181 [182] 183 184 185 186 » ... Последняя »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > XashNT: блог разработчика
Часть I
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024