ОФИЦИАЛЬНЫЙ ИНФОРМАЦИОННО-РАЗВЛЕКАТЕЛЬНЫЙ ЖУРНАЛ SERIOUSSITE.RU
#5 / 2014
В этом выпуске Герцог против Нешуточного The Talos Principle – большая статья
Интересные интервью Rock Band: Undercode Serious Sam Origins
КООООСМООООС И в очередной раз новый дизайн
Тема номера:
02
SERIOUS TIME #5
СОДЕРЖАНИЕ РЕДАКЦИЯ
СЛОВО РЕДАКТОРА ………………….………………. 03 >> Автор идеи: Dahaca
КОСМИЧЕСКОЕ ИНТЕРВЬЮ ………………………..... 04 >> ТЕМА НОМЕРА
Шеф-редактор: Mad
СТАТЬЯ
Выпускающий редактор, дизайнер: Ar2R-devil-PiNKy
THE TALOS PRINCIPLE ………………………………….. 17 >>
Корректор: Vedma
ГЕРЦОГ ПРОТИВ НЕШУТОЧНОГО …………………… 09 >>
СТАТЬЯ
ROCK BAND: UNDERCODE …………………………... 27 >>
Редакторы: Vedma, Ar2R-devil-PiNKy, Mad, Heming_Hitrowski
ИНТЕРВЬЮ
SERIOUS SAM ORIGINS ………………………………… 29 >>
Приглашенные авторы: Kadath, RCM, SLAwww
ИНТЕРВЬЮ
ИЕРАРХИЧЕСКАЯ МАШИНА СОСТОЯНИЙ ………. 33 >> СЕРЬЕЗНОЕ РЕДАКТИРОВАНИЕ
При информационной поддержке SeriousSite.ru При цитировании или ином использовании материалов, опубликованных в настоящем издании, ссылка на "Serious Time" строго обязательна. Полное или частичное воспроизведение материалов издания допускается только с письменного разрешения редакции. Редакция не несет ответственности за содержание рекламных объявлений. Все упомянутые торговые марки принадлежат их законным владельцам. Мнение авторов может не совпадать с мнением редакции.
Для связи с редакцией данного номера журнала "Serious Time" по вопросам, связанным с сотрудничеством, рекомендациями или пожеланиями, а также для отправки вопросов в рубрику "Горячая линия", вы можете выбрать один из нижеперечисленных способов: E-mail: serious.time@ya.ru Twitter: twitter.com/serious_time
ИЗДАНИЕ СУЩЕСТВУЕТ С ИЮНЯ 2011 ГОДА
03
SERIOUS TIME #5
СЛОВО
РЕДАКТОРА И вновь мы рады приветствовать уже заждавшихся читателей на страницах нашего "нетленного". Доброго времени суток вам друзья, и... поехали!
Набирает обороты конкурс "космическая одиссея 2014". Взяв с собой метафорические пол-литра мы решили досконально разобраться в этой ситуации.
Наш секретный агент Хеминг Хитровски успешно внедрился в ряды усталых мапперов и принялся пытать их распросами. Пытку мапперы, правда, смогли выдержать, но вытянуть из них пару вкусных деталей тем не менее удалось. Также, вас ожидает чудесная свеженькая статейка от маэстро SLAwww, разбор полетов во вселенных Дюка Нюкема с Серьезным Сэмом и многое другое. На сим откланиваюсь, удачных вам выходных и кошмарного, в хорошем смысле этого слова, вам Хеллоуина!
MAD Друзья, и снова Serious Time оказался на грани закрытия. Посовещавшись в недрах редакции, мы волевым решением растягиваем официальный срок выхода журнала до двух месяцев. Надеюсь, эта мера поможет вывести процесс производства на должный уровень.
04
SERIOUS TIME #5
ТЕМА НОМЕРА Автор: Heming_Hitrowski
КОСМИЧЕСКОЕ ИНТЕРВЬЮ Раз в год, по традиции, SeriousSite.ru устраивает конкурсы для мапперов и простых игроков. Этот год не стал исключением. Перед вами космическая одиссея 2014! Конкурс для мапперов, тематика которого космос. Жанр может быть любым. Все в ваших руках! Будет ли ваша карта увлекательным путешествием между планетами или кровавым побоищем на борту космического корабля? Придется изрядно потрудиться, чтобы удивить жюри!
Я, естественно, не сидел, сложа руки, и решил навестить участников, чтобы выяснить, что же они нам готовят. Что из этого получилось? Читайте далее!
В этот раз, к моему удивлению, событие оказалось очень масштабным. На конкурс в первый же день записалось аж шесть участников! Однако дальнейшего развития событий никто предугадать не мог: впервые у нас появился наплыв участников с SeriousZone! На данный момент в конкурсе участвует 20 человек, 6 из которых иностранцы. Рекордное количество, yeeehaw!
Интервью с Psych H: Привет, Psych! Я из редакции Serious Time. Можешь поведать нам о своем проекте, который ты готовишь к конкурсу? P: Привет Хеминг, надеюсь, у вас в редакции все окей. Да, конечно, буду рад рассказать о своей карте. В конце концов, какой маппер не любит разглагольствовать о своих творениях? H: Начнем с насущного. Делаешь ли ты в этот раз упор на красивую картинку? P: Конечно, делаю. Карта для прошлого конкурса была с куда более низким градусом содержания графона,
и как я заметил, это мало кому понравилось. Так что на этот раз я прихвачу с собой все свои плюшки, как в старые добрые времена. H: Предложишь игрокам мясо или это будет что-то вроде квеста? P: Думаю, это будет и то, и другое, вдобавок я также запилю паззлы и головоломки, так что игрокам придется поработать не только миниганом, но и мозгами, что, безусловно, гораздо более мощная вещь, чем любая пушка. H:
Чем планируешь удивить?
P: Удивить планирую сюжетом и разнообразием локаций, однако это лишь
05
SERIOUS TIME #5
планы, возможно, все выйдет иначе. Еще у меня тут что-то вроде юмора, однако, я не очень хорош в этом, но постараюсь. H: А в карте будут ящерки? Или люди? P: А то! ^.w.^ Ящерки - это неотъемлемый атрибут моих нынешних проектов, так что здесь без них не обойдется. Благо, тематика карты очень даже позволяет: мало ли какие расы живут в далеких-далеких галактиках. H: Как ты считаешь, сможешь победить? Не боишься проиграть -JD-? P: ДжейДи достойный противник, однако, я не вижу никаких причин для опасений. Да, он крутой чувак в плане картсоковыжималок для первого SE, но и я не лыком шит, и у меня тоже немало козырей в рукавах. Так что нет, я его не боюсь. H: Что сподвигло тебя на участие в конкурсе? P: Ничего. Ну, пришел, увидел: «дай, думаю,- себя покажу да на мир посмотрю». Тем более, пора уже что-то новое сделать, а то лишь один мод от меня в каталоге. Вот так я и попал на конкурс. H: Пару слов на прощание нашим читателям. Возможно, у тебя есть какиенибудь пожелания другим участникам? P: Ну, остальным участникам конкурса я желаю удачи и победы. Здесь, как и в жизни, главное не сдаваться и двигаться вперед! И даже если неудача постигла вас, нельзя останавливаться и сворачивать с пути. Пытайтесь вновь, снова и снова поднимайтесь и идите вперед, ибо посерьезному вы проиграете лишь тогда, когда вы смиритесь и опустите руки.
ТЕМА НОМЕРА
H:
Большое
спасибо
за
интервью!
Было очень приятно узнать, что Psych решил придерживаться старых добрых традиций. Графон, ящерки, два ствола. Возможно, нам предстоит побегать среди древних сооружений, где поклоняются ящерицам и графону, а также решать загадки, оставленные ими. Интересно... Что ж, давайте теперь отправимся в гости к нашему следующему участнику!
Интервью с Cofein H: Здарова, Антон! Поведаешь о своей карте на конкурс? C:
Здарова! Не проблема.
H: Какую тематику ты решил выбрать для карты? Где конкретно будет происходить действие? C: Да, фиг знает... Наверно космическую. Могу пока сказать, что действие будет развиваться на брошенном корабле. H: Будут ли в карте смешные/забавные моменты? C: Нуу... У меня есть гнаары с брашами на башке... Они очень забавно топчутся на месте :D H: Будут ли какие-то особые фишки в твоей карте? C: Есть пара интересных идей, надеюсь, они не повторятся в других работах. H: Как ты думаешь, vanya109 сможет выиграть? C:
А он разве еще не выиграл? о.О
06
SERIOUS TIME #5
ТЕМА НОМЕРА
H: Что подтолкнуло тебя участвовать в конкурсе? C: Мне очень давно хотелось поучаствовать в таком соревновании. H: Чтобы ты участникам?
хотел
пожелать
другим
C: Желаю всем удачи, и не затягивайте с картами.
Гм... Брошенный корабль... Учитывая, что мы с Антоном часто играли в Warframe вместе, может быть, будет что-то подобное оттуда. Кто знает? Коф многое умалчивает, остается только догадываться... И конечно, я не мог не забежать к одному из самых олдскульных мапперов и завсегдатаев конкурса - к Артёму. "Посмотрим, что ему снится?" (c) Operation New Year.
A: Это спорный вопрос. Я постараюсь соблюсти баланс между решениями задачек и месиловом, как в оригинальном Сэме. H: Что новенького ты преподнесёшь игрокам? Будут ли какие-то хитрые фишки? A: Думаю углубиться в атмосферность карты и головоломок. H: Можешь ли ты однозначно поделить участников на сильных и не очень? A: Нет. У каждого есть шанс вытянуться до уровня карт CroTeam, ибо выглядит просто, но красиво. H: Что мотивировало тебя участвовать в конкурсе? A: Именно тематика космоса. Раньше я не испытывал к ней особых чувств, но сейчас открылось много возможностей для полета фантазии: технологии будущего, пришельцы из космоса и т.д. H: Спасибо за интервью, и пару слов на прощание.
Интервью с art-serious H: Привет, Артём! Можно задать тебе пару вопросов касаемо твоего проекта к конкурсу?
A: Чем больше конкурсантов сдаст работ, тем больше шансов на следующий конкурс. Не отлынивайте от работы и старайтесь доводить картой свою мысль до игрока.
A: Davay! H: Какую тематику ты решил выбрать для карты? Где конкретно будет происходить действие? A: Тематика - пострелюшечки. космическом корабле.
На
H: Будет ли карта квестовой исключительно шутерной?
или
Хех. Артём - хитрюга. С виду-то все просто, но что-то мне подсказывает, что нас ожидает сюрприз . Мне очень интересно, как раскроется этот человек в теме космоса, ведь атмосфера в его картах всегда на высшем уровне. Головоломки уже у двух участников. Мне начинает это нравиться!
07
SERIOUS TIME #5
Ну и, конечно же, ни один конкурс не обходится без организатора. Встречайте – thecre! Председатель жюри и основатель конкурса.
Интервью с thecre H: Привет, Коля! За всю историю твоего пребывания на serioussite ты проводишь уже не первый конкурс. Можешь рассказать про тенденцию их развития? TC: Надо заметить, что каждый конкурс обходится как минимум вдвое дороже предыдущего. Но если посмотреть с другой стороны, участников становится тоже больше. В данный момент на конкурс записалось 20 человек из разных стран. Это рекорд! H: Собираешься ли ты придерживаться традиции проводить конкурсы на мапперскую тематику или в будущем нас ожидает что-то новенькое? TC: Я планирую проводить конкурсы для мапперов как минимум раз в год. Думаю, это станет хорошей традицией и событием, которого будут ждать многие желающие попробовать свои силы. Ну, или те, кому не терпится потрогать новые карты. Главное чтобы не иссякла фантазия на темы, а их у меня есть на два года вперед как минимум. Ранее проводилось не мало конкурсов, не касавшихся картостроения. Но, как вы помните, я в их организации не принимал активного участия. Однако думаю, в будущем, если все будет идти хорошо, можно будет проводить мини-конкурсы на другие темы, да.
ТЕМА НОМЕРА
H: Хотел бы ты сам поучаствовать в какомлибо конкурсе? TC: Знаете, хочется иногда и самому принять участие в чем-нибудь подобном. Поэтому, люди, желающие организовать какой-нибудь конкурс, хей, отзовитесь! H: Впервые тебе удалось скооперироваться с seriouszone.com, в результате чего появился еще один поток участников. Будешь ли ты сотрудничать с этим сайтом в дальнейшем? TC: Да. Более того, если seriouszone будет проводить свой конкурс, я призываю всех текущих участников, да и всех остальных тоже принять участие! Я думаю, что подобные конкурсы, в которых принимают участие оба сообщества, помогут нам сблизиться, улучшить наши отношения. Не исключено, что однажды мы сможем организовать совместное мероприятие. Лично я хотел бы. H: Помимо организации конкурсов, занимаешься ли ты еще какими-либо проектами по Serious Sam? TC: В свободное от учебы и личной жизни время я занимаюсь проектом по встраиванию в Serious Sam Classic TSE языка программирования Lua. Хотя этот проект я делаю больше для себя, и его рано показывать публике, сделано уже весьма немало. Ну, и ещё я делаю себе различные удобства для написания кода. Но это тоже личные мелкие проекты. Помимо конкурса ничего глобального.
08
SERIOUS TIME #5
ТЕМА НОМЕРА
Фух... Неплохо прогулялся. Что я могу сказать? Пожалуй, этот конкурс выделяется на фоне остальных своим громадным масштабом. Никогда я еще не видел такого количества участников, притом каких! Почти у каждого есть свой противник по стилистике и качеству маппинга, и будет интересно взглянуть, как они будут исхитряться, чтобы победить
По традиции кто-то должен замолвить словечко о сбегающих участниках и медали позора. Но, смотря на активность участников, на неподдельный интерес к конкурсу, на их спортивный настрой, хочется сказать, что я верю, что на этот раз не сбежит почти никто.
Я также очень рад, что мы потихоньку объединяемся с иноязычным сообществом seriouszone. И пускай это объединение идет медленно, я убежден, что рано или поздно мы построим этот мост. На этот конкурс я возлагаю большие надежды. Пожалуй, в какой-то степени он даже революционный. Я думаю, может измениться многое: как порядок проведения следующих конкурсов, так и их масштаб. От себя пожелаю вдохновения всем участникам. Ну и, конечно же, не лениться и сдать все карты к сроку. У вас все получится!
09
SERIOUS TIME #5
СТАТЬЯ Автор: Kadath
ГЕРЦОГ ПРОТИВ НЕШУТОЧНОГО Эту славную парочку знает каждый ценитель хороших шутеров. Ещё бы – именно они стали приемниками славных традиций золотого века убойного экшена, дарующего бывалым геймерам букет приятных воспоминаний, а новичкам – массу удовольствия от поистине королевского геймплея и атмосферы. Не подвластные времени и губящему влиянию моды, два крепких парня, вооруженные арсеналом опустошительного оружия и метких фраз, продолжают спасать матушку-Землю от орд инопланетных захватчиков, впрочем, как и более пятнадцати лет назад. Знакомьтесь – Дюк Нюкем и Серьёзный Сэм снова вышли в свет, отряхнув пыль со своих пулеметов и ракетниц!
Ядерный Герцог жив! В славные девяностые годы, когда люди носили пышные прически, а в кассетных магнитофонах звучало диско, мир компьютерных игр вершил свою историю, течение которой становилось всё быстрее и быстрее. И вот, в 1996 году, на арену 3DAction-игр, взошел один из самых ярких игровых персонажей, брутальный мачо и циничный авантюрист – Дюк Нюкем, уже проявивший себя в паре 8-ми битных платформеров. «Объемный» Дюк пришелся по вкусу игрокам и, более того, приобрел славу просто замечательного шутера. Интерактивность и реалистичность локаций, изощренные способы убийства врагов и неподражаемая пошлятина из уст главного героя, быстро завоевали сердца миллионов поклонников. Успех игры и Дюка в частности, был настолько велик, что спустя всего полгода, разработчики объявили о работе над второй частью под громким именем «Duke Nukem Forever».Примерной датой релиза планировался 1997. Пошли долгие годы ожидания. И разработчики не подвели фанатов – игра вышла! Но с «небольшим» запозданием в каких-то 14 лет…
Duke Nukem Forver вышел в 2011 году XXI века. Прежние фанаты Duke Nukem 3D заметно подросли, а их кумир так и остался крутым обладателем стальных яиц и гигантских пушек, что не могло не вызвать ностальгическую слезу у поклонников. И это действительно так – всё тот же Дюк, в своей яркой манере разделывается с теми же врагами.
10
SERIOUS TIME #5
Сюжет игры наивно прост – спустя два года (а быть может, и 14 лет) после расправы над армией инопланетных захватчиков, Дюк Нюкем очень разбогател, обзавелся своим казино, кафе и личным небоскребом. Однако пришельцы взяли реванш и снова напали на Землю, забирая девушек, которые принадлежали Нюкему. Это разозлило альфа-самца и, он опять взялся за старое – надирать зад своим врагам, одновременно спасая планету… Игра стала сложнее. Трудно пройти всю игру, не умерев почти на каждом уровне. Сохранения только по чекпоинтам, аптечек и брони нет – только ЭГО Дюка Нюкема, которое является его «здоровьем». В довесок к сложности, идет значимый минус – носить с собой можно только три вида оружия, хотя в первой части, мускулистый блондин мог таскать целый арсенал. Боссы в игре не заслуживают внимания – они просто повторяются так, будто разработчикам не хватило фантазии придумать что-то новое. Геймплей не потерпел сильных изменений. Бегая по узким коридорам, просторным залам и городским улицам, мы раздаем по килограмму свинца в лоб каждому пришельцу, как и много лет назад. Нововведениями стали небольшие задачки на логику по ходу прохождения, что было весьма модно в 2006-2009 годах;
СТАТЬЯ
стационарные турели, парочка новых пушек, врагов и что самое неожиданное – транспортные средства. Всё это было прекрасно, если бы разработчик смог правильно использовать такие достоинства: «пазлы» не всегда уместны и порой сумбурны, враги, хоть и разной масти, но выглядят довольно однообразно, а поездки на транспорте ломают приятные ожидания – настолько они затянуты. Уровни «Нового Дюка» тесны и представляют собой линейный коридор с красивым задним планом и не проработанным «передним», что ощущается на улицах разрушенного ЛасВегаса, где игроку не дается полная или хотя бы частичная свобода действий. Да и интерактивность окружения не впечатляет - даже люди являются больше элементом интерьера, а не разумным NPC.
11
SERIOUS TIME #5
СТАТЬЯ
В DNF, сразу бросается в глаза явно устаревшая графика, относительно даты выхода игры. И этот факт понятен – начиная девяностых годов, продолжение Дюка Нюкема несколько раз переносилось на разные движки. Очевидно, движок 2004 года стал выходом из ситуации. Такой странный ход разработчиков, поставил на нет проблемы с оптимизацией и, Duke Nukem Forever уверенно игрался даже на слабых машинах. Сильные стороны новой игры выразились в сильных сторонах старой – харизматичный герой, черный юмор, знакомые враги и оружие и, кончено же знаменитая грубая атмосфера окружения с долей похоти. В конце концов, как сказал французский писатель Жак Пеше: «Всё новое — это хорошо забытое старое». С минусами, вышло куда более плачевно. Разработчики старались объединить традиции современного шутера и традиции олдскуллстрелялок, а в результате получилась странная солянка, смесь консервативной классики и попытки подстроиться под современную аудиторию. Кроме того, эта аудитория примерно 2007 годов, когда сама игра вышла на три года позже – а это очень большой отрезок в игровой моде. И еще, очень значимый факт – не будь Дюка в этой игре, она бы провалилась глубже некуда. Культ персонажа держит на плаву сюжет, геймплей и концепцию новой игры в целом. Вердикт – игру явно передержали. Вышла бы она в срок – цены бы не было, но сейчас такое никуда не годится. Столько лет может разрабатываться либо совсем плохая игра, либо наоборот, очень хорошая. Duke Nukem Forever не такой. Он такой, какой получился – хорошие, дорогие сливки, но с кисловатым привкусом.
No cover – all man! Время идет, мода меняется, а традиции остаются. Знаменитый и просто безбашенный шутер Serious Sam занимает особое место в игровой индустрии. Тогда, в далеком 2001 году мало кто мог себе представить, что ничем особо не примечательная группа разработчиков из Хорватии, именовавшая себя «Croteam», сможет создать шутер, которому будет суждено стать символом идеального баланса традиций и моды Action-игр. Стоит отметить, что первая половина 2000-ых годов – золотое время для игр нового формата: с началом нового века на смену старым пикселям пришла полная объемность и старательная отточка сюжета и игрового процесса. Такие хиты, как HalfLife, GTA 3, Max Payne явили миру новый уровень качества, стали отправной точкой для развития «Голливуда игровой индустрии», а старые-добрые пострелушки ушли на второй план, ведь о сюжете и смысле игры тогда особо не задумывались. И вдруг, на арене появляется Serious Sam: The First Encounter.
12
SERIOUS TIME #5
Игра была уникальной в воем роде: такого количества врагов на одного игрока еще никто не видел. Бескрайние открытые пространства, внушающий арсенал оружия, красота общей картинки и со вкусом оформленных локаций, шикарный саундтрек и, самое главное, – новый герой. Всё это, подкрепленное минималистичным сюжетом и духом старых шутеров, зажгло искру в сердцах игроков. Serious Sam получил заслуженное звание “Лучшей игры года», а всего 10 месяцев спустя, на свет вышло продолжение хита – Serious Sam: The Second Encounter, не сильно изменивший положительные качества прошлой части, за исключением того, что плюсов стало больше, а минусы были старательно убраны. Однако в 2005 году, фанаты Серёзного Сэма были разочарованы: третья часть игры Serious Sam 2, из жестокого и пафосного месива, превратилась в мультяшно-пластилиновый торт, в котором не было крови.
СТАТЬЯ
Разработчики сами признали свою вину, а также вину издателя, который намеренно понизил рейтинг игры до +12. Шесть лет спустя, ошибки были исправлены, и миру был явлен Новый Серьезный Сэм – Serious Sam 3: Before First Encounter. Как известно, Serious Sam в какой-то мере являлся пародией на модные шутеры. В «Первом пришествии» можно заметить явную похожесть на Duke Nukem 3D, начиная с юмора самого Сэма Стоуна, заканчивая его внешность. «Второе пришествие» дало Сэму свои личные, особенные черты: герой стал не пародией, а уже отдельной оперой. Но Serious Sam 2, к сожалению, получился пародией на первые части Сэма. Что же подготовил для фанатов Serious Sam 3? Ведь прошло много времени, и мода 2011 года, явно отличалась от того, что было в 2001 году. При старте игры, сразу бросается в глаза именно та самая мода – разрушенный войной и хаосом Каир недалекого будущего. Серый оттенок пейзажа, брошенные машины и упавшие вертолеты… В этот момент, преданных фанатов Сэма могло ожидать разочарование, ведь добрую ¼ часть игры, мы будем воевать именно в этом городе. Вести игру по новым правилам, не уклоняясь от летящих ракет и магических снарядов, а отстреливать из-за угла короткими очередями метких солдатовклонов, которые тоже не брезгают укрытиями. Ситуация, очень похожая на Call Of Duty, серии которой сходят с конвейера, как конфеты на фабрике.
13
SERIOUS TIME #5
СТАТЬЯ
Однако едва мы выйдем за пределы города, начинается именно то «мочилово», которого так ждали соскучившиеся по открытым пространствам, огромным врагам и минигану игроки, и это возвращение 2001 года! Битвы стали красивее: пыль, взрывы, летящие снаряды, разрушающиеся под градом ракет стены – Серьезный Сэм наконец-то просыпается, и в ход идут лучшие каноны первых частей: мясо, кровь, тяжелая музыка и целые армии Менталовских прихвостней! Однако ближе к концу игры, теряется азартность того, что было раньше. Локации перестают быть оригинальными, серобежевая цветовая гамма начинает резать глаза, битвы в гробницах и подземельях превращаются в тир в кромешной тьме, где необходимо искать почти невидимые рычаги и стрелять в мелких обезьян-мутантов, которые то и дело скачут с колонны на колонну. Это утомляет. Одной из причин однообразия игры стало место событий – Египет. Пустыни, храм, пирамиды и оазисы уже были пройдены в первой части игры, и Египет стал символом Серьезного Сэма. Однако разнообразие «Второго Пришествия» и «Двухи» показались более приятными для игры и глаза. Поэтому возвращение пыльного Египта получилось не столь ностальгическим, сколько безыдейным. Но, так или иначе, Страна Пирамид лаконично вписалась в общую концепцию игры, напомнив игрокам, с чего всё начиналось. А начиналось всё с того, на чем закончился Serious Sam 3. Сюжет новой игры является приквелом к первой части – «Before First Encounter» или «До Первого Пришествия». Сюжетная линия стала более проработанной, однако лаконичности своей не потеряла.
14
SERIOUS TIME #5
СТАТЬЯ Новый движок Serious Engine 3.5 проявил себя на славу. Картинка выглядит очень убедительной и может автоматически подстраиваться под мощность компьютера. Для 2011 года – то, что нужно. Интерактивность локаций на высоком уровне: можно ломать почти все предметы, которые разлетаются на очень натуралистичные кусочки, а руины буквально крошатся при попадании ракет. Однако в плане реалистичности, анимация главного героя явно подкачала и на фоне всего остального выглядит слишком «деревянной».
Враги и оружие значительно не изменились. За исключением абсолютно нового внешнего облика. Враги стали страшнее, оружие – реалистичнее, Сэм - серьезнее. Причем эта реалистичная, страшная и серьёзная идея игры, стала гораздо колоритней, чем раньше: вместо разноцветных колбочек со здоровьем, на уровне разложены аптечки, подсвеченные красным. Появилась функция перезарядки оружия и очень полезный ближний бой. Всё это выглядит солидно, но иногда перезарядка чрезвычайно мешает вести бой против массовых скоплений врагов. Сам Сэм Стоун почти не изменился: появились новые аксессуары в одежде и желтые спортивные очки. Характер не изменился и передается одним словом – Серьёзный. Некоторые моменты игры вызывают ностальгию, некоторые заставляют испугаться или засмеяться – Третий Сэм стал однозначно эмоциональней.
И всё же, Serious Sam 3 стал достойным продолжением мясной франшизы. Разработчики проделали громадный труд, совместив новые тенденции со старым Сэмом. И при этом, Сэма получилось гораздо больше. Что касается значимости игры на фоне её первых частей, то, естественно, сравнение заставит немного смутиться, ведь в Serious Sam 3 отсутствует слегка сказочная и притягательная своей душевностью атмосфера. Она уступила место реализму, лишь отдаленно напоминавшему игрокам то, за что в свое время Serious Sam был назван одной из лучших игр в своем жанре. Многие фанаты с горечью говорили, что «Сэм уже не тот», однако не стоит забывать одну важную вещь: Серьезный Сэм не потерял репутацию пародийного шутера, при этом, остается самим собой.
15
SERIOUS TIME #5
Вывод Итак. Какой вывод можно сделать на основе этих фактов, которые составляют лишь малую часть минусов и плюсов двух родственных игр? Duke Nukem Forever показал возращение короля, возвращение прежних традиций и вызов современным тенденциям. Однако самым большим недостатком является «срок хранения» этой игры. Нам не показали ничего нового, кроме графики и казуальной составляющей шутера. Всё, что есть в игре до боли знакомо и по душе старым фанатам, но новое поколение игроков не поймет всю соль Duke Nukem Forever, так как в нынешнее время выше всего ценятся оригинальность идеи и свежесть решений. Дюк не впитал в себя эти качества, а лишь утвердил то, за что и был когда так популярен, оставшись верным самому себе. Serious Sam 3 BFE вышел в нужное время, когда на рынке игр господствовали «коридорные», тесные шутеры с толстым слоем красивого макияжа на больном теле. Сэм снова преподнёс огромные и поистине эпичные масштабы полей сражения, дав игрокам вздохнуть полной грудью. Возможно, это стало некой традицией, ведь Серьезный Сэм всегда появляется тогда, когда нужно. В отличие от старины Дюка, Серьезный Сэм гармонично сочетает в себе новую моду и старые заветы, благодаря чему, он может понравиться любому поколению игроков. Согласитесь, уничтожать толпы пришельцев в типичном городе а-ля Modern Wafare очень необычно! Огорчил Serious Sam 3 тем, что он оказался всё же хуже своих предшественников. Но ведь раньше, как известно, и трава была зеленее, и идей было больше.
СТАТЬЯ
Duke Nukem Forever лишь напомнил о Дюке Нюкеме, в то время, как Serious Sam 3 BFE преподнес новый образ Сэма Стоуна, закрепив тем самым славу одного из лучших шутеров всех времен. Заканчивая нашу славную повесть, мы крепко пожмем руку обоим героям и пожелаем не стареть и не покрываться пылью, сидя на диване и смотря на золотую молодежь, а снова взять в руки по тяжелому пулемету и показать, на чём и на ком держится всё то, что мы называем Настоящей Игрой!
16
SERIOUS TIME #5
СТАТЬЯ
Буквально перед выходом данного номера журнала Serious Time, было решено провести анонимное голосование на нашем любимом SeriousSite.Ru, с целью узнать мнение наших пользователей о Serious Sam 3 и Duke Nukem Forever, а точнее, поставить оценку этим двум играм. Итак, результаты голосования следующие:
Ужасно!
Плохо
Так себе
Хорошо
Отлично!
В среднем, было дано 34 голоса для каждой игры. Каждый пользователь сделал свой выбор и результаты голосования очевидны – Duke Nukem Forever сильно отстал от Serious Sam 3 BFE: Среднее арифметическое всех оценок для «Нешуточного» составило 4.4 балла, в то время, как для «Герцога» результат оказался равен 2.8 балла по пятибалльной шкале. Быть согласным или не согласным с этой оценкой – решать только вам, а всем проголосовавшим, мы крепко жмем руку и говорим Огромное спасибо!
17
SERIOUS TIME #5
СТАТЬЯ Автор: RCM
БЕЛЫЙ КОТ В ЧЕРНОМ МЕШКЕ?
Многие из вас, вероятно, узнали о компании Croteam по серии игр Serious Sam, в русском переводе - Крутой Сэм. Стоит, однако, отметить, что более ранние проекты данной студии были очень непохожи на Сэма. Впервые о компании услышали благодаря футбольному симулятору Football Glory для Персональных Компьютеров и компьютеров Amiga (Amiga на испанском - подружка) в далеком 1994 году. Данная игра имела особый успех в Германии и Великобритании, а также получила очень хорошие оценки критиков. Следом вышла 5-A-Side Soccer для Amiga в 1996 году - также футбольный симулятор, однако в закрытых помещениях. В том же году была выпущена игра Save the Earth для компьютеров Amiga. Про данный проект мало что известно. Ясно одно: закончив с Save the Earth, Croteam приступили к созданию собственного игрового движка, позднее получившего название Serious Engine, и безымянной на тот момент игры для его обкатки. В 2001 году на свет появляется первый крупный проект компании - Serious Sam: The First Encounter, а годом позже продолжение под названием Serious Sam: The Secound Encounter. Именно эти игры создали и закрепили связь "Если Serious Sam - значит Croteam", благодаря которой они стали известными. Следом выходит еще одно продолжение под названием Serious Sam 2, а несколькими годами позже - два переиздания первых частей в HD качестве на новом движке.
И вот на выставке Е3 2014 хорватские умельцы анонсировали... нет, не Serious Sam 4, несмотря на то, что его многие ждут. Анонсировали они совершенно новый проект под названием The Talos Principle Принцип Талоса ("Тело не может жить без души, а душа - без тела"). По заверениям разработчиков - это нелинейная адвенчура с наличием большого количества паззлов с видом от первого лица, где сделан акцент на одиночной игре и сюжете. В 2011 году Croteam выпускают приквел к самой первой игре серии - Serious Sam 3: BFE, и на этом приостанавливают работу над ней.
Это первая игра компании, не относящаяся к серии Serious Sam, за последние 13 лет.
18
SERIOUS TIME #5
По словам Croteam, для работы над сюжетом были приглашены такие люди как: Том Юберт / Tom Jubert (The Swapper, Faster Then Light, Penumbra, Driver: San Francisco) и Йонас Кирацес/Jonas Kyratzes,
СТАТЬЯ
автор "The Sea Will Claim Everything". Разработчики сравнивают свое детище со смесью Portal от Valve и The Witness, грядущей игры от Джонатана Блоу, также известного по инди-проекту Braid.
19
SERIOUS TIME #5
СТАТЬЯ
Известно что главный герой - робот, который изучает древний мир, воссозданный в виртуальной реальности. Робота сопровождает рассказчик странный громоподобный голос, который наставляет героя, однако не спешит объяснять, где герой находится и как он сюда попал. По словам разработчиков, в игре поднимается философский вопрос о трансгуманизме. Трансгуманизм - это распространенное понятие о трансчеловеке как о следующем витке эволюции, которое включает в себя и бессмертие, и бесполое размножение, и отсутствие индивидуальности, и импланты, превращающие человека в некое подобие робота. По сюжету главный герой пытается постичь смысл существования человечества, а также понять может ли он считаться "человеком", личностью. Вероятно, многие сейчас вспомнили фильм 2004 года "Я, робот", основанный на цикле произведений Айзека Азимова о позитронных роботах. В своих рукописях Азимов выделял несколько важных принципов поведения роботов, и самым главным из них был: "Робот никогда не поднимет руки на человека". Что же случится, если робот сможет представить себя человеком, будет ли данный закон попрежнему применим к нему? Однозначного ответа пока нет, однако, The Talos Priciple определенно раскроет нам много интересного о природе человека, жизни и вере. Позже Croteam представили журналистам различных изданий демо-версию продукта, а заодно показали полноценный трейлер игры. По демо сложно судить о геймплее, но несколько характерных черт можно выделить:
- Будут присутствовать турели, дроныроботы, защитные камеры, QR-коды, "глушилки" и древний разрушенный мир, построенный по прототипу таких стран как: Италия, Испания, Греция, Египет, Хорватия и т.п.; Для прохождения демо-версии необходимо было научиться управлять треногами-лазерами: так расставить их, чтобы деактивировать защитные барьеры или нажать кнопку; - Решение головоломок остается задачей игрока, но если он застрянет в каком-то месте, то всегда сможет уйти оттуда и попробовать разблокировать другие зоны карты. Это подтверждает заявление разработчиков о нелинейности геймплея;
20
SERIOUS TIME #5
СТАТЬЯ
Поскольку исследование будет основной задачей игры, по картам будут раскиданы терминалы, которые позволят общаться с "неизвестным субъектом" с другой стороны. По словам разработчиков, игроку будет представлен обширный выбор реплик, что
позволит развиваться разговору так, как хотите этого вы. Философия - важная часть The Talos Principle, благодаря которой вы можете либо отстоять свои идеи, пока собеседник будет испытывать их на прочность, либо сдаться и признать его правоту.
В трейлере также промелькнул кадр со следующим текстом:
Ты, прямо сейчас сидящий перед экраном и читающий это, спроси себя: почему ты существуешь? Какова цель твоей жизни? Есть ли она у тебя? Лучше ли иметь цель или нет? Когда ты достигнешь смерти, почувствуешь ли, что твоя жизнь имела смысл? Если да, почему? Если нет, почему нет? Как определить, была ли жизнь хорошей или нет? Сейчас это может показаться абстрактным, но рано или поздно придет время умирать. Это неизбежно. И если ты не задашь себе эти вопросы, как ты встретишь этот момент?"
"В чем заключается смысл жизни? Знаю, знаю, это старый вопрос, и на него не такто легко ответить. Но я имею в виду, если ты читаешь это, то ты живой. И однажды ты перестанешь быть живым. Оба эти факта неопровержимы. Так в чем же тогда смысл? Разве тебе это не интересно? Неужели тебе хочется просто идти из небытия в бытие и снова в небытие, даже не поинтересовавшись - зачем?
21
SERIOUS TIME #5
СТАТЬЯ
Опять же из трейлера скриншот архивных данных, который датируется 1 июля 2018 года.
Скриншот письма из списка файлов и его перевод:
"Как я вижу, к миру не предоставляется инструкция. Тебе приходится доходить до всего самостоятельно. Чуть-чуть там, немного здесь, собрать все вместе, попытаться понять смысл всего этого. Я уверен, что истина существует, но не каждый, кто утверждает, что знает её, на самом деле обладает ей. И все же, это не так уж и плохо! Мы живем в удивительном мире, и поиск истины может стать настоящим приключением. Плюс ко всему, это полезно для мозга.
Так или иначе, это все лишь бессвязный бред твоего старика. Не позволяй подобным мыслям достать тебя. Ты молод, и у тебя впереди еще много времени, чтобы во всем разобраться. С любовью, Папа."
22
SERIOUS TIME #5
СТАТЬЯ
На данном скриншоте виден интерфейс взаимодействия с терминалом - кнопки с выбором действия. В видео представитель Devolver Digital вызвал список файлов при помощи команды "list". Затем вы можете выбрать любой из файлов и просмотреть его.
Сценаристы Том Юберт/Tom Jubert и Йонас Кирацес/Jonas Kyratzes также поделились с игровым сообществом некоторыми своими мыслями: "Необязательно читать какие-либо философские труды различных известных писателей, чтобы играть в нашу игру. Однако дело в том, что вы можете рассмотреть The Talos Principle с разных точек зрения, поскольку в разработке участвовало большое количество людей, чьи идеи и взгляды очень сильно отличаются друг от друга. Если вы собираетесь поглубже окунуться в мир игры, ее философский подтекст, то есть несколько авторов, которые могут помочь вам в этом: Аристотель, Карл Маркс, Фридрих Энгельс или Альберт Эйнштейн. В The Talos Principle много отсылок к книжным произведениям известных людей: Айзеку Азимову, Филлипу К. Дику и Уильяму Блэйку. Их мысли и идеи отражены в их книгах, прочитав которые у вас сложится более объёмное понятие о философском смысле нашего проекта.
И все же The Talos Principle не требует от вас каких-либо знаний о 101 проблеме философии или минимального порога интеллекта. Мы пытаемся сделать что-то забавное, но также содержащее дополнительные слои, в которых могут покопаться заинтересованные игроки. Если же вам нет никакого дела до философских основ, игра по-прежнему будет восприниматься как крутая, атмосферная головоломка." – Йонас
"Одна из крутейших штук для меня, как для писателя, - это то, что она представляет собой диалог с различными вариантами направлений. Я, Йонас, Croteam - все мы участвуем в диалоге с игроком и игровой вселенной, несмотря на совершенно разные философские школы. The Talos Principle - это не Bioshock, где акцентировалось внимание на трудах Айн Рэнд, потому что у нас нет какого-либо определенного источника." - Том
23
SERIOUS SERIOUS TIME TIME #5 #5
СТАТЬЯ
Милиционер ночью останавливает компанию небритых, не выспавшихся, измотанных хорватов. — Кто вы такие и что здесь делаете? — Мы — Croteam... — “Кротите” где-нибудь подальше, здесь подземные коммуникации!
Философский принцип кота
24
SERIOUS TIME #5
Не обошли стороной и Дамьяна Мравунаца директора по продвижению и маркетингу и композитора игры. Журналисты сайта Xsolla встретились с ним и поговорили о новой игре студии - The Talos Principle, обсудив такие вещи, как: разработка новых игр в старых франшизах, какие инструменты используют разработчики для ускорения процесса разработки видеоигр и дату выхода конечного продукта. Журналист Xsolla: Здравствуйте, Дамьян, не расскажите ли нам о том, как к вам пришла идея сделать подобную игру? Дамьян: Разрабатывая Serious Sam 4, мы старались отойти от концепции "красный ключ открывает красную дверь", потому что этот способ показался нам излишне устаревшим. Так появился генератор помех "глушилка", которое отключает некоторые электронные двери в игре. Опробовав это в игре, следом пришла еще одна мысль: "А почему бы не добавить в игру побольше интересных паззлов?", ну и постепенно это вылилось в разработку совершенно отличной от Serious Sam игры. Эти события произошли примерно около года назад. Журналист Xsolla: Значит вашему проекту всего год? Дамьян: Да, примерно. Думаю можно приплюсовать пару месяцев, оставшиеся до выхода и еще пару - во время разработки Serious Sam 4. Журналист Xsolla: Удалось бы вам свести время разработки к минимуму без уже имеющегося у вас движка?
СТАТЬЯ Дамьян: Нет, абсолютно. У нас уже были готовые инструменты и даже часть ресурсов. Когда используете чью-то другую технологию, значительное время затрачивается на то, чтобы разобраться в ней. The Talos Principle построен на нашем собственном проприетарном игровом движке - Serious Engine 4. На этой же технологии будет работать и Serious Sam 4. Для демо-версии The Talos Principle мы использовали часть наработок из Serious Sam 4, поэтому многие наши фанаты заметили, что она выглядит почти также как и Serious Sam. У нас уже была хорошо изученная технология, и поэтому не потребовалось много времени, чтобы заставить выглядеть ее ровно и гладко, как сейчас. Журналист Xsolla: Какой наиболее важный инструментарий разработчики используют во время создания видеоигр? Дамьян: Для разработки нашей игры мы написали несколько собственных утилит: конвертеры, импортеры, редактор уровней. Разумеется, как и любые другие разработчики в индустрии, мы используем Photoshop, некоторые программы для 3Dмоделирования. Одна из последних используемых нами программ - это Agisoft PhotoScan. Данный софт создан в России. Она импортирует панорамные фотографии объектов и строит на их основе 3D-модель. Мы небольшая команда, в которой трудится всего 15 - 20 человек, поэтому нам не хватает рабочей силы и человеческих ресурсов, чтобы делать всё с нуля. Чтобы смоделировать объект с нуля требуется очень много времени и стараний.
25
SERIOUS TIME #5
Чтобы
смоделировать
СТАТЬЯ
объект
с
нуля
требуется очень много времени и стараний. Но теперь, вместо этого мы используем фотограмметрию,
сканируя
реальные
объекты и добавляя их в виртуальный мир.
Журналист Xsolla: Как и когда вы планируете выпускать The Talos Principle? Дамьян: У нас уже есть издатель - Devolver Digital, благодаря чему The Talos Principle выйдет в Steam на Windows, Linux и Mac. Не забудем мы и про Playstation 4, а также о планшете NVIDIA Shield. Ориентировочно мы надеемся выпустить игру в октябре - ноябре этого года. Журналист Xsolla: А как обстояли дела с дополнительным финансированием? Дамьян: Мы совершенно независимы. Это наша собственная игра, движок и деньги. Журналист Xsolla: Но как же издатель? Дамьян: У нас существует распределение доходов. Издатель занимается маркетингом и распределением средств, но они не инвестируют в развитие и разработку игры. Вот почему мы можем лично присутствовать на таком роскошном мега-стенде.
Данная технология значительно сокращает время, затрачиваемое на процесс разработки. Все, что нам потребовалось сделать - это послать несколько ребят в Италию, чтобы потом в кратчайшие сроки воссоздать прекрасные и реалистичные 3D-статуи.
26
SERIOUS TIME #5
СТАТЬЯ
Будет ли The Talos Principle новым шедевром или же окажется обычной проходной игрой покажет время. Но уже сейчас можно понять, что перед нами не просто фаст-фуд пострелушка с бюджетом в миллионы долларов или бессмысленный и беспощадный pointand-click квест, сделанный на скорую руку. Философский подтекст вкупе с интересными паззлами и красивой графикой - не этого ли мы ждали так долго? Огромное спасибо группе ВКонтакте об игре The Talos Principle (http://vk.com/the_talos_principle), из которой была взята большая часть данной информации.
27
SERIOUS TIME #5
ИНТЕРВЬЮ Редакция Serious Time
ROCK BAND: UNDERCODE Совершенно неожиданно в нашу скромную обитель гранатой залетела замечательная новость. Оказывается, Кутё вот уже три месяца работает над одним ну очень интересным проектом. Итак, все подробности в интервью. Редакция: Привет Кутё, расскажи, чем занимаешься. Кутё: Мой проект называется “Rock Band: Undercode” – это музыкальная игра. Смысл заключается в имитировании исполнения музыки хорватской рок-группы Undercode. Вообще, RB:U начал разрабатываться немного позже возобновленного “Serious Sam: Guitar Battle”, который мне отдал Артур. Но к счастью, RB:U выйдет намного раньше. Р: Кто состоит в команде разработчиков “Rock Band: Undercode”? К: На данный момент, я один. В принципе, ничего сложного я пока не заметил. Разработка началась, примерно, месяца три назад. И по сей день идет полным ходом. Иногда, конечно, делаю небольшие паузы, тем более начался новый учебный год. Так что прогнозировать пока ничего не могу. Может быть, я наберу в команду еще людей, что бы поскорее воплотить проект в реальность. Р: Что подтолкнуло тебя на этот проект? К: Все началось с того, что как-то нашел трейлер остановленного Артуром “Serious Sam: Guitar Battle”. Так и не дождавшись самой игры, я спросил у Артура разрешения возобновить проект и продолжить разработку самому. За несколько месяцев игра поменяла целую гору игровых движков, но все-таки, остановилась на дополнении к игре Frets on Fire, разработанной на Phyton, как и начинал Артур.
Затем, когда набор песен в игру окончился, я подумал, что можно в игру, как дополнительные треки, впихнуть все альбомы группы Undercode, ибо их тоже немного, и тут же возникла идея собрать все их песни в отдельном проекте “Rock Band: Undercode”. Р: Будут ли еще подобные проекты? К: Пока что, помимо “Rock Band: Undercode” и “Serious Sam: Guitar Battle”, ничего подобного не приходило в голову. Да и представить даже не могу, если честно. Если я и буду делать что-то подобное, то только дополнительные файлы, обновления. Например, новые треки, исправленные партии инструментов и т.д. Р: Как и где будет распространяться игра? К: Пока что, думаю, только на сайте. Больше, в принципе, негде. Я надеюсь на дальнейшее распространение игры, хотя посмотрим.
28
SERIOUS TIME #5
Р: Есть ли возможность скачать альфа версию уже в ближайшее время, или будем ждать окончательного релиза? К: Альфа версия будет. Сильно урезанная, но будет. Точнее, даже не альфа, но демо.
ИНТЕРВЬЮ Р:Будут представлены все альбомы группы? К: Да, однозначно. Иначе никак. Даже если я и пропущу парочку песен или целый альбом, то со временем я их все равно добавлю в игру в качестве обновления. Р: Что самое сложное в работе над Rock Band: Undercode, расскажи.
Р: Модификация будет бесплатной? К: Конечно! Если только не начинать со стартапа. Но это можно увидеть лишь во сне. Р: Какова примерно степень готовности на твой взгляд? К: Даже не знаю. Совсем недавно у меня спросили «Когда ты выпустишь проект?». Я ответил, что проект находится на стадии завершения. Но когда я пересматривал и проверял проект, то я немного усомнился в том, что работать осталось совсем немного. Все зависит от песен. На них и держится модификация, конечно же. Думаю, половина работы уже точно позади.
К: Самое тяжелое – это расстановка нот для каждой песни. Особенно, когда я не мог найти аккорды и лады на каждый инструмент. Тогда я определял на слух. Стоит вспомнить «Freedom». У меня уже не хватало нервов. Я даже темп точный определить не мог, ибо он сбивается в некоторых местах. Все инструменты в голове уже перепутались, я путал лидирующую гитару с басом. Ударники вообще сбивали с толку. Оставалось только халтурить (Ctrl+C, Ctrl+V). Соло партия меня просто выводила из себя. Точно не помню, но с неделю я песню делал. Р: Люди проходящие игру не получат вывих пальцев? Расскажи про уровень сложности. К: Вот на счет этого я даже не знаю. Буду проводить набор тестеров в отдельной закрытой теме. Или где-нибудь в другом месте. У группы песни весьма хардкорные, но я соблюдаю уровень сложности так, что бы, например, на Easy не было больше нот, чем на Medium. Хотя, иногда мне кажется, что Easy уж слишком какой-то Easy. Наверное это сказывается на том, как я давно играю в подобные игры. В общем, с тестом посмотрим. Р: Есть ли пасхалки в игре? К: Ууу… Даже и не задумывался над этим, если честно. Но можно что-нибудь придумать Р: Что-ж, спасибо за интервью, будем с нетерпением ждать релиза.
29
SERIOUS TIME #5
ИНТЕРВЬЮ Редакция Serious Time
SERIOUS SAM: ORIGINS S-time: Привет. Команде Serious-Time хотелось бы взять интервью у разработчиков Serious Sam Origins. Kadath, можем ли мы задать тебе несколько вопросов? Kadath: Да, пожайлуста. S-time: Итак, начнем. Во-первых, если не секрет, чем ты занимаешься, являясь участником команды разработчиков? Kadath: По большей части, я занимаюсь творческим офоромлением Serioius Sam Origins. Сюда входят различные дела с литературным описанием, звуками и музыкой. А также работаю как маппер, восстанавливая карты, которые не были закончены Croteam. S-time: Выходит, в модификации будет особая, официальная музыка? Kadath: Отчасти, да. Некоторые треки были созданы мной специально для sso. Однако кроме этого, вы услышите и вырезанную из официальных серий игры музыку, композитором которой является сам Дамьян Мравуанак. На крепком слове частности и неразглашения, нам был предоставлена целая коллекция таких дорожек! В самом начале, мы хотели использовать музыку из других игр, но согласитесь, на это нужны соответствующие права. И поэтому, половина того, что вы услышите в моде, будет незнакома вашему уху.
Kadath: Поскольку проект берет начало от русскоязычного общества, то не стоит сомневаться - полный русский перевод будет и очень качественным. Нужные тексты переведены и дописаны по мере необходимости. Также, мы готовим и английскую версию с соответствующим переводом, ведь Serious Sam Origins - проект, который ждут не только на Serious site.RU, но и на SeriousZone.com и вообще, по всему миру. Так что, с этим вопросом уже всё решено.
S-time: В последнее время, одним из наиболее частых вопросов является локализация модификации и перевод с английского на русский, а также наоборот. Как обстоят дела в этом отношении?
S-time: "Дописаны по мере необходимости"? Значит, вы применили свою фантазию для дополнения информации? Не станет ли это переломом должной истории, скажем, врагов, оружия и уровней?
30
SERIOUS TIME #5
Kadath: Без фантазии никак! Но мы не разрушаем должных предысторий врагов и прочих объектов. И знаете, почему? Потому что их изначально и не было. Croteam оставили лишь краткие заметки, содержащие минимум информации, которую нельзя толком преподать. Допустим, у биомеханоидов, гнааров и камикадзе имеются целые биографии, от которых можно оттолкнуться. А что делать с такими врагами, как фишмен, киборг или хуэнмэн? В Serious Sam Origins каждый объект, будь то враг или уровень, крепко скреплены сюжетной линией, из-за чего, связать их воедино и описать - проще простого. Конечно, не так просто, но самое главное, что у нас получилось это сделать. На каждого врага вы увидите подробное досье, а на каждом уровне вы сможете прочитать львиную долю сюжета, снабженного интересными фактами. S-time: Возможно, это очень не скромный вопрос, но всё же, в чём заключается сюжет Serious Sam Origins? Kadath: О, вопрос действительно не скромный! Пожалуй, тогда мне придётся слегка поскромничать! В трех словах - Сэм, Ментал, Принцесса.
ИНТЕРВЬЮ
S-time: Будет ли Сэм говорить? И если будет, то чьим голосом? Kadath: Сэм будет говорить и на двух языках, раз уж мы замахнулись на перевод. За это мы очень благодарны официальному голосу Сэма - Джону Джей Дику, который выразил желание помочь с английским озвучиванием и при этом, бесплатно. Касаемо русскоязычной озвучки, в SSO будет звучать голос одного из участников команды разработчиков. Я не буду говорить, кто это (хотя вы его прекрасно знаете), но предостерегу от предрассудков: на SeriousSite.ru знаменит "серьёзный голос" маппера ZombeZI. Так вот это будет не он. S-time: Отличается ли атмосфера и геймплей Serious Sam Origins от оригинальных серий Серьезного Сэма? Kadath: Насколько я помню, в одном из интервью к Croteam, разработчики признались, что сложность в ранней версии игры была настолько велика, что пришлось убавить количество врагов и поработать над балансом в этом отношении. Так вот – это чистая правда.
31
SERIOUS TIME #5
Огромное разнообразие врагов (более 46!) и почти такое же число уровней, не могли сказаться на геймплее, из-за чего игра приобретает действительно хардкорный характер. Однако, выглядит всё по-прежнему в стиле Croteam– порядочно и гармонично. А с атмосферой совсем другая ситуация. Вам знакомо чувство дежавю? Все локации в Serious Sam Origins выглядят настолько знакомо и сколько неизвестно и ново. Буквально до костей пробирает атмосфера чего-то по-настоящему древнего и загадочного. В общем, об этом не надо говорить – это надо увидеть и почувствовать! S-time: В последней новости у поминалось о не включенном контенте, который планировался использоваться в ранней игре Croteam – In The Flash. Неужели это действительно так? Kadath: Ну конечно! Не будем же мы вам врать. Хотите сыграть на локациях, засветившихся в скриншотах к In The Flash, а также пострелять в очень старых врагов? В SSO вы получите такую возможность. Хочу обрадовать любителей Serous Editor: Роман Рибарич подарил нам огромнейшую коллекцию моделей, которые должны быть в альфе. Это различные предметы древнеегипетского быта (кровати, стулья, костры и домики), люди, животные, птицы, лодки, машины, растения, космические корабли и много-много других объектов.
ИНТЕРВЬЮ И самое главное – подавляющая часть моделей полностью анимирована и готова к использованию в пользовательских уровнях! Ух, я уже чувствую, как мапперы жадно потирают ладошки! S-time: А вот скажи, как ты думаешь, в чём причина задержки даты выхода? Kadath: К сожалению, мы не смогли выпустить SSO к Новому Году, как было обещано в момент первого анонса. Лично я бы не стал считать эту дату официальным и правдивым заявлением - на тот момент у нас было не так много готово, и проект был крайне сырым. Причину этой непростительной ошибки я затрудняюсь назвать, ведь тогда, мы бы всё равно не прыгнули выше головы и не смогли бы выпустить проект. Вторым важным доводом является размер команды. После очень напряженной ситуации, связанной с руганью в рабочем коллектива и анонсом Serious Sam Revolution, нам пришлось расформировать прошлый состав, оставив лишь самых нужных людей. Их не много. Поэтому дела идут не так быстро, как хотелось бы. S-time: Готов ли ты сейчас сказать примерную дату выхода Serious Sam Origins? Kadath: Нет. Но я еще раз повторяю – работа идет. Всё, что я вам сказал выше, подразумевает лишь одну тысячную того объема, который нам нужно воплотить. Это очень много работы. Вам нужно лишь ждать релиза, который обязательно будет.
32
SERIOUS TIME #5
S-time: Анонс Serious Sam Origins вызвал немало шума и в некоторой степени, даже обрёл поклонников. Как ты считаешь, почему так? Kadath: На протяжении долгих лет, Croteam показывали лишь скриншоты альфа-версии Сэма. Для игроков это было нечто сакральным, недосягаемым и прекрасным, и почти каждый вздыхал: "зачем они это вырезали?!". А теперь представьте – это сокровище оказалось у вас в руках в том виде, в котором оно было создано много лет назад.
ИНТЕРВЬЮ
Serious Sam Origins - это законченная альфаверсия нашей любимой игры Serious Sam. Я бы сказал, что это не про что мод, а целая игра, раскрывающая еще одну сторону Серезного Сэма. Каждый фанат игры желает прикоснуться к истокам этого шутера, узнать, как всё было на самом деле и я уверяю посмотреть есть на что. S-time: Спасибо большое за интересное интервью, Kadath! Хочешь что-нибудь сказать напоследок? Kadath: Разумеется! Кря-кря.
СЕРЬЕЗНОЕ РЕДАКТИРОВАНИЕ
SERIOUS TIME #5
33
ИЕРАРХИЧЕСКАЯ МАШИНА СОСТОЯНИЙ В SERIOUS ENGINE
Автор: SLAwww
Несмотря на пугающее название, в этой статье мы не будем изобретать искусственный разум или взламывать серверы Пентагона, а ограничимся объяснением участков кода, которые идут после слова procedures в файлах .es. Эта статья для тех, кто уже немного знаком с Serious Engine и хоть что-то понимает в программировании.
Стек вызовов
Вот такое количество врагов на экране – привычное дело для Serious Sam. А сколько всего невидимого происходит в этот момент! Ведь на карте есть триггеры, спаунеры, камеры и всевозможные прочие объекты. При
этом,
даже
в
начале
2000-ных
производительность движка не вызывала нареканий. А ведь, если присмотреться,
каждый объект «думает» независимо от остальных: пока один враг падает замертво, другой продолжает бежать к игроку, а третий и вовсе не видит игрока. Как сделать так, чтобы для нескольких объектов код выполнялся одновременно, параллельно? В обычных программах для этого есть потоки. Запустил себе функцию в другом потоке, и она выполняется условно-параллельно.
34
SERIOUS TIME #5
Но большое количество потоков негативно влияет на производительность, также необходимо принимать особые меры для их синхронизации. Иными словами, для игры (особенно такой, как Сэм) это не годится. Естественно, выход из сложившейся ситуации был найден. Чтобы его описать, сначала следует вспомнить, что такое стек вызовов. Стек вызовов имеется у каждой программы, а точнее – у каждого потока. Когда одна функция вызывает другую, вызванная функция размещается на верхушке стека и принимает управление. Когда выполнение функции завершается, она удаляется из стека, и управление переходит к функции, которая в стеке находится ниже. Когда в стеке не остаётся функций, поток завершает своё выполнение. Как уже было сказано выше, своим собственным стеком вызовов обладает каждый поток, но наши хорваты пошли дальше, и теперь у каждого объекта в Serious Engine может быть свой собственный стек вызовов! При этом физически все они выполняются в одном потоке, но логически их можно воспринимать как независимые процессы. И, что немаловажно – не требуется никакой синхронизации, мьютексов и критических секций.
СЕРЬЕЗНОЕ РЕДАКТИРОВАНИЕ
Объекты событий Благодаря хитрости, которую провернули Croteam, один объект не может наверняка знать, в каком состоянии находится другой, и поэтому напрямую менять значения его переменных-членов, как правило, не может. Например, один враг хочет позвать другого (такой функции в движке нет, но, прочитав эту статью, вы сможете её добавить). Что для этого сделать? Напрямую установить значение переменной m_penEnemy? А что, если второй враг находится в состоянии глубокого сна, и ему плевать на изменение какой-то там переменной? Не пойдёт. Решить эту проблему помогут так называемые «события». Они словно маленькие письма, которыми обмениваются объекты. Один объект отправляет письмо другому, а второй решает, что ему делать с полученным письмом. Таких писем туда-сюда летает огромное множество в каждую секунду. Многие из них отправляет сам движок (например, ETouch: идёт монстр по земле, а ему каждую секунду приходит ETouch, ETouch, ETouch… И он чувствует себя не обделённым вниманием). События проходят взаимную синхронизацию во время сетевой игры, поэтому нужно стараться всё взаимодействие между объектами завязать именно на событиях.
35
SERIOUS TIME #5
Машина состояний Допустим, мы проектируем будущего врага. Как он должен себя вести? Ну, тут все ясно!
Очень часто разработчики рисуют такие (или похожие) схемы, чтобы описать поведение персонажей в играх. А потом сами в них путаются. Даже сейчас это – громоздкое скопление блоков и стрелок. А когда схема обрастёт кодом, она может оказаться весьма громоздкой и содержать множество ошибок, допущенных из-за того, что построение логики машины состояний в полной мере лежит на плечах программиста. А мы несколько упростим задачу и перерисуем машину состояний в иерархичном виде!
СЕРЬЕЗНОЕ РЕДАКТИРОВАНИЕ
Жизнь монстра начинается снизу, и, в зависимости от обстоятельств, он поднимается выше в каком-то одном направлении. Ничего не напоминает? Да это же почти как стек вызовов! Единственное отличие – некоторые состояния могут сменять друг друга на вершине стека (привычный стек вызовов в программе такого делать не умеет. Пришлось бы возвращаться вниз, а затем подниматься вверх вместо простого «прыжка» от одного состояния к другому). А какие могут быть обстоятельства? Ну, ясно же: получение события!
Именно это происходит при получении события объектом (в нашем случае – врагом). Событие попадает в самое «верхнее» состояние, где и решается его дальнейшая судьба. А вариантов здесь немного: событие может быть «проглочено» состоянием (объект остаётся в прежнем состоянии), либо состояние может измениться под действием события (новое состояние либо сменяет текущее, либо помещается над ним). Если же событие никак не обрабатывается текущим состоянием, то оно «падает» вниз, в другое состояние, которое находится под текущим. Событие будет падать вниз, пока его ктонибудь не словит. И как только это произойдёт, весь стек состояний обрушится до поймавшего событие:
36
SERIOUS TIME #5
Это всё довольно сложно понять с первого раза, но аналогия с реальной жизнью должна помочь. Идёт человек по улице, как выглядит его стек состояний? В самом низу, очевидно, расположен «я живу», над ним – «я дышу», ещё выше – «я иду по улице» и «я думаю о творчестве Венедикта Ерофеева». Состояние «я живу» не может стоять над «я дышу», потому что живой человек может задерживать дыхание, но мёртвый не может дышать. «Я иду по улице» стоит над «я дышу», потому что идти по улице и не дышать всю дорогу человек не сможет. Состояние «я думаю о творчестве Венедикта Ерофеева» могло бы находиться под «я иду по улице», но в данном случае, человек начал думать о творчестве Ерофеева, потому что шёл по улице и ему было не о чем больше думать. Внезапно на голову человека сверху падает событие «кирпич». В первую очередь оно попадает внутрь состояния «я думаю о творчестве Венедикта Ерофеева», но это состояние ничего не может сделать с кирпичом, потому что оно посвящено замечательной поэме Ерофеева «МоскваПетушки», и не занимается скучными, обыденными делами.
СЕРЬЕЗНОЕ РЕДАКТИРОВАНИЕ
Поэтому кирпич проваливается вниз, в состояние «я иду по улице», и вот здесь кирпич и обрабатывается. В результате того, что событие «кирпич» обработано состоянием «я иду по улице», из стека сверху удаляется состояние «я думаю о творчестве Венедикта Ерофеева», а затем состояние «я иду по улице» сменяется состоянием «я падаю и матерюсь». А состояния «я дышу» и «я живу» остаются на месте, потому что, к счастью, кирпич до них не долетел. Именно по такому принципу работает искусственный интеллект врагов в Сэме, а также многие другие элементы.
СЕРЬЕЗНОЕ РЕДАКТИРОВАНИЕ
SERIOUS TIME #5
37
Синтаксис Пожалуй, синтаксис - самое важное, ради чего была написана эта статья. Представленные ниже примеры кода относятся только к так называемым «процедурам» (их следовало бы назвать «состояниями», но зачем-то Croteam в .ESфайлах решили писать procedures). Итак: Main() { InitAsVoid(); SetPhysicsFlags(EPF_MODEL_IMMATERIAL); SetCollisionFlags(ECF_IMMATERIAL); return; };
Main – это процедура, которая после загрузки уровня будет вызвана у всех объектов условно-одновременно. Стоит подчеркнуть, что сразу после загрузки, то есть, если даже открыть карту в редакторе, Main тут же будет вызвана! В куске кода сверху написан самый минимум, необходимый для того, чтобы объект работал. Что в первую очередь бросается в глаза? То, что перед Main() не указан никакой тип: это не int Main(), не void Main(), а просто Main(). Почему нет типа? Потому что процедура может вернуть любой тип! Точнее – любое событие. А может вернуть просто ничего, это уже смотря как мы напишем. Далее, в конце процедуры зачем-то следует return, хотя по логике языка, он там не нужен. Всё дело в том, что .ES-файл перекомпилируется в совершенно другой по виду .СРР, в котором команда return будет заменена на нечто более сложное, поэтому return пишется в конце каждой процедуры, из которой в принципе есть возможность выйти. Далее мы сможем убедиться в том, что не из всех процедур есть выход…
Итак, игра запущена, наш объект находится в состоянии Main. Что будет, если объекту сейчас придёт какое-нибудь событие? А ничего. Нигде в процедуре Main нет никакого обработчика для событий, и все они будут «вываливаться» из стека вниз, в небытие. Когда ни одна из процедур в стеке не перехватывает событие, то стек остаётся в прежнем состоянии, а событие погибает. Однако мы упустили важную деталь. Объект не будет находиться в состоянии Main продолжительное время. Он пробудет в нём всего долю микросекунды, пока выполняются три функции внутри процедуры, а затем будет выполнен return, и стек объекта окажется совершенно пустым! Когда в стеке состояний ничего нет, все полученные события погибают мгновенно. Точнее, их ещё можно успеть спасти, перегрузив виртуальную функцию HandleEvent, но для драматического эффекта мы сейчас не будем рассматривать эту сюжетную ветвь. Лучше сделаем так, чтобы объект навеки оставался в состоянии Main. Для этого немного дополним код: Main() { InitAsVoid(); SetPhysicsFlags(EPF_MODEL_IMMATERIAL); SetCollisionFlags(ECF_IMMATERIAL); wait() { otherwise() : { resume; } } };
Из конца процедуры пропал return, потому что в конец процедуры мы не попадём никогда. В теле процедуры появился цикл wait, он работает аналогично оператору switch в С/С++, а otherwise() аналогичен ключевому слову default. Теперь, после входа в процедуру мы попадём в цикл ожидания, которому нет конца.
СЕРЬЕЗНОЕ РЕДАКТИРОВАНИЕ
SERIOUS TIME #5
38
События будут приходить и сразу же попадать в otherwise, то есть, мы их как будто бы и обработали, но при этом нам плевать на эти события. Это – объект-флегматик, ему нет дела до ваших событий. И не смотря на то, что цикл ожидания вечен, игра от этого не зависнет, ведь я уже рассказывал о том, как хитро хорваты эмулируют многопоточность? Пока один объект вечно ждёт, другие могут спокойно работать. Теперь было бы неплохо сделать так, чтобы объект-флегматик всё-таки стал реагировать на какие-нибудь события. Допишем пару строчек:
CPrintF(“Start event received!\n”); resume; } on (ETrigger) : { CPrintF(“Trigger event received!\n”); resume; } on (EStop) : { CPrintF(“Stop event received!\n”); stop; } otherwise() : { resume; } } };
Main() { InitAsVoid(); SetPhysicsFlags(EPF_MODEL_IMMATERIAL); SetCollisionFlags(ECF_IMMATERIAL); wait() { on (ETrigger) : { CPrintF(“Hello world!\n”); resume; } otherwise() : { resume; } } };
Синтаксис довольно простой. Достаточно одного взгляда на этот код, чтобы понять, что в нём происходит. На всякий случай поясню: каждый раз, когда приходит Trigger event, мы пишем в консоль Hello world (CPrintF) и продолжаем ждать события в этом цикле wait (resume). Можно добавить ещё несколько обработчиков: Main() { InitAsVoid(); SetPhysicsFlags(EPF_MODEL_IMMATERIAL); SetCollisionFlags(ECF_IMMATERIAL); wait() { on (EStart) : {
В зависимости от вида полученного события, в консоль будут выводиться разные сообщения. А в обработчике Stop event’a вместо resume стоит stop, эта команда приведёт к выходу из цикла wait, и в данном случае – к последующему выходу из процедуры и опустошению стека состояний. Так что реагировать на Trigger event и Start event объект может сколько угодно раз, но отреагировать на Stop event – только один раз, и после этого не станет реагировать более ни на что. Кроме resume и stop есть ещё одна команда, которой можно завершить обработчик события – pass. Её выполнение приводит к тому, что текущее состояние убирается из стека, а событие в нетронутом виде падает вниз, в процедуру, которая находилась под текущей. Но мы пока что не рассматриваем управление стеком, но к этой команде мы ещё вернёмся.
СЕРЬЕЗНОЕ РЕДАКТИРОВАНИЕ
SERIOUS TIME #5
39
Важная особенность цикла wait – возможность задавать таймер. В коде это выглядит так: Main() { InitAsVoid(); SetPhysicsFlags(EPF_MODEL_IMMATERIAL); SetCollisionFlags(ECF_IMMATERIAL); wait(1.0f) { on (ETimer) : { CPrintF(“Hello world!\n”); resume; } otherwise() : { resume; } } };
В обработчике события ETimer теперь стоит stop, а не resume, поэтому после получения ETimer цикл wait будет завершён, но сразу после этого вновь начнётся, потому что сам находится внутри бесконечного цикла while. Ранее мы уже проводили аналогию между событиями и почтовыми конвертами. В конверте может что-то лежать, как и в событии. Если заглянем в Global.es, то увидим: event EActivate { field) }; … event ETrigger {
В скобках после wait появилось время ожидания – одна секунда. Это время отсчитывается от начала игры, а не от загрузки карты. Во время редактирования карты игровое время стоит на нуле, и хотя процедуры Main запускаются у всех объектов, ни один цикл wait не начинает работать. Через одну секунду после входа в цикл wait, будет автоматически отправлено событие ETimer. Оно отправляется лишь один раз, а не каждую секунду, поэтому если вы хотите, чтобы объект каждую секунду писал в консоль Hello world, придётся сделать так:
// sent by trigger class
CEntityPointer penCaused, // who caused the trigger (transitive) };
После EActivate пустые скобки, в конверте ничего нет. Но вот ETrigger может нести в себе указатель. Чтобы получить что-либо из полученного события, используется такой синтаксис: Main() { InitAsVoid(); SetPhysicsFlags(EPF_MODEL_IMMATERIAL); SetCollisionFlags(ECF_IMMATERIAL); wait() { on (ETrigger i_nameOfReceivedEvent) : { if (i_nameOfReceivedEvent.penCaused != NULL) {
Main() { InitAsVoid(); SetPhysicsFlags(EPF_MODEL_IMMATERIAL); SetCollisionFlags(ECF_IMMATERIAL); while(TRUE) { wait(1.0f) { on (ETimer) : { CPrintF(“Hello world!\n”); stop; } otherwise() : { resume; } } } };
// activate class (usually touch
i_nameOfReceivedEvent.penCaused>SendEvent(EActivate()); } CPrintF(“Hello world!\n”); resume; } otherwise() : { resume; } } };
40
СЕРЬЕЗНОЕ РЕДАКТИРОВАНИЕ
SERIOUS TIME #5
i_nameOfReceivedEvent – это имя переменной, в которую будет записано пришедшее событие. В самом обработчике можно привычным образом получать доступ к переменным-членам события. Почему-то довольно часто в сэмовском СДК название этой переменной похоже на название самого типа события (on (ETrigger eTrigger)), это вызывает путаницу. Следует понимать, что первое – всегда имя типа, а второе – название переменной этого типа, которой может и не быть. Вы всегда можете создавать свои собственные типы событий для любых нужд. Чтобы увидеть, как это делается, посмотрите, например, в Acid.es. В самом начале файла – определение нового события. Поместить «внутрь» события можно только переменные определённых типов. Точно такие же ограничения накладываются на типы параметров объектов. Также в предыдущем куске кода показано, как можно отправлять событие. Если же в состав события входят переменные-члены, которые нужно заполнить перед отправкой, синтаксис лишь немного усложнится: ETrigger myTriggerEvent; myTriggerEvent.penCaused = m_penSomeParameter; m_penSomeTarget->SendEvent(myTriggerEvent);
С событиями разобрались. Настало время узнать, как происходит управление стеком! Нам понадобятся две самые главные команды: call и jump. Первая помещает новое состояние в стек над текущим, вторая – заменяет текущее состояние в стеке на новое. Посмотрим сначала на jump: Inactive() { wait() { on (EActivate) : { jump Active(); } } }
Active() { wait() { on (EDeactivate) : { jump Inactive(); } on (ETrigger) : { CPrintF(“I am active!\n”); resume; } } } Main() { InitAsVoid(); SetPhysicsFlags(EPF_MODEL_IMMATERIAL); SetCollisionFlags(ECF_IMMATERIAL); jump Active(); };
Сразу же после запуска игры процедура Main в стеке будет заменена на Active. Затем, если прислать объекту событие EDectivate, он перейдёт в состояние Inactive, то есть, оно заменит в стеке состояние Active. Обратный переход возможен с помощью отправки EActivate. В состоянии Inactive объект не реагирует ни на какие события, кроме EActivate. Но в состоянии Active есть обработчик события ETrigger. Таким образом, работает простейший паттерн, который часто встречается в сэмовском СДК. Заметьте, что после команды jump в обработчиках событий не обязательно ставить resume или stop, потому что выполнение call/jump приводит к моментальному переходу в другую процедуру. Теперь усложним задачу, использовав call: TimedAction() { wait(1.0f) { on (ETimer) : { return EReturn(); } on (EStop) : { CPrintF(“Timer terminated!\n”); pass; }
SERIOUS TIME #5
41
otherwise() : { resume; } } } Inactive() { wait() { on (EActivate) : { jump Active(); } on (EStart) : { call TimedAction(); } on (EStop) : { CPrintF(“Stopped and returned to Inactive()\n”); resume; } on (EReturn) : { CPrintF(“Finished and returned to Inactive()\n”); resume; } } } Active() { wait() { on (EDeactivate) : { jump Inactive(); } on (ETrigger) : { CPrintF(“I am active!\n”); resume; } on (EStart) : { call TimedAction(); } on (EStop) : { CPrintF(“Stopped and returned to Active()\n”); resume; } on (EReturn) : { CPrintF(“Finished and returned to Active()\n”); resume; } } } Main() { InitAsVoid(); SetPhysicsFlags(EPF_MODEL_IMMATERIAL); SetCollisionFlags(ECF_IMMATERIAL); jump Active(); };
СЕРЬЕЗНОЕ РЕДАКТИРОВАНИЕ Давайте смотреть не сверху или снизу, а по порядку выполнения кода. Мы зашли в Main, потом Main был заменён на Active, и мы ждём событие. И тут вдруг приходит EStart. Состояние Active остаётся в стеке, но над ним появляется состояние TimedAction, и мы сразу прилетаем в него. Там стоит wait с ожиданием. Если в течение одной секунды ничего не будет происходить, то придёт ETimer, мы попадём в его обработчик, а оттуда упадём вниз по стеку с событием EReturn в руках. EReturn будет сразу же схвачен в соответствующем обработчике в Active, после чего объект продолжит «жить» в этом состоянии. Но в TimedAction мы могли бы прийти и из Inactive. Как видно из кода, не смотря на название, там тоже обрабатывается EStart. Таким образом, внизу стека может быть либо Active, либо Inactive, а вверху стека может быть TimedAction. Посмотрим поближе на последнюю процедуру. В обработчике события EStop есть ключевое слово «pass». Оно означает, что уже обработанное событие следует бросить вниз по стеку. Тогда, в данном случае, TimedAction выведет на экран текст «Timer terminated!», после чего EStop сразу же придёт в процедуру, которая под ним. Аналогичного результата можно было бы добиться, написав return EStop();, но иногда удобнее написать pass, чтобы не копировать содержимое события. Ещё в TimedAction есть ключевое слово otherwise. О нём речь уже шла, но зачем оно здесь? Дело в том, что пока объект находится в состоянии TimedAction, ему может прийти какое-нибудь событие, обрабатываемое процедурами, находящимися внизу стека (например, Trigger event обрабатывается в Active), и тогда стек обрушится до той процедуры, где событие обработано. Чтобы этого не произошло, лишние события следует отлавливать. Это самый простой способ, хотя в данном случае можно было бы написать on (ETrigger) : { resume; }.
42
SERIOUS TIME #5
Мы более-менее разобрались с основными ключевыми словами. Теперь рассмотрим вспомогательные, которые заменяют собой совокупности основных: autocall autowait waitevent Первое ключевое слово применяется так: autocall MyProcedure() ETrigger myTriggerEvent;
Этот код идентичен вот такому: wait () { on (EBegin) : { call MyProcedure(); } on (ETrigger myTriggerEvent) : { stop; } }
Очевидно, что если вам не нужно ничего делать с содержимым события, то название переменной (myTriggerEvent) можно не писать, но тип ожидаемого события указывать обязательно. autocall означает «помести такую процедуру наверх стека и жди, пока она не вернёт такое событие». autowait – одно из самых простых ключевых слов, выполняет ожидание. Длительность указывается в скобках, например, autowait(1.0f), код получается аналогичным вот такому: wait (1.0f) { on (ETimer) : { stop; } }
СЕРЬЕЗНОЕ РЕДАКТИРОВАНИЕ То есть, мы просто ждём какого-то определённого события. В скобках можно писать время таймаута, после которого ожидание прекратится автоматически. Напоследок остаётся добавить лишь пару небольших деталей. Внутри одной процедуры может быть сколько угодно циклов wait, но внутри одного wait’a нельзя размещать ещё один, для этого используйте стек, вызывайте новую процедуру, и уже в ней делайте wait. По этой же причине autocall/autowait/waitevent не следует размещать внутри wait. При возвращении из процедуры вниз по стеку, мы попадаем не в место вызова процедуры, из которого вернулись, а в последний цикл wait, об этом тоже следует помнить. Ну и, не смотря на всю прелесть эмулированной многопоточности в сэмовском движке, это не означает, что он не зависнет. Вы можете делать бесконечные циклы в процедурах, но только когда в таких циклах есть некоторое время ожидания. Например, вот так делать можно: while(TRUE) { wait(0,1f) { on (ETimer) : { stop; } } }
А вот такой код приведёт к зависанию: while(TRUE) { wait() { on (EBegin) : { stop; } } }
Ну и последнее ключевое слово, которое используется довольно редко: waitevent() ETrigger myTriggerEvent;
Код, аналогичный этому, будет иметь вид: wait () { on (ETrigger myTriggerEvent) : { stop; } }
На этом, пожалуй, все. Надеюсь, моя статья поможет читателям в освоении кодинга. Всем успехов! Slawww out.
SERIOUS TIME #5
К СОДЕРЖАНИЮ
Ноябрь, 2014