Наш новый движок Strelka!!!

Тема в разделе "Машинное отделение", создана пользователем SDChess, 5 май 2007.

  1. SDChess
    Оффлайн

    SDChess Учаcтник

    Репутация:
    6
    Новогодний подарок любителям шахмат и программистам всего мира сделал Юрий Осипов!
    Новая версия знаменитой Стрелки 2.0B (Strelka 2.0B). Исходные файлы движка теперь общедоступны!
    http://sdchess.ru/

    SDChess
     
  2. Aleksandr Sh.
    Оффлайн

    Aleksandr Sh. Учаcтник

    Репутация:
    0
    Увы, больше месяца нет доступа к http://www.sdchess.ru/, не через прокси не на прямую. Просто чистый экран, без каких-либо ошибок... Что IE, что в Opere
     
  3. SDChess
    Оффлайн

    SDChess Учаcтник

    Репутация:
    6
    Советую пользоваться моей ссылкой http://sdchess.ru/

    SDChess
     
  4. immortal223
    Оффлайн

    immortal223 Вячеслав

    Репутация:
    0
  5. Vertu
    Оффлайн

    Vertu Старожил

    Репутация:
    4
    КРУТО!!!
     
  6. thenewone
    Оффлайн

    thenewone Евгений Манев

    Репутация:
    1
    Благодарности Юрию Осипову.
     
  7. Aleksandr Sh.
    Оффлайн

    Aleksandr Sh. Учаcтник

    Репутация:
    0
  8. SDChess
    Оффлайн

    SDChess Учаcтник

    Репутация:
    6
    Уважаемые любители шахмат, движок не имеет своего достойного логотипа!
    Просим Вас помочь и ИСПРАВИТЬ это положение, создав достойный LOGO российской СТРЕЛКЕ!

    SDChess
     
  9. drowsy
    Оффлайн

    drowsy Учаcтник

    Репутация:
    0
    могу вам стрелку нарисовать, ну или гарпун :D
    пронзающую шахматную доску, или рыбину какую
     
  10. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Спасибо, Юрий!
    Ждём появления новой волны сильных движков-новичков "из ниоткуда в 2800" :)
     
  11. immortal223
    Оффлайн

    immortal223 Вячеслав

    Репутация:
    0
    Denis P. Mendoza сделал 64-битную Стрелку, на моём компьютере она работает примерно на 300 узлов быстрее чем х86 версия!
    Скачать Strelka 2.0 B x64
     
  12. SDChess
    Оффлайн

    SDChess Учаcтник

    Репутация:
    6
    Если можете, то Рисуйте. (размер 100х50).
    Главное, чтобы получилось красиво и со смыслом!

    SDChess
     
  13. drowsy
    Оффлайн

    drowsy Учаcтник

    Репутация:
    0
    А размер пофигу, если в svg рисовать
     
  14. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    А сколько выигрывает Рыбка от 64-битности?
     
  15. immortal223
    Оффлайн

    immortal223 Вячеслав

    Репутация:
    0
    около 50-60% скорости
     
  16. apm
    Оффлайн

    apm Учаcтник

    Репутация:
    0
    Исходники есть, однако под gcc не собираются :(
    придется покорпеть над этим
     
  17. Осипов Юрий
    Оффлайн

    Осипов Юрий Учаcтник

    Репутация:
    11
    Небольшое замечание: для сборки Стрелки не нужно компилировать все С-файлы. Компилировать нужно только: strelka.c, parse.c и consts.c, а потом их слинковать. Ну типа так:

    cl.exe /c /O2 /D "WIN32" consts.c
    cl.exe /c /O2 /D "WIN32" parse.c
    cl.exe /c /O2 /D "WIN32" strelka.c

    link.exe strelka.obj parse.obj consts.obj
     
  18. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Для сборки Стрелки с помощью gcc надо прежде всего заменить __int64 на long long по всему коду.
     
  19. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    typedef long long __int64;
     
  20. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Ну да, например так. Только не забыть в #ifndef _MSC_VER это обернуть, чтобы везде одинаково собиралось.
     
  21. Booot
    Оффлайн

    Booot Учаcтник

    Репутация:
    0
    Написал Юрию на имейл, но видимо он его еще не прочитал, посему дублирую здесь: в исходном коде Стрелки , похоже, есть ошибка при определении подвижности пешек (eval.c)

    Фрагмент:
    // Вычисляем по фигурам - их подвижность и атаки на чужого короля
    // Белые пешки
    mob_w = Board->mp[WhitePawn];
    mob_w = (((mob_w & 0xFFFF7F7F7F7F7F7F) << 2) | (mob_w & 0x00FEFEFEFEFEFEFE)) << 7;

    Здесь вместо 2 должна стоять 9. При определении подвижности черных пешек та же ошибка. Это может повлиять на вычислении безопасности короля (при пешечном штурме) и на оценку связанных проходных (когда проходная может пойти на поле, защищенное другой пешкой).
     
  22. syrdon
    Оффлайн

    syrdon Учаcтник

    Репутация:
    0
    [c]mob_w = (((mob_w & 0xFFFF7F7F7F7F7F7F) << 2) | (mob_w & 0x00FEFEFEFEFEFEFE)) << 7;[/c]
    Нет, всё верно. Сперва на 2, а потом ещё на 7.
     
  23. Booot
    Оффлайн

    Booot Учаcтник

    Репутация:
    0
    Сначала идет определение всех битых полей для всех пешек "налево", потом всех битых полей для всех пешек "направо" и объединяются командой OR. Так вот с моей точки зрения битые поля для направления "налево" определяются неправильно. Сдвигать надо на 9 а не на 2.
     
  24. syrdon
    Оффлайн

    syrdon Учаcтник

    Репутация:
    0
    Я пометил скобки цветом.
    Там не "налево, направо, OR" - там чуть налево, OR, ещё налево.
     
  25. Booot
    Оффлайн

    Booot Учаcтник

    Репутация:
    0
    Понял. Скобки не разглядел :)
     
  26. syrdon
    Оффлайн

    syrdon Учаcтник

    Репутация:
    0
    Стиль у Осипова, прямо скажем...
    И не надо говорить, что это он так фруктует.
    За константы его бить надо ногами. — Попрошу выбирать выражения. Чувство юмора здесь у всех разное. — WinPooh
    Целые числа, как состояния ходогена, оценка и т.д.
     
  27. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Чтобы не ошибаться, можно писать так:

    Код:
    inline U64 Up(U64 bb)    { return (bb << 8); }
    inline U64 Down(U64 bb)  { return (bb >> 8); }
    inline U64 Left(U64 bb)  { return ((bb & LL(0x7f7f7f7f7f7f7f7f)) << 1); }
    inline U64 Right(U64 bb) { return ((bb & LL(0xfefefefefefefefe)) >> 1); }
    
    inline U64 UpLeft(U64 bb)    { return ((bb & LL(0x007f7f7f7f7f7f7f)) << 9); }
    inline U64 UpRight(U64 bb)   { return ((bb & LL(0x00fefefefefefefe)) << 7); }
    inline U64 DownLeft(U64 bb)  { return ((bb & LL(0x7f7f7f7f7f7f7f00)) >> 7); }
    inline U64 DownRight(U64 bb) { return ((bb & LL(0xfefefefefefefe00)) >> 9); }
    И никаких магических констант в остальном коде :)
     
  28. syrdon
    Оффлайн

    syrdon Учаcтник

    Репутация:
    0
    АгаБлинЩаз.
    Там одни магические константы.
    [c]
    endgame += cnt * 37;
    opening += cnt * 54;
    if ((square & 0xFFFFFFF8) == 0x30) { // Предпоследняя горизонталь
    if ((Board->mp[BlackPawn] & 0x00FF000000000000) || (Board->mp[BlackKing] & 0xFF00000000000000)) {
    endgame += 1420;
    }
    }
    [/c]

    [c]
    if (flags & 4) { // Особый тип позиции (определенный суммарный материал)
    // Только для таких особых позиций определяем безопасность короля
    opening += (KingAttackWeight[king_attack_nb] * king_safety_value) / 32;
    i = FileWing[bking_square];
    k = entry->sheet_black_king;
    if (((Board->flags) & 4) && (entry->sheet_black_king[2] < k)) k = entry->sheet_black_king[2];
    if (((Board->flags) & 8) && (entry->sheet_black_king[0] < k)) k = entry->sheet_black_king[0];
    opening += (k + entry->sheet_black_king) / 2;
    }
    [/c]
    Или это теперь модный мачо-кодинг?
     
  29. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Это вы в emater.c ещё, наверное, не заглядывали :)
     
  30. syrdon
    Оффлайн

    syrdon Учаcтник

    Репутация:
    0
    Ну, к массивам я терпимей. :) Если у массива есть имя, то это хорошо!
    Но там всё очень-очень жесткое.

    Не дать имена флагам для рокировок и флангам или просто маскам...
    [c]
    if ((Board->mp[WhiteRook] & 0x0000000000000103) &&
    (Board->mp[WhiteKing] & 0x0000000000000006)) opening -= 1920;
    [/c]
    Осипов - это Чак Норрис. Однозначно.:cool:
     
  31. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Это просто намек, что все константы из Рыбки.
     
  32. syrdon
    Оффлайн

    syrdon Учаcтник

    Репутация:
    0
    Понимайте, как хотите.
    После заявлений Ури Бласса (или кто там эту красавицу освидетельствовал), что Стрелка такая вся чистенькая и элегантная, я ждал более аккуратных исходников.
    4 - это какая рокировка? Длинная? Короткая? Черных? Белых?
    Только я не могу сразу посчитать кол-во нулей в 0x00FF000000000000?
    Только меня расплющивает от
    [c](flags & 4) { // Особый тип позиции (определенный суммарный материал)[/c]
    Какой особый? Почему 4?

    Просто, мне трудно читать такой мачо-код.
     
  33. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Программа писалась не для того, чтобы её читали, а чтобы в шахматы играть. И у неё это неплохо получается.
    А исходный код - это такой бонус от автора, который никому ничего не обязан.
     
  34. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Два нуля. Если считать от 0x. Т.е. - восемь бит. Т.е. - одна горизонталь, 8-я по-видимому.
    Значит - маска для седьмой горизонтали, всё просто.

    Правда, я вместо этого пишу BB_A7H7, но может из-за этого Грека и играет слабее? :)
     
  35. bankuss
    Оффлайн

    bankuss Александр баннер

    Репутация:
    6
    Такой код говорит о том, что это явная смесь фрукта и "выдернутых" из рыбы кое-каких данных :)
    Ну и как некий намек Васику, что пора бы открыть исходники рыбы 1.0. (как фруктообразная)