LINUX.ORG.RU
ФорумGames

Казаки: Снова Война 1.52 — теперь в браузере и на всех основных платформах

 , ,


0

0

Приветствую всё сообщество ЛОР!

Рад сообщить, что спустя год работы мне удалось успешно портировать культовую игру «Казаки: Снова война» в браузер, а также подготовить Electron-сборки для основных платформ.

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

Подробности и полное описание проекта доступны в моём репозитории: https://github.com/MisterCoderman/cossacks-1.52-platform

Новость о проекте годичной давности: Казаки: Снова Война 1.52

Перемещено dataman из games



Последнее исправление: MR_CODERMAN (всего исправлений: 5)

Что за мусор в репозитории? Объектные файлы, dll, python cache, Dockerfile, который требует скрипта, SQLite базы. Не высер ли это ИИшный, да глупый git add *?

galanthus
()

а также подготовить Electron-сборки для основных платформ.

А вот у меня вопрос, если в Хроме тыкнуть - установить страницу как отдельное приложение - это разве не одно и тоже что Электрон? (это я типа не спрашиваю)

anonymous
()

Опять иишница? Иишница это хорошо, но я по секрету расскажу про такую технологию, как webassembly. Шок, но кучу софта написанного на классических языках (C/C++/Rust и иже с ними), можно собрать как webassembly и оно будет работать в браузере.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от peregrine

По секрету скажу: сначала нужно читать, а потом комментировать. Почти за 10 лет никому не удалось сделать то, что сделал я. В игре используется более 200 DLL-библиотек, подключаемых в качестве плагинов для миссий.

MR_CODERMAN
() автор топика
Ответ на: комментарий от MR_CODERMAN

Учи матчасть, друг мой.

Ну типа я знаю что такое PWA а для поднятие экспиреенса даже делал пару приложений на Электроне. И в чем особо разница? То что PWA будет будет более защишено? Или то локальная базетенка ставиться внутри или с наружи? Один фиг, жс-в8-хром и там и там.

P.S. Я тут как то ставил vscode на сервак, браузером залазишь практически локальный вскоде.

anonymous
()
Ответ на: комментарий от anonymous

PWA работает как обычный сайт, просто с красивым ярлыком и скрытой строкой адреса.

Electron приложение имеет полный доступ к ОС как обычное нативное приложение - может запускать другие программы, читать/писать ФС, добавляться в автозапуск, полноценно работать с сетью (любые TCP/UDP сокеты, а не только HTTP запросы и WS, да ещё и с CORS ограничениями), тащить с собой и использовать нативные либы (для какого-то функционала, которого нет в JS рантайме) и т. д.

KivApple ★★★★★
()
Ответ на: комментарий от MR_CODERMAN

А что по вашему такое локалхост?

Вы делали хоть раз приложение на (к примеру) на Django. Раньше мы юзали Х11 так он тоже по сути сетевой был :) Прикиньте вы запускаете ДЕ а он по сети молотит. (один фиг сокет)

Так вот по сути Электрон такая же фигня только там для удобства (я подозреваю пользователей windows) сделали возможность все это вместе сворачивать …

anonymous
()

Надо было не удалять, а на срачку ответить в стартовом сообщении описанием что дллки это моды. А сборки с вшитым браузером опция, а не суть. От блин, трагедию тут устроили в одном антракте и свернули весь концерт. Это ЛОР, к любой критике надо быть готовым, и к полезной и к бесполезной. Ты не первый день тут же.

@dataman это месяц вандализма тем =)

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 2)
Ответ на: комментарий от MR_CODERMAN

PWA может работать без сети после установки. Да даже обычный веб-сайт может работать без сети после первого открытия. Просто запускаешь Service Worker (да, они доступны любому сайту даже без установки PWA), кешируешь все нужные данные и перехватываешь запросы. Пока юзер не очистит данные для твоего сайта (или браузер не решит сам их очистить, потому что юзер давно на сайт не заходил), сайт сможет открываться без сети. Так как PWA это обычный сайт, просто с красивым ярлыком и скрытой строкой адреса, то он может тоже работать без Интернета, если его автор реализует Service Worker. Ну разве что браузер будет меньше иметь желания удалить данные сайта от ненужности, это относительно мелкая деталь.

KivApple ★★★★★
()
Ответ на: комментарий от KivApple

Electron приложение имеет полный доступ к ОС как обычное нативное приложение - может запускать другие программы, читать/писать ФС,

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

anonymous
()
Ответ на: комментарий от KivApple

Да знаю я все это :( Чтобы что пробовать я обычно читаю про это всякие книги …

anonymous
()
Ответ на: комментарий от dataman

Автор тему снес?

Если да, то не удивительно, люди делятся безвозмездно своим трудом/творчеством/проектами, а в ответ начинают через губу поучать. Хотя достаточно было бы сказать, «Чел, ты молодец. Молодец, что сделал, и молодец, что выложил в свободный доступ.»

krasnh ★★★★★
()
Последнее исправление: krasnh (всего исправлений: 1)
Ответ на: комментарий от krasnh

Лично я не поучал, просто скромно заметил что мог бы и не заворачиваться с электроном, при таком заголовке.

anonymous
()
Ответ на: комментарий от LINUX-ORG-RU

Спасибо.

В этой игре DLL — это не моды. Это скомпилированные скриптовые миссии. AI — это DLL, собранная в Visual Studio 6. Любая кампания или отдельная миссия тоже представляет собой DLL. По сути, собрать движок без них — значит получить пустую игру, где вы абсолютно один и ничего больше нет. Именно поэтому многие старались обходить эту игру стороной. Почти две сотни миссий и кампаний — это огромный объем работы. Долгий реверс, борьба с крашами, ошибками сегментации памяти, vtable, пустыми переходами и указателями this, указывающими в мусор из-за того, что Ghidra местами генерировала некорректный код… В общем, работы было очень много. В итоге самым правильным решением оказалось статически перекомпилировать DLL AI в C и сразу слинковать ее с WASM. Для миссий и кампаний был написан небольшой интерпретатор x86. На производительности это практически никак не сказалось: бинарные скрипты имеют размер до 1 МБ и очень быстро обрабатываются во время выполнения. Мультиплеер — это вообще отдельная история. Игра в браузере и через Electron ведет себя совершенно по разному. Но в целом, как мне кажется, результат получился очень хорошим.

В будущем для портирования на любую архитектуру достаточно просто пересобрать Electron-приложение под нужную платформу. Полная перекомпиляция всего проекта больше не требуется.

MR_CODERMAN
() автор топика
Ответ на: комментарий от LINUX-ORG-RU

это месяц вандализма тем =)

Угу. :(
Поэтому в модерском чатике я предложил в движке форума запретить новорегам вандалить топики.

dataman ★★★★★
()

Что только не обсудили, а вот то что ТС крутую штуку сделал, об этом вообще не поговорили.

Loki13 ★★★★★
()

Спасибо за проделанную работу. Игра запустилась(я так понимаю, все файлы, необходимые для игры, уже включены). Есть недоработки. Настройка «Скорость игры» сломана, не появляется рычажок на ползунке регулировки. Есть ли настройки горячих клавиш?

Overlabor5491
()
Ответ на: комментарий от Overlabor5491

Так про это писали еще во времена 1.42 https://habr.com/ru/articles/277067/

Автор решил не менять это. По сути это не баг, а просто решение такое. Там в игре над этим полем два режима. Быстрая игра и медленная. Там и выбирай что душе угодно.Горячие клавиши тут как в оригинальных казаках.

amperline
()
Ответ на: комментарий от Overlabor5491

Есть недоработки. Настройка «Скорость игры» сломана, не появляется рычажок на ползунке регулировки. Есть ли настройки горячих клавиш?

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

MR_CODERMAN
() автор топика
Ответ на: комментарий от MR_CODERMAN

Ещё вопрос. А какие минимальные системные требования для проекта? Я запустил на Core2Quad Q9650 3.00GHz, 4 gb ddr2, nvidia gt610, debian 13, и через пять минут игра превращается в слайд шоу. Насколько я помню, оригинальные Казаки летали на 4 Пентиуме. Возможно, какие-то проблемы с библиотеками, как посмотреть лог игры? Или это из-за использования Electron?

Overlabor5491
()
Ответ на: комментарий от Overlabor5491

Или это из-за использования Electron?

Оригинальный скайп тоже на пентиуме летал)

pihter ★★★★★
()
Ответ на: комментарий от Overlabor5491

Ещё вопрос. А какие минимальные системные требования для проекта? Я запустил на Core2Quad Q9650 3.00GHz, 4 gb ddr2, nvidia gt610, debian 13, и через пять минут игра превращается в слайд шоу. Насколько я помню, оригинальные Казаки летали на 4 Пентиуме. Возможно, какие-то проблемы с библиотеками, как посмотреть лог игры? Или это из-за использования Electron?

О это уже по требованиям далеко не оригинальные казаки)) На таком железе только докер развернуть и играть через веб на нормальном пк Это же современный стек и тут даже встроен х86 интерпретатор. для запуска точно нужно современное железо. Тут и webgl нативный,автор даже от sdl отказался. Я играю на i5 8gen Для такого железа как у тебя только оригинальная игра подойдет.

amperline
()
Ответ на: комментарий от Overlabor5491

А какие минимальные системные требования для проекта?

Процессор: Intel Core i5 6-го поколения / AMD Ryzen 3 или лучше

Оперативная память: 8 ГБ

Видеокарта: с поддержкой аппаратного ускорения WebGL 2.0

Место на диске: 2 ГБ

Интернет: требуется только для сетевой игры

Я запустил на Core2Quad Q9650 3.00GHz, 4 gb ddr2, nvidia gt610, debian 13, и через пять минут игра превращается в слайд шоу. Насколько я помню, оригинальные Казаки летали на 4 Пентиуме.

Для этой конфигурации есть версия 1.52 Legacy Edition. https://github.com/MisterCoderman/cossacks-1.52-Legacy

По ссылке вы можете ознакомиться с ней и запустить игру через Wine. Эта версия основана на SDL2 и включает все улучшения, появившиеся в версии 1.52 до выхода Electron-версии.

MR_CODERMAN
() автор топика
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария