Новые сообщения Участники Правила Поиск

Страница 1 из 11
Модератор форума: $оучаснеG, thecre, SLAwww 
Форум » Serious Sam » Serious Sam 1 (SE/FE) » Serious Sam Engine 1.10. Ошибки. Улучшения.
Serious Sam Engine 1.10. Ошибки. Улучшения.
[Rocketers]_Alex Среда, 30.03.2016, 05:29 | Сообщение # 1


Сообщений: 44
Награды: 1
Замечания: 0%
 
Загрузил я исходники Serious Engine 1.10.
Скомпилировал. Все прекрасно собралось. Ну думаю... сейчас порадуюсь.

Добавил контент от 1.07 и запустил.

И сразу... Синглплеер не запускается... моды не стартуют из меню...
Клиентская часть GameAgent - не работает...
Поиск серверов в локальной сети отсутствует (нет соответствующей части кода вообще)

первая ошибка связана с расширением .wld.wld в имени файла
вторая в неверном пути в функции _execv, которую я заменил на более правильную CreateProcess
вызываемую из kernel - а не из msvcrt

Ну и так далее...

Чтобы было вот так:
Serious Sam Engine 1.10 Fix

качаем:
==DIFF=SE1v1.10.zip

В начале я пристроил legacy master server протокол к GameAgent - получилось не очень...
GameAgent написан Анжело и после того, как я заставил его работать - выяснилось, что
работает он криво, пропуская 15-20% серверов в списке. Налицо непродуманный алгоритм
на неблокирующем сокете. Чувствуется некорректно вырезанный алгоритм GameSpy.

Я написал отдельный поток - на блокирующем сокете с функцией select - получилось отлично.

@SLawww - я думаю имеет смысл посмотреть и добавить на GitHub.
Абсолютно все Open Source GPL v2. Я использовал одну функцию от Luigi Auriemma
распространяемую под лицензией GPL v2.
http://aluigi.altervista.org/papers.htm#gsmsalg

Это известный тестер игр, нашедший уязвимости в сотнях игр. Благодаря ему - мы имеем версию 1.07

вместо 1.05. Он, в том числе написал ряд уникальных функций для работы по протоколы GameSpy. Все

под лицензией GPL v2. Одна из его функции к примеру не имеет аналогов - способна как шифровать,

так и дешифровать данные по более новому протоколу.
Я использовал ее в мастер сервере для Serious Sam 2.
Но здесь она нам не требуется.

Остальное написал на лету - так как знаю этот протокол.


SLAwww Среда, 30.03.2016, 10:42 | Сообщение # 2


Рряа? ^..^
Сообщений: 2363
Награды: 26
Замечания: 0%
 
Отлично, спасибо! А можешь сделать пулл реквест на ГитХабе?

Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
[Rocketers]_Alex Среда, 30.03.2016, 17:08 | Сообщение # 3


Сообщений: 44
Награды: 1
Замечания: 0%
 
Сделал

SLAwww Четверг, 31.03.2016, 01:53 | Сообщение # 4


Рряа? ^..^
Сообщений: 2363
Награды: 26
Замечания: 0%
 
Я это добавлю в главную ветку, но есть несколько замечаний. Во-первых, MSLegacy.h стоило добавить к файлу проекта, во-вторых, в нём не хватает include-guard'ов (есть только pragma once, но во всех остальных хидерах движка есть guardы, так что лучше не нарушать традицию). В-третьих, было бы очень хорошо сделать URL мастер-сервера shell-переменной, чтобы хранилась в PersistentSymbols.ini. В любом случае, спасибо за полезный вклад!

Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
[Rocketers]_Alex Четверг, 31.03.2016, 16:13 | Сообщение # 5


Сообщений: 44
Награды: 1
Замечания: 0%
 
Действительно - забыл MSLegacy.h добавить к файлу проекта)
URL я сначала сделал "persistent", а потом убрал, сделал - как и URL для GameAgent

Код
  _pShell->DeclareSymbol("user CTString ga_strServer;", &ga_strServer);
  _pShell->DeclareSymbol("user CTString ga_strMSLegacy;", &ga_strMSLegacy);
  _pShell->DeclareSymbol("user INDEX ga_bMSLegacy;", &ga_bMSLegacy);


Спасибо что добавил SLAwww.
Если игроки будут видеть версию 1.10 в браузере игры - то скорее обратят на нее внимание.

Добавлено (31.03.2016, 03:09)
---------------------------------------------
Да сейчас заметил - забыл extern перед

Код
//extern CTString ga_strServer = "master1.croteam.org";
CTString ga_strServer = "master1.42amsterdam.net";
//extern CTString ga_strMSLegacy = "master1.croteam.org";
CTString ga_strMSLegacy = "42amsterdam.net";

BOOL ga_bMSLegacy = TRUE;


Ну все три замечания можно легко исправить одним commit-ом.

Добавлено (31.03.2016, 16:13)
---------------------------------------------
@SLAwww - я сделал пулл реквест на основе твоих замечаний.
Все исправлено.

BuIlDaLiBlE Четверг, 31.03.2016, 21:13 | Сообщение # 6


Сообщений: 568
Награды: 10
Замечания: 20%
 
Вот так и знал что исходники будут с багами. Спасибо что фиксишь!
Возможно что-то и запилю в будущем с исходниками, а пока надо учить C++...
Сообщение отредактировал BuIlDaLiBlE - Четверг, 31.03.2016, 21:13



Bp Services ©:
http://bit.ly/bp_services
Denil Вторник, 26.04.2016, 04:01 | Сообщение # 7


Сообщений: 111
Награды: 0
Замечания: 0%
 
Время делать соурс-порт под андроид








thecre Вторник, 26.04.2016, 06:50 | Сообщение # 8


Сообщений: 3426
Награды: 26
Замечания: 0%
 
Делай

Denil Вторник, 26.04.2016, 16:21 | Сообщение # 9


Сообщений: 111
Награды: 0
Замечания: 0%
 
2010 visual studio не подойдет ?








thecre Вторник, 26.04.2016, 16:26 | Сообщение # 10


Сообщений: 3426
Награды: 26
Замечания: 0%
 
Сейчас предпочитают Android Studio :)

SLAwww Вторник, 26.04.2016, 16:43 | Сообщение # 11


Рряа? ^..^
Сообщений: 2363
Награды: 26
Замечания: 0%
 
На гитхабе в текущей версии уже встречаются упоминания платформы Android.

Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
[Rocketers]_Alex Пятница, 29.04.2016, 07:35 | Сообщение # 12


Сообщений: 44
Награды: 1
Замечания: 0%
 
@SLAwww

Всё-таки лучшим улучшением для Serious Engine 1.10 была бы сетевая совместимость
с версией 1.07. Возможность подключения из игры версии 1.10 к игровым серверам версии 1.07.
Версии и так очень схожи. Можно например запустить DM или СOOP сервер версии 1.07 c
технологическим уровнем - и подключиться к нему из версии игры 1.10.

Я смотрел с помощью WireShark как идут пакеты в версиях 1.07 и 1.10 и могу сказать,
что на уровне интернет протокола версии полностью совместимы. А вот содержание
пакетов имеет различия. То есть поезд тот-же, а пассажиры частично различаются.

С помощью редактора я выяснил какие Entities выдают ошибку CRC error DIFF при подключении
к серверу 1.07. Вот полный их список:

Basic Entities:
MessageItem
KeyItem
AmmoPack
AmmoItem
WeaponItem
AmorItem
HealtItem

Additional Entities:
RollingStone

Enemies:
All

Если эти Entities отсутствуют на карте то можно свободно подключиться к серверу 1.07
из игры с версией 1.10.

Как я предполагаю - возможно эти Entities иначе описываются в стриме.
Я еще плохо ориентрируюсь в движке и точно сказать не могу.

Я поднял вопрос совместимости из-за игрового комьюнити. Оно и так пережило
не лучшие времена из-за отключения GameSpy.
Количество активных уникальных записей на основе (хоста ip и GUUID) в базе самтрека сократилось приблизительно с 40000 до 10000, то есть осталась
только четверть. Люди очень ленивы по своей природе и большинству даже лень набить нужное слово в поисковике.
Они просто перестают играть. Не работает - значит не работает, и не ищут решения.
Без совместимости с версией 1.07 - версия 1.10 так и останется уделом одиночек.
К тому же я заметил, что при подключении линукс версии 1.10 к windows версии 1.10 - тоже возникает ошибка "CRC error DIFF", что меня огорчило.
Хотелось бы видеть версию 1.10 совместимую на уровне сети с линукс и мак версиями, а так-же с режимом совместимости с версией 1.07
Это соберёт игровое комьюнити, вместо того чтобы дробить его на разные версии и платформы.
При наличии совместимости у игроков будет стимул переходить на версию 1.10, без совместимости нет.
Играть будут там - где будет народ.

Чем я могу помочь в данном вопросе... Без наличия исходников версии 1.07 копаться в стриме и в
пакетах - требует времени и усилий. Пока я заняться этим не могу.
Но при наличии совместимости - я могу добавить исходники мастер сервера на гитхаб. Это будет иметь смысл. Единое комьюнити, клиент игры и мастер сервер.


seriously_petr Пятница, 29.04.2016, 08:43 | Сообщение # 13


Сообщений: 429
Награды: 2
Замечания: 0%
 
[Rocketers]_Alex, Глянул и сравнил эти энтити, ещё и просто Item. Вроде код не отличается. Похоже проблема глубоко зарыта. :(

[Rocketers]_Alex Воскресенье, 28.08.2016, 00:00 | Сообщение # 14


Сообщений: 44
Награды: 1
Замечания: 0%
 
Обнаружил проблему при попытке собрать с поддержкой DiectX.



Проблема банальна и заключается в том, что хидер winnt.h включен раньше чем windows.h


Windows.h сначала включает BaseTsd.h, а потом winnt.h
BaseTsd.h содержит определение:
Код
#define POINTER_64 __ptr64


Нужно в данном случае просто избавиться от посредника в определении и прописать в
VS2010
C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\winnt.h

VS2013+
C:\Program Files\Windows Kits\8.1\Include\um\winnt.h


После этого все нормально скомпилируется с поддержкой DirectX,
Кстати я заметил, что один парень получил подобную проблему:
Build error SDK issue? #40


Форум » Serious Sam » Serious Sam 1 (SE/FE) » Serious Sam Engine 1.10. Ошибки. Улучшения.
Страница 1 из 11
Поиск: