All streams
Search
Write a publication
Pull to refresh
2
0
Илья Гинзбург @Ector

Programmer (С#, Delphi); Game Designer (CCG, TBS)

Send message
Вы не поверите, но когда я последний раз ходил на собеседование, меня попросили перечислить алгоритмы сортировки, которые я знаю. Просто перечислить. Я назвал с ходу шесть алгоритмов и сказал, что могу принести второй том Кнута :)
Разумеется, я не гарантирую, что код, который я напишу на бумажке, сразу будет без ошибок. Но уж алгоритмы сортировок-то я знаю. Как я уже говорил, неважно, если будут мелкие ошибки — важно, чтобы кандидат понимал суть алгоритма. Давным-давно, когда я был студентом, меня интересовали и доказательства правильности этих алгоритмов…
Я не собираюсь продолжать холивар на тему «что важнее демонстрировать на собеседовании — знание библиотек или алгоритмов». И то, и другое нужно. Но я считаю, что кандидат, плохо знающий библиотеку, обычно нагуглит недостающую информацию за пять минут, а вот кандидат, плохо знающий алгоритмы, завязнет в них надолго. И от него едва ли можно ожидать, например, выбора именно того алгоритма, который лучше всего подходит для вашей задачи.
Мы не ищем человека, который нам будет сортировки писать. Но грамотный программист обязан знать, что делает сортировка, и сложность ее алгоритма — O(n*lg(n)). Никто не помнит все алгоритмы, но уж сортировка — это святое.
И, вы не поверите, но пару раз за мою более чем 20-летнюю карьеру мне все-таки пришлось писать сортировку самому.
Моё начальство (не до конца понимающее, что делает моя система) считает это «калькулятором» :) Пользователи тоже так считают — они же не знают, как он устроен внутри. Простите, если ввел вас в заблуждение.
Мне показалось, что замысел теста был в том, чтобы проверить, как кандидат САМ, без библиотек, напишет калькулятор. В этом есть немалый смысл: надо не только знать библиотеки, но и понимать, как они работают. Мы не раз требовали от кандидатов написать сортировку, и далеко не каждый с этим справился. Не вижу тут никакого «опускания». Если человек ошибся пару раз на единичку, это не страшно, а вот если он вообще не знает алгоритма — очень плохо.
Увы, нельзя было. Моя задача — это экспертная система, часть большой PDM/PLM системы. Типичное выражение, которое я должен считать, примерно такое:
Операция.Код? { 24424455, 24242566, 24244567 }
При этом я должен найти атрибут Код от объекта типа «операция» (даже если текущий объект не операция — при этом работают мои правила поиска объектов), а потом сравнить его с одним из кодов из множества. И функции у меня тоже специфические. Но runtime compile мы используем тоже, правда для других задач. А «изобретать велосипеды» — это как раз то, что у меня получается лучше всего :) Хотя я и не спорю, что знать матчасть тоже нужно.
Я видел, впечатляет! Но мне функционала DataTable.Compute хватить не могло: у меня при расчете значения выражения надо еще искать значения параметров с помощью обратного логического вывода (это экспертная система), да и функции тоже были специфические. А еще нужна работа с множествами.
ИМХО, тут должно тестироваться не знание библиотеки, а понимание принципов обработки математических выражений. Хотя знать библиотеку тоже очень полезно: я вот не додумался до Compute…
Привет всем. Я разработчик С#, которому пришлось писать настоящий калькулятор. То есть, со скобками, приоритетами операций и даже с функциями. Правда, задача, чтобы это все работало из чистой строки, не стояла (у меня свой редактор формул), но это была работа точно не на полтора часа.
Я так и не понял, в чем был смысл «теста». Проверить, умеет ли кандидат пользоваться регулярными выражениями? Так и без них там можно справиться. Я бы скорее проверил результат на устойчивость к ошибкам, которая и отличает серьезный код от студенческого, но это уже придирки.
Для серьезного теста надо было разрешить более двух аргументов. Смысл в том, что для правильного вычисления выражений 2+3*4 без приоритетов операций уже не обойтись. Даже если кандидат и не уложится в полтора часа, важно, чтобы он шел по правильному пути.
Решающими идеями были две: введение модулей и вариабельный размер колоды (от 25 до 40 карт). Все это повысило вариабельность конкурентоспособных колод на два порядка. Идея модулей уже была в Infinity Wars (правда, там роль «модулей» играли существа) и даже в Magic, а вот идеи «сколько карт в колоде — столько и HP у игрока» я пока нигде больше не видел. Отличное новшество: хочешь стабильную колоду — соглашайся на меньшее количество жизни. Аггро будет играть 25 карт, а контроль (когда он появится) сможет начинать с 40 жизнями.
Правда, реализация обеих идей не обошлась без проколов :( Все модули (возможно, кроме легендарных) надо было давать бесплатно с самого начала игры, иначе новички ощущают собственную неполноценность, поскольку им приходится играть без модулей против оппонентов с модулями. И совсем не нужно было давать лишнюю карту в начале игры тому, у кого меньше колода. Он и так получает преимущество за счет более частого прихода ценных карт! Но это не так уж важно, главное — по разнообразию колод игра намного обошла HS, а сделать клон хоть в чем-то лучше оригинала — это и есть залог успеха.
Простите, а это не вы, случайно, ее дизайнер? Давно хотел пообщаться с автором этого шедевра… хотя бы в глаза ему посмотреть!
Не согласен практически со всем сказанным. Откуда вы знаете, что у них онлайн ниже? Я практически всегда нахожу противника — боты иногда попадаются, но не очень часто. Они сильно уронили retention из-за повышенной (по сравнению с HS) сложности освоения и медленной прогрессии для бесплатных игроков — надо было давать игрокам все расы и модули сразу, а они пожадничали.
Но дело не в том, что они «успели раньше других». Практически одновременно с ними вышли Shadowverse и The Elder Scrolls: Legends (последняя от самой Bethesda, да еще и по миру Elder Scrolls). Они просто сделали хорошую игру, которая завоевала свою нишу, и у них было достаточно хороших идей (могу расписать их подробно, если интересует).
Учитываю. Но хорошая ККИ всегда победит плохую, несмотря ни на какой демпинг, рекламу и все прочее. Видели Star Crusade? Игра имеет нулевую рекламу, очень мало акций (просто выпускают новые сеты карт), а количество игроков растет, и денег тоже. Потому что игру делали люди, очень неплохо понимающие в ККИ (правда, один крупный косяк они все-таки допустили, но не суть).
А если игра начинает зарабатывать приличные деньги — то уже есть на что устроить рекламную кампанию и заработать огромные :) Но не нужно думать, что реклама и маркетинг решают всё! Hearthstone прогремел в первую очередь благодаря революционным механикам и концепциям, а не имиджу конторы. В конце концов, WoT: Generals тоже не Вася Пупкин на коленке делал… а толку?
Привет, друзья, я тоже из Минска, и тоже постоянно придумываю ККИ :) Вот только я больше гейм-дизайнер, опыта в программировании игр пока нет (а вообще в программировании — огромный).
Деньги в ККИ были и будут всегда, причем очень большие, благодаря системе монетизации, намного превосходящей все механизмы в других жанрах — продаже бустеров со случайными картами. Вот только этот жанр требует гейм-дизайнеров высочайшего класса, которые должны отлично разбираться в ККИ, иначе получится очередной WoT:Generals. Я считаю, что именно этот жанр предоставляет наилучшие шансы для инди-разработчиков, поскольку требует меньше всего денег и больше всего хороших идей. Единственным препятстствием остается графика карт, которая просто обязана быть красивой.
В ближайшем будущем я напишу статью о принципах создания ККИ и выложу ее на Хабр. Надеюсь на вашу поддержку, ведь я тут новичок, и еще не набрал карму…

Information

Rating
Does not participate
Location
Беларусь
Date of birth
Registered
Activity