LCN :: Cossacks game League Forum Index



Back to LCN / Назад на LCN  
 
 FAQ  •  Search  •  Search members  •  Forum rules   •  Register  •  Profile  •  Log in to check your private messages  •  Log in
 Сервер для Казаков: Исходный код View next topic
View previous topic
Post new topicReply to topic
Author Message
[-RUS-]AlliGator



Joined: 15 Dec 2006
Posts: 218

PostPosted: Mon Jan 09, 2017 22:51 Reply with quoteBack to top

И так Very Happy

Сервер написан на perl (поддерживается версия 5.14+, возможно так же 5.10-5.12, надо прочекать). Для чата казаки используют IRC протокол, нужно так же установить любой IRC сервер, например ngircd. И создать там каналы #GSP!cossacks (основной чат) и #GSP!cossacks!A2V001 (чат по версии игры), иначе права опа получит первый вошедший.

Установка:


  • Скачать 3 модуля исходников. https://github.com/rloger/GSC-Streamer (Модуль для работы с GSC протоколом), https://github.com/rloger/GSC-Server (Фреймворк сервера), https://github.com/rloger/SimpleCossacksServer (Сам сервер).
  • Установить эти модули также, как и любой perl модуль. Проще всего это сделать с помощью cpanminus. Порядок установки важен

    Code:
    sudo cpanm ./GSC-Streamer/ ./GSC-Server ./SimpleCossacksServer


  • Далее скопировать куда-нибудь конфиг из etc/simple-cossacks-server.conf и директорию с шаблонами share/, и отконфигурировать сервер
    Пример конфига:

    Code:

    host          = 0.0.0.0         # Хост. Как обычно, 0.0.0.0 что бы слушать все доступные ip сервера
    port          = 34001           # Порт
    templates     = ./share         # Путь к шаблонам
    access_log    = ./access_log    # Путь к access лог
    error_log     = ./error_log     # Путь к error логу
    table_timeout = 5000            # Интервал в миллисекундах, как часто обновлять список игр у пользователей
    gettbl_log_interval = 2         # Логировать только каждый 2'ой запрос списка игр (GETTBL). При частом обновлении они сильно захламляют лог
    chat_server = osiris.2gw.net    # Хост IRC сервера для юзеров
    show_started_rooms = 1          # Показывать комнаты, в которых уже началась игра
    show_started_room_info = 1      # Показывать расширенную информацию о комнатах, в которых уже началась игра


  • Запуск

    Code:
    simple-cossacks-server -c /etc/simple-cossacks-server.conf


    Для теста можно запускать сервер непосредственно из папки SimpleCossacksServer

    Code:
    perl -mlib=lib script/simple-cossacks-server -c etc/simple-cossacks-server.conf



Функции интеграции с LCN и WCL по умолчанию отключены, их можно раскомментировать в исходном коде, однако потребуется получить доступ к соответствующим API этих лиг. Пример файла с LCN топом http://cossacks-server.net/exemples/ranking.json.

В коде также есть шаблоны для "Завоеваний Америки", однако они очень давно не обновлялись и навряд ли заведутся без допилки.

PS. Первые строки писались 4 года назад, да и сервер этот изначально задумывался как прототип. Многие вещи я бы сейчас делал по другому)


Last edited by [-RUS-]AlliGator on Tue Jan 10, 2017 14:22; edited 1 time in total
 
View user's profileSend private message
[Kiev]^XAOC^
LCN: 7 medals
Rliga: 17 medals



Joined: 05 May 2013
Posts: 261
Location: Питер))

PostPosted: Tue Jan 10, 2017 10:03 Reply with quoteBack to top

прикольно, но для чего это нужно?
 
View user's profileSend private message
[-RUS-]AlliGator



Joined: 15 Dec 2006
Posts: 218

PostPosted: Tue Jan 10, 2017 14:25 Reply with quoteBack to top

[Kiev]^XAOC^, Ты же вроде начинающий программист) Сервер теперь опен сорс - можно запилить какую нибудь фитчу к серверу, или поднять свой сервер.
 
View user's profileSend private message
[-NF-]Prototype
LCN: Top 50 player
Restliga: 1 medal



Joined: 14 May 2010
Posts: 482
Location: Italy

PostPosted: Tue Jan 10, 2017 17:52 Reply with quoteBack to top

воу) эх..покапался бы,если других дел небыло..

_________________
посмотри, он без армии в казах был в конце игры (c)^ARAGORN^
Вз-н
 
View user's profileSend private messageYahoo Messenger
[Kiev]^XAOC^
LCN: 7 medals
Rliga: 17 medals



Joined: 05 May 2013
Posts: 261
Location: Питер))

PostPosted: Tue Jan 10, 2017 19:10 Reply with quoteBack to top

сделай антигопника Very Happy и что бы тупых ников не было. (не буду их цитировать)
з.ы что бы его открыть надо установить "5.14+, возможно так же 5.10-5.12, надо прочекать" ????
 
View user's profileSend private message
Эреб



Joined: 25 Feb 2016
Posts: 69

PostPosted: Wed Jan 11, 2017 0:57 Reply with quoteBack to top

Спасибо! Теперь будет хоть полная картина происходящего) Кстати, вот чего-чего, а perl в качестве игрового сервера я увидеть не ожидал Very Happy
 
View user's profileSend private message
[Kiev]^XAOC^
LCN: 7 medals
Rliga: 17 medals



Joined: 05 May 2013
Posts: 261
Location: Питер))

PostPosted: Wed Jan 11, 2017 18:17 Reply with quoteBack to top

все, проблем нет, через VS Code многое открывается. смотрю там комментарии даже есть Smile а где дизайн сервера?
 
View user's profileSend private message
[EG]JoFiBaTaL
Королева флуда
Рядовой Холмс

LCN: 16 medals
Rliga: 14 medals



Joined: 15 Apr 2010
Posts: 2771
Location: БОМЖ

PostPosted: Wed Jan 11, 2017 18:36 Reply with quoteBack to top

тут можно звания забабахать?
Никто соурс казаков не хочет выложить?)
 
View user's profileSend private messageSend e-mail
[-RUS-]AlliGator



Joined: 15 Dec 2006
Posts: 218

PostPosted: Wed Jan 11, 2017 20:40 Reply with quoteBack to top

[Kiev]^XAOC^ wrote:
сделай антигопника Very Happy и что бы тупых ников не было. (не буду их цитировать)
з.ы что бы его открыть надо установить "5.14+, возможно так же 5.10-5.12, надо прочекать" ????

[Kiev]^XAOC^ wrote:
все, проблем нет, через VS Code многое открывается. смотрю там комментарии даже есть Smile

Что бы работал, да надо поставить Perl. А исходники, конечно, можно в любом редакторе смотреть))

[Kiev]^XAOC^ wrote:
а где дизайн сервера?

Шаблоны в share/cs/ (share/ac/ для ЗА). Через VS как формочки открыть не получится Very Happy. Там у Казаков собственный язык разметки, CML (Очевидно по аналогии с HTML - Cossacks Markup Language Very Happy). По нему, и вообще по протоколу у меня есть недоделанная дока, скоро выложу.

Эреб wrote:
Спасибо! Теперь будет хоть полная картина происходящего) Кстати, вот чего-чего, а perl в качестве игрового сервера я увидеть не ожидал Very Happy

Ну в mail.ru например и на порядки более высоконагруженные проекты на нем работают, и ничего Very Happy А мне как перловику, разумется, было проще всего написать на нем. Хотя там как можно понять по исходному коду предусматривался и HTTP мост, для PHP, что бы можно было подключить больше народу. А оригинальный GSC сервер написан на C/C++, PHP (под Apache) в качестве бекенда, и MySQL.

[EG]JoFiBaTaL wrote:
тут можно звания забабахать?

Довольно много чего можно сделать - звания, кланы и любую свою логику, просмотр записей всех игр - было бы время и желание. Благо интерфейс там не захардкожен, а написан все том же CML. Можно даже залить с сервера на клиент собственную DLL'ку, и дергать ее функции из того же CML.
Однако есть момент, звания будут отображаться только в лобби, в комнате же, как и на GSC сервере, отображаться не будут. Можно поправить похоже только правкой самих Казаков.

[EG]JoFiBaTaL wrote:
Никто соурс казаков не хочет выложить?)

Уже) [Kiev]FSou1 выложил https://github.com/GSC-fake/Cossacks-back-to-war
 
View user's profileSend private message
[EG]JoFiBaTaL
Королева флуда
Рядовой Холмс

LCN: 16 medals
Rliga: 14 medals



Joined: 15 Apr 2010
Posts: 2771
Location: БОМЖ

PostPosted: Thu Jan 12, 2017 23:12 Reply with quoteBack to top

господа го сделаем нормальную игру?) И побьем казаки 3?
 
View user's profileSend private messageSend e-mail
[-1Nt-]_VRV
LCN: 10 medals
Rliga: Third place top
Empire: 8 medals



Joined: 12 Nov 2007
Posts: 2252
Location: Нижний Новгород

PostPosted: Fri Jan 13, 2017 9:23 Reply with quoteBack to top

[EG]JoFiBaTaL
а че их побивать, они и так мертвые лежат..

_________________
«Пудра не порох, букля не пушка, коса не тесак, и я не немец, а природный русак» Суворов А.В. "с".
 
View user's profileSend private messageSend e-mailICQ Number
[-NF-]Prototype
LCN: Top 50 player
Restliga: 1 medal



Joined: 14 May 2010
Posts: 482
Location: Italy

PostPosted: Tue Feb 14, 2017 14:02 Reply with quoteBack to top

выдает такую ошибку при установке
Code:
Finding GSC::Server::CommandController on cpanmetadb failed.

т.е это вручную нужно устаналивать как я понимаю?[/code]

_________________
посмотри, он без армии в казах был в конце игры (c)^ARAGORN^
Вз-н
 
View user's profileSend private messageYahoo Messenger
[-RUS-]AlliGator



Joined: 15 Dec 2006
Posts: 218

PostPosted: Thu Feb 16, 2017 21:51 Reply with quoteBack to top

Странно, он должен быть в GSC-Server репе. Да, его надо вручную ставить перед SimpleCossacksServer как и написано. А что за ОС, чем ставишь, cpanm?
 
View user's profileSend private message
[-NF-]Prototype
LCN: Top 50 player
Restliga: 1 medal



Joined: 14 May 2010
Posts: 482
Location: Italy

PostPosted: Fri Feb 17, 2017 3:34 Reply with quoteBack to top

[-RUS-]AlliGator wrote:
Странно, он должен быть в GSC-Server репе. Да, его надо вручную ставить перед SimpleCossacksServer как и написано. А что за ОС, чем ставишь, cpanm?

ОС: windows 10
да, ставил с cpanm вот так
Code:
cpanm ./GSC-Streamer/ ./GSC-Server ./SimpleCossacksServer


во время установки заметил лишь одну ошибку, эту:
Code:

Finding GSC::Server::CommandController on cpanmetadb failed.

ну а после пробы запустить сервер,вот так:
Code:
perl -mlib=lib script/simple-cossacks-server -c etc/simple-cossacks-server.conf

выдает длинную ошибку:
Code:
Could not load class (GSC::Server::CommandController) because : Can't locate GSC/Server/CommandController.pm in @INC (you may need to install the GSC::Server::CommandController module) (@INC contains: lib C:/Strawberry/perl/site/lib/MSWin32-x64-multi-thread C:/Strawberry/perl/site/lib C:/Strawberry/perl/vendor/lib C:/Strawberry/perl/lib .) at C:/Strawberry/perl/site/lib/Mouse/Util.pm line 286.
 at C:/Strawberry/perl/site/lib/Mouse/Util.pm line 295.
        Mouse::Util::load_class("GSC::Server::CommandController") called at C:/Strawberry/perl/site/lib/Mouse/Meta/Class.pm line 58
        Mouse::Meta::Class::superclasses(Mouse::Meta::Class=HASH(0x2bc5e80), "GSC::Server::CommandController") called at C:/Strawberry/perl/site/lib/Mouse.pm line 35
        Mouse::extends("GSC::Server::CommandController") called at lib/SimpleCossacksServer/CommandController.pm line 3
        SimpleCossacksServer::CommandController::BEGIN() called at lib/SimpleCossacksServer/CommandController.pm line 3
        eval {...} called at lib/SimpleCossacksServer/CommandController.pm line 3
        require SimpleCossacksServer/CommandController.pm called at lib/SimpleCossacksServer.pm line 4
        SimpleCossacksServer::BEGIN() called at lib/SimpleCossacksServer/CommandController.pm line 3
        eval {...} called at lib/SimpleCossacksServer/CommandController.pm line 3
        require SimpleCossacksServer.pm called at script/simple-cossacks-server line 26
BEGIN failed--compilation aborted at lib/SimpleCossacksServer/CommandController.pm line 3.
Compilation failed in require at lib/SimpleCossacksServer.pm line 4.
BEGIN failed--compilation aborted at lib/SimpleCossacksServer.pm line 4.
Compilation failed in require at script/simple-cossacks-server line 26.


запускаю эту комманду из папки SimpleCossacksServer..
как я понимаю ссылается на отсутствие модуля..

_________________
посмотри, он без армии в казах был в конце игры (c)^ARAGORN^
Вз-н
 
View user's profileSend private messageYahoo Messenger
Эреб



Joined: 25 Feb 2016
Posts: 69

PostPosted: Thu May 11, 2017 20:07 Reply with quoteBack to top

[-RUS-]AlliGator wrote:
И так Very Happy
И так Very Happy

Выложил исходники на Гитхаб, они должны без проблем собираться под Visual Studio 2015.
Собрал под версией 1.42 и залил на мегу и на рутор (там ещё с модерацией не ясно).
[-1Nt-]_VRV любезно залил архив и на Яндекс.Диск

Аллигатор, твой черёд =)
Ну же, пожалуйста, допили сервер под udp hole punching, чтобы люди могли из-за NAT'a играть. Я бы с радостью сам pull request сделал, но в перле не силён :/

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

Прятного кодинга! Very Happy
 
View user's profileSend private message
Display posts from previous:      
Post new topicReply to topic


 Jump to:   



View next topic
View previous topic
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: All times are GMT