Хак за търсене на най-кратък път при създаването на StarCraft

0
38

В края на месец февруари тази година, един от водещите разработчици на Warcraft и Starcraft Патрик Уайът (Patrick Wyatt) публикува някои от спомените си за своята работа в Blizzard през 90-те години. Много е интересно да се погледне отвътре процесът по разработката на игри, които впоследствие са станали култови, особено когато става дума за спешно поправяне на грешки.

През цялото време разработчиците са работили в условие на ожесточен график. Те постоянно са стояли пред факта, че играта ще бъде представена на пазара „само след два месеца“ и е нямало време за внасяне на фундаментални промени и да се препишат участъците код, за да се отстрани причината за възникване на тези бъгове.

Финалното представяне на играта отново и отново се отлагало и графикът „само след два месеца“ си оставал непроменен. Ето защо, понякога се налагало да се използват така наречените „мръсни хакове“, за които разказва Патрик Уайът.

Откъде се е появил толкова напрегнат график? Оказва се, че на изложението за игри E3 през 1996 година компанията Ion Storm представила потресаваща демонстрация на бъдещата си игра Dominion Storm:

В същото време, практически готовата за излизане игра StarCraft изглеждала по следния начин:

Очевидно, потребителите биха избрали първата игра. Наложило се Blizzard да пренапишат графичната си машина изцяло.

Патрик Уайът разказва, че особено много грешки възникнали при търсенето на подходящи маршрути за единиците. Разработчиците пренаписали графичния енджин за изометрична перспектива, но алгоритъмът за търсене на маршрути останал непроменен.

В старите Warcraft I и Warcraft II камерата гледа отгоре надолу и краищата на графичните обекти (гора, здания обекти на местността) са хоризонтално или вертикално разположение и търсенето на подходящ маршрут било лесно, понеже всяка плочка (тайл) е можела да бъде изцяло премината или напълно непроходима. На долната илюстрация проходимите и непроходимите тайлове са отбелязани с зелен и червен цвят:

Но при диагоналната изометрична проекция се появили множество гранични ситуации, при които нямало как да се отбележи, дали съответният правоъгълник (тайл) е проходим или не, понеже изометричната графика разделя фигурите на неправилни форми:

Един от най-неприятните ефекти се получавал при възникване на тапи от работни единици при добив на ресурси. Забавянето на един работник водело до препречване пътя на друг, той преграждал пътя на третия и по този начин спирал целия добив. Играчът, зает с други задачи (строителство на сгради, водене на битки) не успявал да забележи възникването на подобни тапи, докато цялата икономика не се сринела от липсата на пари.

Патрик се запознал със ситуацията и разбрал, че не може да изцяло да се справи с проблема. Единиците непрекъснато сменят своите координати и постоянно преизчисляват маршрутите си в зависимост от маршрутите на другите единици. Ето защо, той решил, че ситуацията няма как де се оправи без използването на мръсен хак и напълно изтрил кода, отговорен за сблъскването на работните единици.

По този начин работните единици буквално започнали да преминават един през друг и проблема с тапите в маршрутите бил замазан. Това решение се оказало удачно и харесвано от голяма част потребители, но на KESPA-турнирите съществуват забрани за използване на mineral-walk работници като разузнавачи.

ДОБАВИ КОМЕНТАР

  Абонирай се  
Извести ме за