[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: connect 
pff.clan.su - Форум » Игра NFK » NFK [R2] » Linux Dedicated (Для тех, кто отважится его писать)
Linux Dedicated
connectДата: Чт, 2009-11-05, 09:51 | Сообщение # 1
Активный участник
Группа: Модераторы
Сообщений: 204
Награды: 1
Статус: Offline
Тема для оптимистов happy Если кто-то осмелится написать dedicated server под *nix системы, ему могут пригодиться мои рассуждения...

Создание дедика под никсы прежде всего будет заключаться в портиорвании родного кода из нфк. Так как он написан на Delphi(pascal), то самым ближайшим его родственником будет Lazarus(free pascal). Kylix я тут в расчет не беру, т.к. его разработка приостановлена и он является платным продуктом.

Итак Lazarus. Я не буду касаться вопросов его установки, документации на этот счет в Сети достаточно. Перейдем сразу к импорту. Lazarus умеет конвертировать delphi проекты в свой формат, без этого ничего не выйдет. И тут мы столкнемся с первыми и самыми очевидными проблемами.

В *nix системах нет некоторых юнитов, использованных в написании нфк. Как некоторых стандартных (windows, winsock,...), так и дополнительных (PowerDraw, DXTimer, ...).

Добавлено:

Quote
The following units were not found:
Windows, DirectX, DirectXGraphics, DXInput, Psock, NMHttp, ScktComp, PowerTiming, VTDUnit, Power D3D, PowerFont, MPlayer, wave, MMSYSTEM, jpeg, PDrawEx, AGFUnit, PInput, PowerTypes, winsock

Это связано с тесной привязкой юнитов к архитектуре Windows.

Однако этот факт не является в нашем случае фатальным. PowerDraw пакет, который является посредником между Delphi и DirectX, нужен прежде всего для отрисовки графики, ненужной для dedicated сервера. Для остальных же компонентов вполне можно подыскать аналоги.

Поискам этих компонентов я и посвящу ближайшие посты.

Ссылки для размышлений:

  • http://wiki.lazarus.freepascal.org/lNet (TCP/UDP)
  • http://wiki.lazarus.freepascal.org/Multithreaded_Application_Tutorial
  •  
    EnforcerДата: Чт, 2009-11-05, 11:19 | Сообщение # 2
    Инжинер
    Группа: Модераторы
    Сообщений: 1161
    Награды: 9
    Статус: Offline
    sad хрена сибе так это сколько всего надо вырезать это фактически надо оставить голый сетевой код + даже если найти аналоги не факт что они будут правильно работать

     
    connectДата: Чт, 2009-11-05, 22:53 | Сообщение # 3
    Активный участник
    Группа: Модераторы
    Сообщений: 204
    Награды: 1
    Статус: Offline
    DXTimer

    В консольном приложении нельзя пользоваться стандартным таймером. Ничего достойного за сегодня не нашлось. Поэтому придется его написать.

     
    EnforcerДата: Чт, 2009-11-05, 23:02 | Сообщение # 4
    Инжинер
    Группа: Модераторы
    Сообщений: 1161
    Награды: 9
    Статус: Offline
    function crazytimer(hz: int);
    var
    i: integer;
    rak_na_gore: integer:=1;
    svisnul: integer:=0;

    for i:=1 to 1000 do
    if i>= 1000 then i:=0;
    begin
    i:=i+1;
    return i;
    end;
    until rak_na_gore=svisnul; // wink

    if fps... we replace with if crazytimer=томуто, то...

    Во ! biggrin Папский таймер




    Сообщение отредактировал Enforcer - Чт, 2009-11-05, 23:11
     
    connectДата: Сб, 2009-11-07, 14:27 | Сообщение # 5
    Активный участник
    Группа: Модераторы
    Сообщений: 204
    Награды: 1
    Статус: Offline
    История продолжается. Чтобы отслеживать нажатие кнопок без остановки хода исполнения кода дедика, пришлось переходить на многопоточную структуру. Этот проект получается не только моим первым линуксовым, но и моим первым многопоточным приложением. happy

    Добавлено (2009-11-07, 15:27)
    ---------------------------------------------
    На замену компонентов для работы с Сетью был найден комплект компонентов LNET.
    От ввода команд с серверной консоли отказался, посему второй поток тоже пока не нужен.
    Двигаемся дальше.

     
    EnforcerДата: Сб, 2009-11-07, 15:00 | Сообщение # 6
    Инжинер
    Группа: Модераторы
    Сообщений: 1161
    Награды: 9
    Статус: Offline
    smile ну и правильно

     
    pff.clan.su - Форум » Игра NFK » NFK [R2] » Linux Dedicated (Для тех, кто отважится его писать)
    Страница 1 из 11
    Поиск: