project_cossacks
project_cossacks
Решил сделать улучшенную версию игры Казаки, благо исходники с 2017 года лежат в открытом доступе.
Что планируется сделать:
- Сохранить совместимость с версией 1_35.
- Сделать возможность создавать комнаты на сервере без проброса портов.
- Сделать улучшения, которые есть в патче Помор и других патчах.
- Портировать некоторые улучшения из версий 1_42 и 1_52.
Называться эта версия будет 1_35 update 2025.
Ссылки
Оригинальные исходники
https://github.com/GSC-fake/Cossacks-back-to-war
Версия 1_42 2017
https://github.com/ereb-thanatos/cossacks-revamp-2017
Версия 1_52 2025
https://github.com/MisterCoderman/cossacks-2025
Сервер Аллигатора
http://cossacks-server.net/en.html
Исходники сервера Аллигатора
https://github.com/rloger/SimpleCossacksServer
Статьи Ereb'а, который сделал версию 1_42
https://habr.com/ru/articles/277067/
https://habr.com/ru/articles/328212/
Интервью Аллигатора
http://www.newlcn.com/blog.php?tid=291
Сайты по Казакам
Полезные патчи:
https://cossacks-war.ru/cossacks/pomor
Сочитание клавиш shift+t для выделения всех боевых юнитов.
В сетевой игре при нажатии паузы показывается ник нажавшего.
Игра Казаки, в чате возможно отправлять заготовленные сообщений (ctr+буква в режиме чата, всего двадцать шесть заготовок).
https://cossacks-war.ru/cossacks/echoes-of-war
Дневник разработчика-некроманта
Я совершенно не знаком с технологиями применяемыми в игре, но хочу попробовать поковыряться.
А там используются WinApi, DirectX, DirectDraw, DirectPlay и другие технологии из 2000 года.
Буду разбираться.
251109
1_52
В исходных кодах активно используется WinApi
При запуске, игра попадает в меню.
\src\Main executable\Interface.cpp 488
PeekMessage
TranslateMessage(&msg);
DispatchMessage(&msg);
В меню генертся события, содержащие координаты мышки.
Эти функции описаны здесь
https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-translatemessage
https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-dispatchmessage
Вообще можно найти много инфы на MSDN
https://learn.microsoft.com/en-us/windows/win32/
https://learn.microsoft.com/en-us/windows/win32/api/
https://learn.microsoft.com/en-us/windows/win32/appuistart/designing-a-user-interface
Еще много старых сайтиков с инфой
https://firststeps.ru/mfc/winapi/r.php?52
https://vsokovikov.narod.ru/New_MSDN_API/Message_queue/fn_peekmessage.htm
http://www.directxtutorial.com/Lesson.aspx?lessonid=9-1-4
Там как раз приводится аналогичный пример:
while (true)
{
while (!::PeekMessage(&m_msgCur, NULL, NULL, NULL, PM_NOREMOVE))
{
// функция для работы пока нет сообщений
}
if (!::GetMessage(&m_msgCur, NULL, NULL, NULL)) break;
::TranslateMessage(&m_msgCur);
::DispatchMessage(&m_msgCur);
}
hwnd
Type: HWND
A handle to the window whose window procedure receives the message. This member is NULL when the message is a thread message.
251110
-
251111
Закинул в chatgpt исходники сервера Аллигатора.
Его программа состоит из 3х проектов на perl.
Планирую для прикола переписать его сервер на C++
251112
Закинул в cursor ai исходники сервера Аллигатора и задал переписать их на C++ версию.
Оно даже запускается.
251113
Надо отковырять в коде игры то место, где идет подключение к серверу Аллигатора.
ADDON_PROJECT_130/Ddex1.cpp
строка 3156
word dwVersion=135;
Похоже это то место, где задается версия игры отображаемая в комнате на сервере.
251114
Сделал репозиторий для сравнение кода версий 1_35, 1_42 и 1_52.
Поскольку в версии 1_42 некоторые файлы были переименованы(изменен регистр некоторых букв), то пришлось привести имена файлов в версии 1_35 в соответтветие с версией 1_42. Это нужно для того чтобы git правильно отобразил сделанные изменения.
251115
При нажатии в меню кнопки сетевая игра вызывается функция
\src\Main executable\Interface.cpp:998
processMultiplayer