dev_hands ([info]dev_hands) wrote,

Konquest

Есть замечательная игра из комплекта kde-games: konquest.

[Если вам не интересна сама игра - сразу переходите к пункту номер 6 - он может оказаться интересным.]

Рассматривается пакет kde4-konquest из kde 4.2 в OpenSUSE 11.1. Только ее мало кто любит. Скорее всего даже сами разработчики. Так как нет сетевого режима, редактора карт и в документации не отображены особенности реализации, которые будут оказывать сильное влияние на вашу стратегию.

Я все-таки взял в руки vim, ctags и cscope и почитал как оно внутри устроено.

1) Отправка флота на свою планету.
Как известно любому игроку в konquest, каждая планета имеет характеристику "мощь кораблей". Можно отправить с "сильной" планеты флот на "слабую", а потом с нее атаковать противника. В окне "флоты" весь флот имеет мощь той планеты, с которой был отправлен. Но у меня была надежда, что корабли, произведенные на "сильной" планете свою мощь не теряли - в документации на этот счет я ничего не нашел. Эта надежда была разрушена. На самом деле все корабли отправленные с планеты X (или находящиеся на ней) в сражениях имеют мощь, равную мощи планеты. Если они прибудут на другую планету (как вариант завоюют недружественную) - их мощь изменится.

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

2) Миф номер 2: отдаленные планеты сильны. Когда я посылал минимальные флоты на отдаленные нейтральные планеты - они часто терпели неудачу. Я полагал, что корабли в полете ломаются и до планеты долетает только часть флота. Так же была теория, не подтвержденная практикой, что отдаленные планеты сильнее тех, что находятся в скоплениях.

Мощь и производительность планет не зависит от их местоположения - это произвольные величины, определяемые при создании карты. Кроме тех, что являются homeworld игроков - там эти величины заданы константами (статически прописаны в коде), которые вы и наблюдаете каждый раз на первом ходе.

Сила нейтральных планет в том, что каждый новый ход им добавляется один корабль. Изначальный флот на нейтральной планете равен ее производительности. Если вам было достаточно 20-30 кораблей для завоевания ближайших планет, то такого флота будет недостаточно для завоевания отдаленных планет ходу этак к десятому.

3) Так же у меня была теория, связанная со следующей ситуацией:
Я послал флот для завоевания планеты. Флот потерпел неудачу. Я послал еще один - после завоевания планеты там количество кораблей оказалось больше моего первоначального флота.
Теория была в том, что "наши" не только разбили противники, но и взяли пленных.

Ответ таков: сначала происходят сражения и прибытия пополнений с других планет, а уже потом планеты производят для своего текущего хозяина (который мог смениться после сражения) новые корабли.

4) Порядок сражений или прибытия подкреплений: сначала выполняется для 1ого игрока, потом для второго и так далее. Понятнее на примере: вы игрок номер 4. На ходе 26 на вашу планету должно прибыть подкрепление с другой вашей планеты и недружественный флот игрока номер 3. Номер игрока 3 меньше - значит сначала нападет его флот (пусть ему удалось завоевать планету), а затем прибудет ваше подкрепление и попытается ее отбить. Новые боевые единицы с этого хода достанутся окончательному хозяину планеты (пункт 3).

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

5) Мощь кораблей на самом деле означает вероятность. Бросается кубик с континумм граней, показывающий вещественное число от 0 до 1 - если кубик показал число ниже мощи вашего корабля - вы сбили один корабль противника. Потом тоже самое повторяется для вашего оппонента. До тех пор, пока у одного из вас не останется кораблей.

То есть на картах побольше можно оценивать свой флот как произведение количества кораблей на их мощь. На маленьких картах это подводит. Вероятность - сука бессердечная.

6) По поводу нарушения патентов в свободном ПО. Обнаружил, что konquest все-таки нарушает патенты (помимо очевидных типа патента на односвязные списки - наверняка у нескольких компаний в разных формулировках он есть).
Дело в том, что в файле gamelogic.cc (у меня строка 201) в функции, реализующей сражение флотов противников содержится комментарий: "let's get ready to rumble...".
По данным Википедии фраза запатентована американским мужиком по имени Боб Арум.

Я надеюсь, что я не один играю в konquest и кому-то это может оказаться полезным.
Tags: games

  • Post a new comment

    Error

    Your IP address will be recorded 

  • 6 comments

[info]curt_spellman

March 4 2009, 22:24:25 UTC 3 years ago

Факин щит.

[info]dev_hands

March 4 2009, 22:51:54 UTC 3 years ago

А вменяемое пояснение комменту будет?

[info]curt_spellman

March 4 2009, 23:40:55 UTC 3 years ago

Достало всё, что связано с патентами.

[info]dev_hands

March 5 2009, 00:09:56 UTC 3 years ago

Это нормальное состояние. Хуже, когда наоборот.

Anonymous

May 19 2009, 09:02:44 UTC 2 years ago

Большое спасибо за такую обширную статью. Давно уже играю в Konquest с большим удовольствием. Особенно интересно сграть против множества противников на наибольшей карте, когда игра может затянутся часа на два.

[info]gvinti

October 21 2009, 10:58:13 UTC 2 years ago

"let's get ready to rumble..." - это, конечно, конкретная слива. )))
Create an Account
Forgot your login or password?
Facebook Twitter More login options
English • Español • Deutsch • Русский…