XaeroX писал: Это называется "наговнять по-быстрому". Я бы за такое премии лишал. Имей в виду, если когда-нибудь будешь в мою контору на работу устраиваться
Ну нет. Можно писать медленно и хорошо, однако юзая опенсорсные либы. А вот писать хорошо продукт и свои велосипеды - намного труднее, опять же если время поджимает.
adamix писал: Печально. Спасибо за работу. Ждем сорцов.
вот это вот что за поток сознания?
Если сказать нечего - лучше ничего не говори. XaeroX если есть антидемидович, значит и есть и сам демидович - его полная противоположность?
fire64 писал: Вроде бы все отлично было, баги фиксились, совместимость увеличивалась и т.д.
ну со стороны - отлично, да. А с моей точки зрения проект давно превратился в подобие русской сказки "уши приклеили - хвост отвалился".
То есть поправишь один баг - а в другом моде что-то изломается.
Да и это вообщем-то не такая уж большая беда. Мне просто надоело его делать. Тем более от вас помощи никакой. Попросил скроллбар для меню накодить и что?
Поэтому сворачиваю разработку. Вон молодые адамиксы спят и видят, как бы выдать ксаш за свой проект. Надож им предоставить такую возможность =)
А вот и настоящий апдейт (в отличие от первоапрельского, вчерашнего).
Теперь мышка в меню использует виндовый курсор, а не рисованный.
А также добавлена новая система кредитсов в Half-Life (только в Half-Life, на остальные моды не влияет). Чтобы просмотреть её в действии - запустите c5a1
Добавлено 02-04-2011 в 17:35:
Это скорее всего последняя версия. Кстати SDK тоже обновился, перекачайте кому надо.
Сделаю полную ревизию исходников и выложу.
Вложение: xash_build1516.rar (479.1 кб)
Этот файл был скачан 171 раз. Дядя Миша проверил это вложение на вирусы 02-04-2011 в 12:59
А вот может я вообще глупость говорю, но как идея прикрутить брашевой энтити funkc_tank или пулемету крестик, который будет двигаться равномерно с дулом?
А что конкретно в нём не ясно? Расписал бы, мб кто нить знает, или читал об этом.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Имеем медленное сетевое соединение. Когда включен предиктинг, то игра клиента, не дожидаясь получения полной информации от сервера, "предугадывает" действия игроков и их оружий по "обрывкам" приходящей инфы. Это дело компенсирует лаги.
Наверное, я правильно себе это представляю.
Только как на уровне движка это работает - ХЗ.
>>не осилил я предиктинг, увы.
Дык не надо было его вообще делать. Один фиг его не будет в "старом" варианте движка, в котором несовместимые дллки.
Ku2zoff писал: Имеем медленное сетевое соединение. Когда включен предиктинг, то игра клиента, не дожидаясь получения полной информации от сервера, "предугадывает" действия игроков и их оружий по "обрывкам" приходящей инфы. Это дело компенсирует лаги.
Наверное, я правильно себе это представляю.
Ну если рассуждать на уровне "вот это автомобиль, у него есть колёса, они круглые, чтобы крутится. Значит когда колеса крутятся, автомобиль едет", то безусловно правильно.
А если вдаваться в технические подробности, то всё это дело выглядит вот как.
1. при мультиплеере сервер сознательно пропускает некоторые пакеты, в зависимости от настроек cl_updaterate, rate и cl_cmdrate.
2. но при этом может посылать usercmd_t чаще, чем сервер присылает новые дельта-апдейты.
3. непосланные (и посланные тоже), команды usercmd_t считаются с момента получения последнего дельта-обновления.
4. каждый кадр выполняется предиктинг этих комманд, как для оружия, так и непосредственно для игрока. В отличие от кваки, где предиктинг, т.н. "накопительный", т.е. в первый пропущенный кадр мы делаем одну итерацию, во второй две, итд, в халфе предиктинг ВСЕГДА делает кол-во итераций, в прямо зависимости от настроек cl_cmdbackup. А результаты предиктинга не только не херятся, но и бережно сохраняются в циркулярный массив на 64 слота. Вопрос лишь в том, что является инкрементатором этого массива и при каких условиях.
5. т.н. runfuncs на клиенте становятся равны true лишь на последней итерации предиктинга. В противном случае мы получим громадную пачку шагов плеера и кучу эвентов-дубликатов.
6. на клиенте есть три важные функции: txferLocalOverrides, TxferPredictionData, ProcessPlayerState. Первая из них копирует некоторые параметры из clientdata_t в player->curstate, в частности оригин повышенной точности для локального игрока. Вторая функция копирует параметры предиктинга для локального игрока, при инкрементировании той самой переменной, о которой я упоминал в четвертом абзаце. Тут я могу, конечно ошибаться, но общий смысл таков. Третья функция коллекционирует информацию плеер-стейтов со всех игроков. Причем эти игроки считаются обычными солидными энтитями, в отличие от, например QW, где для каждого игрока на клиенте запускается настоящий предиктинг. Правда в QW нету компенсации лагов на сервере, в отличие от HL.
7. код компенсатора лагов на сервере можно подглядеть в Hl2beta либо в OSHLDS (почти паста). Суть кода в том, что он анализирует кол-во пропущенных пакетов и на основании этого приблизительно рассчитывает местоположение лагающего игрока на сервере.
Важное отличие лагкомпенсатора от предиктинга заключается в том, что его результаты не являются фейковыми, а действительны для всех игроков.
К слову сказать, лаг компенсатор, я таки утащил из OSHLDS. Правда до конца не подключил, но думаю это несложно.
8. К вопросу о том, надо ли было делать предиктинг или нет. Без предиктинга (точнее без вызова тех трёх функций, о которых я упоминал в шестом пункте, в куче модов бы неработала половина фичей).
К примеру в той же параное бы напрочь исчезли брашевые энтити, в hlrally не удалось бы подключиться к серверу, кое-где был бы просто вылет в винду и прочее. В DMC, к примеру, при отключенном предиктинге исчезает HUD. Так что прежде чем нести херню, логично было бы поинтерисоваться почему я вообще продолжил работы в данном направлении.
9. когда я выложу сорцы там будет лежать файлик с моим рассуждениями и наблюдениями по поводу предиктинга. Неглупый человек, прочитав его, сэкономит массу времени при имплементации.
Добавлено 02-04-2011 в 20:58:
Цитата:
Ku2zoff писал: Один фиг его не будет в "старом" варианте движка, в котором несовместимые дллки.
вот конкретно этого предиктинга - не будет. А вообще он там уже был, начиная с 14 февраля 2010 года.