HLFX.Ru Forum Страницы (7): « 1 2 3 [4] 5 6 7 »
Показать все 99 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Компьютерные игры (https://hlfx.ru/forum/forumdisplay.php?forumid=19)
-- Диалоги о модах к халфе (https://hlfx.ru/forum/showthread.php?threadid=5122)


Отправлено Дядя Миша 08-06-2018 в 20:39:

Цитата:
XaeroX писал:
Не будем показывать на героя пальцем

Ну он как бы не совсем ушёл

__________________
My Projects: download page

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

Цитата:

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


Отправлено nemyax 08-06-2018 в 21:09:

Цитата:
Ku2zoff писал:
З.Ы. А как насчёт модов к халфе-то?

Ну я вот смотрю, в мод Headcrab Frenzy народ на стиме фспаигрувает =)


Отправлено FiEctro 09-06-2018 в 05:52:

>> Сколько месяцев у тебя ушло, прежде чем ты наконец понял, куда надо кликать два раза, чтобы твой функ-ротатинг ротатился именно так, как тебе нужно? Но ты ведь нипочём уже не признаешься...

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

Впрочем Волатила насколько я помню имеет как и ВМ так и минимальный набор энтитей, и это я считаю вполне разумным подходом.

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


Отправлено nemyax 09-06-2018 в 06:50:

Цитата:
FiEctro писал:
Любая программа ориентированная на пользователей, должна быть интуитивно понятной

То, что интуитивно понятно одному пользователю, другой пользователь может считать леденящей душу дичью.


Отправлено XaeroX 09-06-2018 в 06:56:

Цитата:
FiEctro писал:
Волатила насколько я помню имеет как и ВМ так и минимальный набор энтитей, и это я считаю вполне разумным подходом.

Ну так я же учёл ошибки и с вами советовался уже на ранних этапах разработки новой версии.
Цитата:
nemyax писал:
То, что интуитивно понятно одному пользователю, другой пользователь может считать леденящей душу дичью.

+1
При этом скриптовый подход уже много лет стандарт де-факто, а настойки у энтитей у каждого свои.
Может быть, скоро стандартом станут кисметы/блупринты. Но по сути это те же скрипты, где параметры одних функций и return-ы других соединяешь мышкой. Для тех, кто на дух не переносит печатать на клавиатуре что-то сложнее targetname-ов.

__________________

xaerox on Vivino


Отправлено FiEctro 09-06-2018 в 08:03:

Цитата:
nemyax писал:
То, что интуитивно понятно одному пользователю, другой пользователь может считать леденящей душу дичью.


Владелец жигулей тоже может считать иномарки дичью, чтож теперь всем на жигулях ездить? Если части пользователей эта система доставляет неудобства, она уже не является интуитивно понятной.

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


Отправлено XaeroX 09-06-2018 в 08:26:

Цитата:
FiEctro писал:
Владелец жигулей тоже может считать иномарки дичью, чтож теперь всем на жигулях ездить?

Жигули это func_rotating, иномарка - это скрипты?

__________________

xaerox on Vivino


Отправлено Дядя Миша 09-06-2018 в 08:42:

Спор ни о чём, т.к. ни один вменяемый человек с нуля не разбирается, а всегда по аналогии. Разработчики игры дают пример как использовать инструменты, человек пробует повторить, у него получается, а после этого он уже идёт читать документацию и вникать в тонкости. Это и есть главный критерий удачности системы. Если не удалось сделать по аналогии простейшую вещь, не заглядывая в доки - система гавно, а автор - член партии справедливая россия.

__________________
My Projects: download page

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

Цитата:

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


Отправлено FiEctro 09-06-2018 в 09:11:

Цитата:
XaeroX писал:
Жигули это func_rotating, иномарка - это скрипты?


Зависит от реализации.

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


Отправлено XaeroX 09-06-2018 в 09:27:

FiEctro
В каком смысле - от реализации?
От местоположения галочек функ-ротатинга в окошке свойств? От названия скриптовых функций?

Добавлено 09-06-2018 в 16:27:

Цитата:
FiEctro писал:
Если части пользователей эта система доставляет неудобства, она уже не является интуитивно понятной.

Приведи пример интуитивно понятной относительно сложной системы (которая по твоей логике удобна абсолютно всем пользователям).

__________________

xaerox on Vivino


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

>> В каком смысле - от реализации?
От местоположения галочек функ-ротатинга в окошке свойств? От названия скриптовых функций?

От IDE в которой ты работаешь. Я вот например не видел, чтобы тот же Джек позволял редактировать Lua скрипты внутри.

>> Приведи пример интуитивно понятной относительно сложной системы (которая по твоей логике удобна абсолютно всем пользователям).

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

Конечно в идеале желательно чтобы вся серверная часть (по возможности) была на скриптах. Т.е. вся игровая логика должна быть доступна для редактирования. Хочешь шутан пишешь, хочешь гонки, хочешь овечек.

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

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


Отправлено Дядя Миша 09-06-2018 в 13:59:

Пользователю удобно то, что ему привычно. Все попытки нагородить огород в рассчете на удобство и красоту как правило заканчиваются ничем. Хотите примеров? Возьмем язык Си. Для массовой аудитории это был первый язык, потому что язык B использовался только внутри AT&T и широкого распространения не получил. А теперь задумайтесь, почему большинство востребованных современных языков наследует от Си как минимум синтаксис. Точно так же и с энтитями. Кармак придумал эту систему объектов, параметры которых могут быть описаны комплиментарной парой key-value. В эту схему укладывается абсолютно любое описание. Единственный относительный недостаток такого подхода это то, что эти описания сжирают вполне реальные эдикты, что несколько расточительно. Так что и нечего тут выдумвать акторы какие-то, скрипты. Ну для сложных систем наверное имеет смысл подключить lua какой-нибудь и писать скрипты на нём. Но тут уже встаёт другой вопрос - а как это корректно увязать с сейв-рестором и сменой уровней? Вы обратите внимание что современные движки неохотно дружат и с тем и с другим, этот вопрос всячески заминается.

Добавлено 09-06-2018 в 16:55:

Да вот хотя бы взять пример увязки Lua с модом Жэки Area 51.
Возьмем типичный скрипт

C++ Source Code:
1
function script_alarm_1()
2
 
3
FireTargetsDelayed('sirena',ePlayer,USE_ON, 0);
4
FireTargetsDelayed('hurt',ePlayer,USE_ON, 0);
5
FireTargetsDelayed('cv_airfilt_offline',ePlayer,USE_ON, 10);
6
FireTargetsDelayed('comp_toxins_present',ePlayer,USE_ON, 25);
7
FireTargetsDelayed('cv_warnyellow',ePlayer,USE_ON, 35);
8
FireTargetsDelayed('particle_hurt',ePlayer,USE_ON, 0);
9
FireTargetsDelayed('scientist_camera_0001',ePlayer,USE_ON, 0);
10
FireTargetsDelayed('scientist_camera_00001',ePlayer,USE_ON, 0);
11
 
12
end;

Чем эта функция принципиально отличается от мульти менеджера?
Хорошо, возьмем другую.
C++ Source Code:
1
function door_54()
2
local mydoor  = FindEntityByTargetname(entity(0),'door_light_1');
3
while not IsNullEntity(mydoor) do
4
  mydoor.frame = 1 - mydoor.frame;
5
mydoor = FindEntityByTargetname(mydoor,'door_light_1');
6
end;
7
end;

Меняем pev->frame на двери. Перебираем в цикле все энтити в мире, чтобы найти нужную.
Хорошо, может примеры неудачные? давайте возьмем посложнее
C++ Source Code:
1
function door_swap( doornumber )
2
local fSwap = flags.GetBool('Door'..tostring(doornumber)..'_State');
3
if not fSwap then
4
  local eDoor1a = FindEntityByTargetname(eNullEntity,'door_'..tostring(doornumber)..'_a1');
5
if not IsNullEntity( eDoor1a ) then
6
  eDoor1a.effects = ClearBits( eDoor1a.effects, EF_NODRAW );
7
eDoor1a.solid = SOLID_BSP;
8
ConPrint( 'Origin: '..tostring(eDoor1a.origin) );
9
end;
10
local eDoor2a = FindEntityByTargetname(eNullEntity,'door_'..tostring(doornumber)..'_a2');
11
if not IsNullEntity( eDoor2a ) then
12
  eDoor2a.effects = ClearBits( eDoor2a.effects, EF_NODRAW );
13
eDoor2a.solid = SOLID_BSP;
14
end;
15
local eDoor1 = FindEntityByTargetname(eNullEntity,'door_'..tostring(doornumber)..'_1');
16
if not IsNullEntity( eDoor1 ) then
17
  eDoor1.effects = SetBits( eDoor1.effects, EF_NODRAW );
18
eDoor1.solid = SOLID_BSP;
19
end;
20
local eDoor2 = FindEntityByTargetname(eNullEntity,'door_'..tostring(doornumber)..'_2');
21
if not IsNullEntity( eDoor2 ) then
22
  eDoor2.effects = SetBits( eDoor2.effects, EF_NODRAW );
23
eDoor2.solid = SOLID_BSP;
24
eDoor2.origin = eDoor2a.origin;
25
end;
26
else
27
  local eDoor1a = FindEntityByTargetname(eNullEntity,'door_'..tostring(doornumber)..'_a1');
28
if not IsNullEntity( eDoor1a ) then
29
  eDoor1a.effects = SetBits( eDoor1a.effects, EF_NODRAW );
30
eDoor1a.solid = SOLID_BSP;
31
end;
32
local eDoor2a = FindEntityByTargetname(eNullEntity,'door_'..tostring(doornumber)..'_a2');
33
if not IsNullEntity( eDoor2a ) then
34
  eDoor2a.effects = SetBits( eDoor2a.effects, EF_NODRAW );
35
eDoor2a.solid = SOLID_BSP;
36
end;
37
local eDoor1 = FindEntityByTargetname(eNullEntity,'door_'..tostring(doornumber)..'_1');
38
if not IsNullEntity( eDoor1 ) then
39
  eDoor1.effects = ClearBits( eDoor1.effects, EF_NODRAW );
40
eDoor1.solid = SOLID_BSP;
41
end;
42
local eDoor2 = FindEntityByTargetname(eNullEntity,'door_'..tostring(doornumber)..'_2');
43
if not IsNullEntity( eDoor2 ) then
44
  eDoor2.effects = ClearBits( eDoor2.effects, EF_NODRAW );
45
eDoor2.solid = SOLID_BSP;
46
end;
47
end;
48
flags.SetBool('Door'..tostring(doornumber)..'_State',not fSwap,MISSION_NUMBER+1);
49
end;

Что это такое? Это костыль, обусловленный наличием отсутствия в HLFX парент-системы. Меняет фейковые двери на настоящие, ставя на их место func_wall. И вот уже моё недавнее утверждение о том, что стена может куда-то поехать или телепортироваться обретает новый смысл.
Дальше у нас идёт куча однотипных функций, что-то вроде
C++ Source Code:
1
function door_reactor2()
2
local mydoor  = FindEntityByTargetname(entity(0),'door_reactor2');
3
while not IsNullEntity(mydoor) do
4
  mydoor.frame = 1 - mydoor.frame;
5
mydoor = FindEntityByTargetname(mydoor,'door_reactor2');
6
end;
7
end;
8
 
9
function door_reactor2_2()
10
local mydoor  = FindEntityByTargetname(entity(0),'door_reactor2_2');
11
while not IsNullEntity(mydoor) do
12
  mydoor.frame = 1 - mydoor.frame;
13
mydoor = FindEntityByTargetname(mydoor,'door_reactor2_2');
14
end;
15
end;
16
 
17
function reactor_wall_01()
18
local mydoor  = FindEntityByTargetname(entity(0),'reactor_wall_1');
19
while not IsNullEntity(mydoor) do
20
  mydoor.frame = 1 - mydoor.frame;
21
mydoor = FindEntityByTargetname(mydoor,'reactor_wall_1');
22
end;
23
end;
24
 
25
function reactor_wall_02()
26
local mydoor  = FindEntityByTargetname(entity(0),'reactor_wall_2');
27
while not IsNullEntity(mydoor) do
28
  mydoor.frame = 1 - mydoor.frame;
29
mydoor = FindEntityByTargetname(mydoor,'reactor_wall_2');
30
end;
31
end;
32
 
33
function reactor_wall_03()
34
local mydoor  = FindEntityByTargetname(entity(0),'reactor_wall_3');
35
while not IsNullEntity(mydoor) do
36
  mydoor.frame = 1 - mydoor.frame;
37
mydoor = FindEntityByTargetname(mydoor,'reactor_wall_3');
38
end;
39
end;

Скажите пожалуйста, вероятность запутаться в этой куче почти похожих функций сильно отличается от вероятности запутаться в списке однотипных энтить, для которых Джек и кварк хотя бы рисуют стрелочки от активатора к цели?
То что скрипты решат все проблемы, это иллюзия такая. Ничерта они не решат. На сложную задачу лучше сделать отдельную энтить-контроллёр, а не ломать голову в поисках волшебной концепции, которая разом решит все проблемы человечества и подымет цену на нефть до 150 баксов за баррель.

Добавлено 09-06-2018 в 16:59:

ЗЫ. Забыл самое вкусное упомянуть - FireTargetsDelayed скорее всего расходует эдикты на создание задержки, либо задерживается средствами виртуальной машинки, но тогда не факт, что это корректно дружит со сменой уровней. Собственно в моде Жэки мы переодически и наблюдаем какие-то странно залипшие двери. Это ни в упрёк никому, это на самом деле реальная проблема.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Government-Man 09-06-2018 в 15:09:

Цитата:
Дядя Миша писал:
Это костыль


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

Цитата:
Дядя Миша писал:
Меняет фейковые двери на настоящие, ставя на их место func_wall


И что в этом такого? Если это выглядит как дверь и ведет себя как дверь, то это - дверь.

Цитата:
Дядя Миша писал:
Скажите пожалуйста, вероятность запутаться в этой куче почти похожих функций сильно отличается от вероятности запутаться в списке однотипных энтить, для которых Джек и кварк хотя бы рисуют стрелочки от активатора к цели?
То что скрипты решат все проблемы, это иллюзия такая. Ничерта они не решат. На сложную задачу лучше сделать отдельную энтить-контроллёр, а не ломать голову в поисках волшебной концепции, которая разом решит все проблемы человечества и подымет цену на нефть до 150 баксов за баррель.


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

Дядя Миша
Что за дурацкие претензии вообще? Мод вышел? Вышел. Работает? Работает. А как там внутри все устроено? Да всем на это плевать! Если мод полон багов - это вина разработчика, а не движка. Скрипты там или энтити или хрен пойми что - никого это не интересует. Игрок видит игру а не движок.


Отправлено Дядя Миша 09-06-2018 в 15:21:

Цитата:
Government-Man писал:
Если это выглядит как дверь и ведет себя как дверь, то это - дверь.

Россия тоже выглядит как страна, а на деле сырьевая колония.

Цитата:
Government-Man писал:
а теперь пытается доказать, что окружающие неправы.

То что окружающие неправы не нуждается в доказательствах с моей стороны. Это подразумевается по умолчанию

Цитата:
Government-Man писал:
Если мод полон багов - это вина разработчика, а не движка.

Расскажи как много гвоздей тебе удалось закрутить отвёрткой и почему ты так хреново это сделал. Может у тебя руки кревые?

__________________
My Projects: download page

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

Цитата:

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


Отправлено Government-Man 09-06-2018 в 15:57:

Цитата:
Дядя Миша писал:
Расскажи как много гвоздей тебе удалось закрутить отвёрткой


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


Временная зона GMT. Текущее время 22:47. Страницы (7): « 1 2 3 [4] 5 6 7 »
Показать все 99 сообщений этой темы на одной странице

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