HLFX.Ru Forum Страницы (255): « Первая ... « 3 4 5 6 [7] 8 9 10 11 » ... Последняя »
Показать все 3825 сообщений этой темы на одной странице

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)


Отправлено Дядя Миша 20-08-2019 в 15:36:

Пока что всё под вопросом. Остановил разработку, надо подумать как лучше сделать.

__________________
My Projects: download page

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

Цитата:

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


Отправлено thambs 20-08-2019 в 15:48:

Дядя Миша
Но скрипты это очень хорошая и правильная идея, в любом формате, хоть на хацкеле.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено XaeroX 20-08-2019 в 15:52:

На хаскеле, это было бы очень круто!

__________________

xaerox on Vivino


Отправлено nemyax 20-08-2019 в 16:00:

Как говорится, Maybe. Кстати, почему нет, для скриптинга-то. Только вряд ли найдётся компактный интерпретатор.


Отправлено Дядя Миша 03-09-2019 в 08:24:

Халфовская игровая дллка, это эталонный пример анти-паттерна конечно.
Это надо всем начинающим пограмистам показывать как не надо делать.
В кваке был целостный эдикт и непрерывный массив, что хотя и увеличивало потребление памяти с одной стороны, но с другой гарантировало нам, что мы никогда не промахнёмся по адресу, можем ссылаться на мёртвые эдикты и так далее. В халфе, мало того что разрушили эту концепцию, казалось бы с благой целью, так еще и долгое время не могли определиться что послужит базовым указателем на сущность. entvars_t? edict_t? CBaseEntity?
В итоге мы имеем три сущности и три преобразования-апкаста туда и сюда, которые вообще не несут абсолютно никакого смысла, только запутывают.
Плюс еще те переменные, что входят в состав entvars_t неявно модифицируются\читаются движком и об этом нигде ничего не написано. Отдельного упоминания заслуживают флаги, часть флагов явно задаёт поведение движка, а часть существует только в игровом коде.
В сорсе на первый взгляд попытались это привести в порядок, но на деле только осложнили ситуацию. Там теперь всё в каллбэках, чтобы сделать типичный вызов движковой функции надо писать класс-заглушку с каллбэком и от нее наследовать какую-то чертовщину. То есть вот мы к примеру хотим отправить сетевое сообщение всем клиентам. Мы уже не можем написть MSG_ALL, нам надо городить специальный класс, который пропускает сообщение для всех клиентов в каллбэке. Пример избыточной гибкости, которая может пригодится примерно никогда.

__________________
My Projects: download page

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

Цитата:

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


Отправлено XaeroX 03-09-2019 в 08:35:

Цитата:
Дядя Миша писал:
долгое время не могли определиться что послужит базовым указателем на сущность. entvars_t? edict_t? CBaseEntity?

В халфе чётко определились. Базовая сущность это edict_t. У него есть "скриптовые" поля entvars_t, которые (в теории) могут быть доступны виртуальной машинке. Да, в халфе ВМ не реализовали, но я в HLFX0.7 упражнялся и оценил это разделение в полной мере. Что касается CBaseEntity, то это класс, целиком инкапсулированный в дллке и невидимый извне. Это логическая обвёртка, которая движку не нужна. Важный плюс такой архитектуры - движок может быть скомпилен MSVC, а дллки, скажем, GCC. И она - после ряда неархитектурных фиксов - будет загружаться и работать. В Волатиле оно так и происходит: мы хоть и заставляем пользователя что-то там компилировать, но по крайней мере не требуем строгую "модель" и версию компилятора.
Цитата:
Дядя Миша писал:
и об этом нигде ничего не написано.

Это не пример антипаттерна, это пример плохой документации.
Цитата:
Дядя Миша писал:
В сорсе на первый взгляд попытались это привести в порядок, но на деле только осложнили ситуацию.

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

__________________

xaerox on Vivino


Отправлено Дядя Миша 03-09-2019 в 15:44:

Цитата:
XaeroX писал:
Базовая сущность это edict_t. У него есть "скриптовые" поля entvars_t, которые (в теории) могут быть доступны виртуальной машинке.

Это если бы они так планировали сделать изначально. А им entvars достались в наследство. И edict_t ни разу не базовая сущность. Она была таковой в кваке, где виртуальная машинка управлялась именно с эдиктами.
В халфе эдикт нужен только для того, чтобы движок примерно понимал с чем ему иметь дело, ему даже не столько сам эдикт нужен, сколько его номер в массиве.

Цитата:
XaeroX писал:
Ну код-то по факту стал читабельнее?

я бы так не сказал. Проще написать MSG_ALL, чем каждый раз копипастить этот класс с каллбэком. Кстати говоря, как такие вещи по научному называются? Когда весь класс создаётся только ради одной виртуальной функции.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Дядя Миша 04-09-2019 в 10:26:

Замутил АТД для string_t для удобства. Теперь не надо писать каждый раз эти идиотские ALLOC_STRING, STRING, теперь как в виртуальной машинке

pev->targetname = "player";

и была же охота вальвовцам копипастить одно и тоже сотни раз.

__________________
My Projects: download page

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

Цитата:

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


Отправлено XaeroX 04-09-2019 в 11:00:

std::string, надеюсь, а не велосипед?

__________________

xaerox on Vivino


Отправлено Дядя Миша 04-09-2019 в 11:11:

я не пользую STL

__________________
My Projects: download page

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

Цитата:

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


Отправлено XaeroX 04-09-2019 в 11:43:

Дядя Миша
Какой смысл писать на С++ и не пользовать STL?
STL уже давно часть языка.

__________________

xaerox on Vivino


Отправлено Дядя Миша 04-09-2019 в 12:03:

XaeroX вывези ваську

__________________
My Projects: download page

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

Цитата:

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


Отправлено Дядя Миша 05-09-2019 в 20:14:

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

__________________
My Projects: download page

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

Цитата:

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


Отправлено FiEctro 06-09-2019 в 12:30:

Цитата:
Дядя Миша писал:
Долбанные энтварсы, когда же они уже закончатся. Этот рефакторинг я навсегда запомню как самое бессмыссленное и в то же время необходимое действие.


Ничего! Мастера это не остановило когда он сортировал delta.lst. Ты теперь достойный продолжатель его великого деда дела!

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


Отправлено Дядя Миша 06-09-2019 в 12:58:

Мастер от своей сортировки ничего не получил. А у меня рефакторинг архитектуры. Потом еще от entity_state_t избавляццо.

__________________
My Projects: download page

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

Цитата:

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


Временная зона GMT. Текущее время 07:33. Страницы (255): « Первая ... « 3 4 5 6 [7] 8 9 10 11 » ... Последняя »
Показать все 3825 сообщений этой темы на одной странице

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