КГ: ответы на вопросы

Ну что же, думаю, что на все нужно смотреть с оптимизмом. Приятно удивил фильм «Суррогаты» от режиссера «Терминатора-3» с Брюсом Уиллисом в главной роли, также порадовал белорусский производитель, выпустивший прекрасное питание для спортсменов «Беллакт-25», а под хорошее настроение и пишется легко. И, кстати, я посмотрел на происходящее со стороны и пришел к странным, но тоже положительным выводам. А именно…

Нужно сказать, что КГ отличается от других компьютерных изданий, с которыми ваш покорный слуга сотрудничал, — она очень популярна среди студентов и преподавателей, о чем явно говорит не только почта, но и личные контакты. То есть газету читают, а не покупают как рекламный листок.

Не знаю даже, как это все объяснить, потому как чаще всего специализированные компьютерные издания позиционируют себя как рекламный проспект- таблоид технической тематики. Тут все оборачивается несколько иначе. И если раньше ко мне обращались с вопросами типа: «где найти драйвер для микрофона» (причем с кучей грамматических ошибок), то сейчас больше серьезных, продуманных контактов. Например, именно через КГ и мои публикации я познакомился с некоторыми преподавателями. Они давали мне свои книги, делились находками, спорили с написанным. Если говорить о студентах, то мне достаточно произнести несколько предложений, например, «это проще сделать на Lua», как многие сразу догадываются, с кем говорят. Вот такая интересная вещь.

Приступаем… Пришло интересное письмо.

Здравствуйте, уважаемый Кристофер. Сразу представлюсь. Меня зовут Артем. Я студент 4-го курса математического факультета. Читаю с удовольствием Ваши статьи в Компьютерной Газете. Сделав очередную попытку найти себя, понял, что мне нужно чье-то компетентное мнение. Почему-то, не раздумывая, решил написать именно Вам :). Итак, начну.

Проучившись 3 года, все время ловил себя на мысли "мол, выучусь в универе, и все дороги открыты". И вот, в очередной раз сдав сессию, я понял, что пора что-то менять. А понял я то, что нельзя идти к цели, не имея ее. В этой ситуации мне оставалось только подумать и решить, куда и как двигаться. Куда, я уже решил: хочу разрабатывать (в перспективе) или участвовать в разработке игр (это для начала). А вот как? - это главные сейчас вопрос.

Пишу я это письмо с надеждой получить квалифицированную помощь или услышать Ваше мнение на этот счет. Ниже я задам несколько вопросов, на которые очень хочется получить ответ. И заранее извиняюсь за сумбурное изложение мыслей... :)

О белорусском рынке. Насколько я знаю, в Беларуси только одна крупная фирма-разработчик игр для ПК. Это компания Arise. (Может, мои данные устарели, тогда, прошу, поправьте меня). Сразу хочу заметить, под играми для ПК я имею в виду большие, так называемые хардкорные проекты, а не шароварные казуалки.

О моих знаниях. Из технологий уже знаю C++, Java (уделил большое внимание и начинаю уже разбираться в тонкостях, которые, как чувствую, мне никогда не пригодятся), ну и сейчас начал проявлять нездоровый интерес к C#. Из теории: люблю "идейные" (то бишь олимпиадные) задачи, где нужно проявить смекалку. Порой могу несколько дней ходить и прокручивать задачу в голове, пока вдруг не снизойдет озарение :).

Но вообще говоря, меня очень сильно интересуют именно такие вопросы, как:

1. Какими начальными знаниями, по Вашему мнению, я должен обладать, чтобы начинать переписку с компанией-нанимателем?

2. В силу обстоятельств я сделал упор на изучение Java, хотя в душе мне вся эта кроссплатформенность и "всеобщность" несколько не нравится. Вообще, как мне видится, программировать конкретно под Windows проще и удобнее (намек на C#). Посему хочу спросить, как обстоят дела с играми на Java. Не слишком ли нелепа эта технология для больших проектов?

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

4. И наконец, что лично Вы мне можете посоветовать? Может, вообще нет никакой перспективы идти в геймдев? Я не говорю, что меня можно отговорить от моей мечты :), но все-таки хочется выслушать альтернативное мнение.

С уважением, Atomic. И заранее благодарен за ответ.

Уф-ф. Тут самое главное правило — не путать желаемую реальность с настоящей реальностью. Да, вроде в Беларуси есть геймдев, причем достаточно развитый. А как кризис закончится, студии начнут расти как грибы после дождя — ниша финансово перспективна. Хотя здесь, как и во всех других сферах, успех зависит от множества факторов. Например, многие думают, что крутые игры выпускают корпорации-монстры. На самом деле в ряде случаев это не так. Blizzard стартовала с небольшой команды, Piranha Bytes («Готики» 1, 2, 3 и свеженькая Risen) — тоже небольшая команда. И таких примеров можно привести огромное множество. У нас есть и Wargaming.net, и Steelmonkeys, есть и несколько менее известных. Абсолютно не исключено, что появятся новые команды.

Кстати, не стоит так пренебрежительно относиться к казуальным играм, которые, говоря образно, являются «Miss American Pie» геймдева. Временной цикл разработки мал, вложения невелики, а отдача может быть многократной, причем есть работающие сервисы, которые помогают все это дело продавать, да и спектр покупателей огромен — от домохозяек до пользователей мобильных телефонов.

Итак, начнем с прелюдии вашего письма. Двигаетесь вы в верном направлении, то есть, да, С++, Java, C# (с каждым идут сопутствующие технологии) — представители самых сильных языков коммерческого (!) программирования. Ведь существует программирование теоретическое, а есть коммерческое. Причем, с вашей базой, если она хороша, вы уже потенциально востребованный человек на рынке. Конечно, в начальном списке не хватает чистого С, от которого, собственно, все и пошло, но этого иногда и не требуют, потому как коммерческие разработки чаще всего на нем не ведутся. Помимо этого нужно хорошо владеть вопросами программирования сетей (как в клиентской, так и в серверной частях), где вы можете встретить другие технологии и языки. Тема интересна и обширна, и ваш покорный слуга пытается об этом писать как можно более полно.

Есть интересные языки-находки, такие как Lua. Теперь перейдем к ответам по приведенным пунктам…

Чаще всего от вас будет требоваться опыт работы на С++. Почему не С#? Тем более, что для DirectX нет разницы? Технологии в большинстве своем перенимаются, то есть все развивается инертно, а С++ считается классикой. И, в принципе, С# будет в опале на игровом рынке до тех пор, пока на нем не напишут игровой движок топ-класса (или мега-популярную игру ААА-класса).

Опыт… Ну, тут много вариантов. Вы написали, что любите решать олимпиадные задачи. ОК. Тогда участвуйте в конкурсах, например, тех, которые постоянно проводит Intel для разработчиков. Тут вы можете и ценный приз заработать, и портфолио, а может, и получить предложение на работу в какую-нибудь крупную игровую компанию.

Не менее полезным окажется самостоятельное создание игры, можно и казуальной, где вы сами напишете сценарий, сделаете план и главное(!) доведете эту разработку до конца. В этом варианте вы получите хороший опыт/знания о том, что, где и как. Ведь на самом деле структурно игры не меняются — меняется сложность и технологические новшества.

Есть и самый безболезненный вариант «вхождения» в геймдев. Вы устраиваетесь на любое предприятие/в фирму в качестве С++-программиста и работаете там два-пять лет. А С++-программисты с таким стажем нужны везде, в том числе и в геймдеве. За это время не сидите на месте, а активно расширяете свои знания в области языка и технологий (например, осваиваете тонкости программирования под DirectX), делаете некоторые самостоятельные разработки. После отсылаете резюме. В большинстве случаев вам дадут тестовое задание, на самом деле для опытного программиста несложное. Например, разобрать какую-нибудь функцию, также я когда-то приводил в «КГ» типовой тест для программиста от одного из очень крупных игровых разработчиков. Там требовалось всего-навсего написать программу, которая считает количество знаков в текстовом документе, а ход самих вычислений должен был отображаться progress bar'ом.

Это если говорить о «крупняке». А знания Java вам также не помешают, ведь этот язык очень часто используется в онлайновых играх, и, само собой, казуальных. На «казуале» многие зарабатывают достаточно быстро, и, естественно, у части из них появляется желание перейти на более высокий уровень.

По моему мнению, стране просто необходимы крупные и дорогие игровые проекты, как минимум для того, чтобы сформировать пласт специалистов. А они уже в свою очередь будут способны самостоятельно создавать новые дорогие продукты мирового уровня, формировать свои команды. Я не думаю, что с нынешней ситуацией массового аутсорсинга и одним-двумя более-менее крупными разработчиками игр можно продержаться. Аутсорсинг может уйти в Индию и Китай (что, скорее всего, и произойдет), а собственные продукты нам необходимы.

Поэтому нужно формировать рынок. И пусть даже некоторые проекты не станут особенно успешными — этого не стоит бояться. Нельзя приготовить яичницу, не разбив яиц. У нас часто можно встретить несколько перевернутое мышление, которое можно описать фразой из Ильфа и Петрова: «Утром деньги — вечером стулья». То есть, венчурное инвестирование не развито. Но игры, как и любая медиапродукция подразумевают именно венчурность. Любой проект, будь то музыка, кино, игра — вложения с риском.

Насчет моего совета, стоит ли вам идти в геймдев? …не считаю себя вправе давать такие важные советы. Откуда мне знать, может, вы — будущий Сид Мейер?

Подскажите, пожалуйста, если возможно, модель ноутбука, который воспроизводил бы файлы "mp3" не хуже, чем flash player Sony NWZ-816A.

Кстати, это отнюдь не обывательское любопытствование, как может показаться многим читателям. Давайте переформулируем вопрос, чтобы было просто и понятно всем. Например, у вас есть один и тот же mp3-файл, но на ноутбуке он звучит хуже, чем на Sony NWZ-816A (а точнее на Sony NWZ-А816), а вы хотите, чтобы звучание в обоих случаях было одинаковым (как у плеера Sony).

В плеерах Sony, а я их на своем веку использовал много, всегда есть множество ключевых ноу-хау. Это касается внутренней начинки, то есть ЦАП’а (цифроаналогового преобразователя), встроенного DSP (цифрового сигнального процессора), который отвечает за такие вещи, как обработка звука на лету, эквалайзер и т.п. Также… наушники. У Sony всегда предусматривались некоторые моменты в конструкциях, которые оказывались важными. Итак, в рамках действий DSP в модели NWZ-А816 используется специальная технология стереоразделения ClearStereo плюс известная многим walkman’щикам технология ClearBass, плюс энхансер верхних частот — технология Digital Sound Enhancement Engine (сокращенно DSEE). Помимо этого, наушники специальной конструкции для обеспечения профессионального прослушивания — EX. Конструкция, между прочим, довольно хитрая, подобную я видел, если не ошибаюсь, только у нескольких немецких производителей.

Вариант с ноутбуком… Цифровой сигнал подается на фактически «голый» ЦАП, который в большинстве лэптопов является элементом встроенного кодека типа АС’97 (названия могут быть другими, но суть не меняется, главное в данном предложении словосочетание — «встроенный кодек»). DSP не используется, вернее, для звука его просто нет. Потом вы берете какие-нибудь дешевые стандартные наушники и получаете другое качество. Разница, конечно, будет.

То есть перед нами стоит задача заменить три функции-технологии Sony на нечто подобное из программ, а наушники вам, прежде всего, нужно искать дорогие.

Итак, варианты замены есть, а именно в виде коллекции плагинов для WinAmp и других медиаплееров — DFX (www.fxsound.com). Это достаточно мощная коллекция настроек, выведенная в едином интерфейсном окне, и как раз в ней можно найти, во-первых, специальное переключение между режимами прослушивания на наушниках и в колонках, во-вторых, StereoAmbience, в котором вы управляете глубиной стереоразбиения. Для басов имеется специальная регулировка Booming HyperBass. В качестве своеобразной замены DSEE на управление дается параметр Fidelity.

Тут стоит отметить один важный нюанс, все технологии по улучшению качества скомпрессированного аудио связаны с реставрацией гармонического наполнения в области высоких частот. Поэтому и DSEE, и Harmonic Fidelity Restoration из DFX фактически выполняют одно и то же.

Отсюда вердикт: подойдет любой ноутбук при условии использования плагинов DFX и правильной их настройки. А в целом могу отметить, что Sony всегда остается Sony, и это не стоит сбрасывать со счетов.

…с удовольствием читали Ваши материалы «Lua для игр и не только»… я хочу самостоятельно начать обучение информатике своего сына и выбрал Lua…

Не рекомендую. Lua, несмотря на всю свою простоту, является профессиональным языком программирования, причем с измененными взглядами на сам процесс. То есть начинать его осваивать лучше, когда уже имеется классический базис. Тут и специальные типы данных, и параллельное присваивание, и специальным образом реализованное приведение типов, варианты взаимодействия с внешним API... То есть лучше это понимать, когда за плечами есть некий базис в виде стандартных языков. В принципе, Lua во многом схож с С#, может, лучше попробовать его для начала? Причем C# легок в освоении.

Кристофер christopher@tut.by


Компьютерная газета. Статья была опубликована в номере 39 за 2009 год в рубрике программирование

©1997-2024 Компьютерная газета