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

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

  1. TopicStarter Overlay

    SDChess Учаcтник

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

    SDChess
  2. Aleksandr Sh. Учаcтник

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

    SDChess Учаcтник

    • Участник
    Рег.:
    01.05.2006
    Сообщения:
    268
    Симпатии:
    61
    Репутация:
    6
    Оффлайн
    Советую пользоваться моей ссылкой http://sdchess.ru/

    SDChess
  4. immortal223 Вячеслав

    • Участник
    Рег.:
    22.02.2006
    Сообщения:
    2.412
    Симпатии:
    15
    Репутация:
    0
    Оффлайн
  5. Vertu Старожил

    • Участник
    • Старожил
    Рег.:
    22.12.2006
    Сообщения:
    972
    Симпатии:
    44
    Репутация:
    4
    Оффлайн
    КРУТО!!!
  6. thenewone Евгений Манев

    • Участник
    • Старожил
    Рег.:
    09.06.2006
    Сообщения:
    3.173
    Симпатии:
    18
    Репутация:
    1
    Адрес:
    Пловдив
    Оффлайн
    Благодарности Юрию Осипову.
  7. Aleksandr Sh. Учаcтник

    • Участник
    Рег.:
    15.01.2007
    Сообщения:
    129
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
  8. TopicStarter Overlay

    SDChess Учаcтник

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

    SDChess
  9. drowsy Учаcтник

    • Участник
    Рег.:
    08.09.2006
    Сообщения:
    1.282
    Симпатии:
    1
    Репутация:
    0
    Адрес:
    Toronto, Canada
    Оффлайн
    могу вам стрелку нарисовать, ну или гарпун :D
    пронзающую шахматную доску, или рыбину какую
  10. WinPooh В.М.

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

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

    SDChess Учаcтник

    • Участник
    Рег.:
    01.05.2006
    Сообщения:
    268
    Симпатии:
    61
    Репутация:
    6
    Оффлайн
    Если можете, то Рисуйте. (размер 100х50).
    Главное, чтобы получилось красиво и со смыслом!

    SDChess
  13. drowsy Учаcтник

    • Участник
    Рег.:
    08.09.2006
    Сообщения:
    1.282
    Симпатии:
    1
    Репутация:
    0
    Адрес:
    Toronto, Canada
    Оффлайн
    А размер пофигу, если в svg рисовать
  14. WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    А сколько выигрывает Рыбка от 64-битности?
  15. immortal223 Вячеслав

    • Участник
    Рег.:
    22.02.2006
    Сообщения:
    2.412
    Симпатии:
    15
    Репутация:
    0
    Оффлайн
    около 50-60% скорости
  16. apm Учаcтник

    • Участник
    Рег.:
    16.05.2007
    Сообщения:
    119
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Исходники есть, однако под gcc не собираются :(
    придется покорпеть над этим
  17. Осипов Юрий Учаcтник

    • Участник
    Рег.:
    18.06.2007
    Сообщения:
    399
    Симпатии:
    475
    Репутация:
    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 В.М.

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

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    typedef long long __int64;
  20. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Ну да, например так. Только не забыть в #ifndef _MSC_VER это обернуть, чтобы везде одинаково собиралось.
  21. Booot Учаcтник

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

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

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

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

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

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

    • Участник
    Рег.:
    05.06.2006
    Сообщения:
    140
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Понял. Скобки не разглядел :)
  26. syrdon Учаcтник

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

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    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 Учаcтник

    • Участник
    Рег.:
    21.05.2007
    Сообщения:
    78
    Симпатии:
    0
    Репутация:
    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 В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Это вы в emater.c ещё, наверное, не заглядывали :)
  30. syrdon Учаcтник

    • Участник
    Рег.:
    21.05.2007
    Сообщения:
    78
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Ну, к массивам я терпимей. :) Если у массива есть имя, то это хорошо!
    Но там всё очень-очень жесткое.

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

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Это просто намек, что все константы из Рыбки.
  32. syrdon Учаcтник

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

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

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

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Два нуля. Если считать от 0x. Т.е. - восемь бит. Т.е. - одна горизонталь, 8-я по-видимому.
    Значит - маска для седьмой горизонтали, всё просто.

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

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    24.05.2006
    Сообщения:
    1.084
    Симпатии:
    38
    Репутация:
    6
    Оффлайн
    Такой код говорит о том, что это явная смесь фрукта и "выдернутых" из рыбы кое-каких данных :)
    Ну и как некий намек Васику, что пора бы открыть исходники рыбы 1.0. (как фруктообразная)

Поделиться этой страницей