Вперше в Україні! Jeff Atwood, founder @ Stackoverflow — на конференції Highload fwdays
×Закрыть

Що повинен знати кожен Junior C++ який іде в gamedev?

Хочу вже нарешті реалізувати свою мрію і перейти в гейм, а не мати це як просто хобі (написання ігор). Повідсилала резюме в компанії. І тепер подумала, а що мені ще підучити, повторити щоб не впасти лицем в болото на співбесіді.

Тому що на вашу думку потрібно обовязково знати, вміти Junior C++ в gamedev?

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

В мене запитання: а якщо пройти інтернатуру(стажування) в компанії це рахується як комерційний досвід?

Якщо потому залишили працювати джуном. Якщо ні — то невдача.
Та й взагалі, комерційний досвід — то така досить умовна річ. Краще взяти толкову людину, що має власний некомерційний проект, аніж когось, хто на комерційному рік XML правив.
Ми колись взяли на сіньора людину без комерційного досвіду. Чув про такі випадки в інших конторах.

ок. а якщо фрілансом займатися і писати свої проекти? Я говорю саме про гейм дев.

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

Мені шота здається, що в геймдеві таки краще в офіс. Там же для того геймдева ніби треба багато різних компетенцій одночасно, і гейм і графічнй дизайн як мінімум крім девелопмента. Добре було б обєднатись з кимост хто б це таки робив.

графічнй дизайн

Не потрібен і я б радив триматися подалі, бо платять там фігово. Намалювати у пеінті медскіллзами тестову квадратну графіку — максимум що було.

Фсмислі триматись подалі. Я ж не пропоную дівчинці, яка вчила С++ займатись самій чимось не пристойним ака дизайном. Я пропоную їй йти туде де вже є готові дизайнери. Ну але то таке, думка людини до геймдева поки непричепної.

З одним проектом не відверто трешового рівня (навіть недоробленим, але іграбельним якось) і норм теорією маленькі студії повинні з руками відривати, як на мене. Не парьтесь, просто працюйте над рівнем.

я вам скажу по секрету маленькі компанії — а понти в них великі. Я в одну маленьку компанію робила тестове -міні гру. прийшла на співбесіду і тут виявляється що яка така дурепа що не знаю патерни деякі. і що взагалі мій код погано написаний, але обгрунтувати не змогли що в ньому поганого . я це послухала і сама сказала що нам з ними не подорозі. звичайно зауваження їхні відсно того що не знала(патерни деякі і графи)

А як ти їм пояснила, що твій код добре написаний?

так я і не обясняла. я їх запитала що в мому коді їм не сподобалося , вони не змогли відповісти.

На доу есть топик для code review

Быть джуном на фрилансе как-то нереально. Джуна обычно берут на перспективу, а фриланс — это здесь и сейчас

та я мала на увазі для комерційного досвіду фрілансити. а то щоб ви не говорили всі , майже всі компанії хочуть з комерційним досвідом джуна((

А если им написать что опыта нет, но хочу — отказывают?

В Юнити запросто. Заходите в комьюнити, там набирают рабов что-бы сделали за пару месяцев проект бесплатно. Откат — запись в портфолио. Иногда предлагают дележ прибыли но на счёт развода я не в курсе. Посмотрите на Кокосе есть ли такое. Под себя в общем. Про Юнити это пример. Это очень простой путь для новичка, и довольно быстрый, другое дело что может не повезти с напарниками индусами и получиться так что проект лучше в портфолио не записывать. Судя по встречающимся вопросам индусов по геймдвижку я как-то часто горю желанием отправить их учиться основам програмирования вообще. Хотя есть разные конечно. Еще есть геймджамы. Еще недавно слушая курс по юнити получил предложение что если человек освоил курс то может попробовать поработать с дядьками которые фрилансят игры на продажу в сторе, курс немного не новичковый, придётся попотеть, но все же, это в принципе хороший шанс у человека засветиться в титрах проекта если ему надо, плюс работая с дядьками у которых в портфолио игры ААА уровня выше шанс засветиться в хорошем проекте, а это плюс в карму для портфолио. Это конечно же не халява, им тоже есть смысл. Может под ваши знания где-то есть еще подобные варианты.

Если свои проекты это огромная куча работы. Сам по себе гемдев это много работы, но соло гемдев это еще больше скорее всего так как имею частичный опыт, сугубо фриласнерский. Но:
1. На Джинне если в резюме есть ссылки на свои проекты в соцстеях или сторе то предложений больше.
2. Игра как продукт должна нравиться, тут отличие от тех продуктов которые нужны для чего-то. И придётся много внимания уделить тому что называют геймплеем что в принципе в дальнейшем на собеседовании не поможет и хороший фрилансер будет смотреться хуже середнячка работавшего по фирмам.
В целом имею много что сказать, но не знаю надо ли. В целом по опыту первое и основное это высокий обьем работ, по сравнению с тем же фрилансом не в геймдев. Второе и основное из-за этого обьема то, что надо максимально концентрироваться на описании логики игры перекладывая на геймдвижок максимум, иначе проект может стать бесконечным. Высокая конкуренция. Даже если фортуна подлетит и даст нечто новое в голову и получиться быстро и просто реализовать, то могут быстро клонировать. В целом сейчас в гемплее в играх наблюдается застой, нового мало появляется, так что клонировать будут «со скоростью света». Офис имхо лучше.

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

Способность к регенерации)

Не надо, кровь всегда должна быть свежей ))

dou.ua/...​rums/topic/23257/#1292847

Ой, давайте без перетаскивания грелок из соседних топиков. Геймдев это вам не игрушки ))))

Серас проходила через геймдев?

14я школа милиции и та по блату

www.youtube.com/...​/UC4omkhNHsYLagT1o6hnmKQw
Автор каналу часто веде стріми, він займається gamedev, core development. В нього можна багато чого для Вас як для Junior дізнатись.

или вот еще по ходу дела- такая постановка вопроса обламать морально человека. я там работал в учебном заведении в каб.инф. у меня в группе были девушки. того я и пошел читать инф- ку. а на собеседовании подруга мол обламывает меня с видом авторитетным, что она мол- практик- вы работали преподавателем? в плане — я лох дилетант. у меня одни отличницы были между прочим. а другой потом в конце собеседования- вам надо больше кода писать! а у меня если собрать все файлы программ с++ — текстовый вид- будет 4 гига размер. вот просто текст моих программ- проекты, только cpp и h файлы 4- 5 гига за все время что я знаю с++. ну вот этот принцип очень распространен что тебя пытаются убить морально на собеседовании. 4- 5 гига кода в текстовом виде. без exe, без obj и тп. ну это не новость ни для кого что я хотел сказать.

я років 3 тому аплаялася в одну компанію і мені відмовилии через те що я не відповіла який в них основний продукт(якраз в гейм компанія) айчарові. Або це була основна з причин, так як після того як я не відповіла тех. співбесіда відбулася для галочки. і це було помітно.
І да чим більше я спілкуюся з айчарами, тим більше переконуюся що вони дозволяють собі не дати відповідь в обіцяний час, поки їм про себе не нагадаєш. і то вони так відповідають не наче я їх конкурент і планую їхнє місце забрати). І в них багато понтів, дівчата якщо ви читаєте- фуууу такими бути....

Кому — фу, а кому — робота

Это скорее всего политика компании а не конкретного ейчара. Они ведь как ни как все-таки продуктовые. Я вот как-то раз пообщался с варгеймингом.. я уже писал кажется.. ну там вобщем реально люди настроены на «работать в нашей команде большая честь»

робота ставитися до своєї роботи похабно? Ставитися до людей які чекають результату співбесіди як до другого сорту це їхня робота?!!!

Так, то є професійною навичкою, без якої вони не пройдуть випробувальний термін на своїй посаді серед більш досвідчених колег.

все дякую , ви мені відкрили очі. Буду знати що то вони не зізла так роблять , а так потребує система.

Гугліть контору перед співбесідою, усім корисно. Вам ніхто нічого не винен. Я нікого не виправдовую і не звинувачую, якщо шо.

Та ні не вині, але я знайшла свій час, сходила на співбесіду, а якщо їм 2 хв щоб написати що я не підходжу чи підходжу важко, то да Ви праві, що це я тут розкудкудакалася і заділа почуття айчарів. Більш так не буду )) чесно чесно. Насправді є багато адекватних айчарів. але і є яким так і хочеться корону зняти(але я ж леді , і дівчата не бються)

Де є багато «адекватних»?

Пару раз мені з Люксофта писали і навіть після того як я починала розпитувати більш детально відповідали . але були з того самого Люксофта які таке враження просто відсилали лист шаблон і коли я більше детально розпитували просто ігнорували. З недавніх я подавалася в Юбісоф на інтерна але з часом провтикала і мені адекватно все розповіли коли буде наступного разу проходити, з такими приємно спілкуватися. Років три назад з Іпамом мала справу, також все адекватно і адекватний фідбек.

Так, вам не треба зараз чіпати почуття HR. Вам не буде від того нічого гарного. Більш того, не треш контори мають і технічну планку вище, що вам не вигідно. Вам нема різниці між «нема відповіді», та «ні», просто продовжуйте шукати, доки не скажуть «так». І не бійтесь, що вони не будуть в курсі, те що ви кажете їм тут вже сказали безліч разів. І там ще причини такої поведінки не тільки через низькі моральні якості HR.

а та я не переймаюся відносно цього, я просто для слова сказала про айчарів і понеслося. В ж добре розумію що якщо я їм підійшла б то вони мені відповіли

Так, вам не треба зараз чіпати почуття HR. Вам не буде від того нічого гарного. Більш того, не треш контори мають і технічну планку вище, що вам не вигідно.

Ребята, не стоит вскрывать эту тему. Вы молодые, шутливые, вам все легко. Это не то.

Ви просто стрьомні, вибачте.

вот просто текст моих программ- проекты, только cpp и h файлы 4- 5 гига за все время что я знаю с++.

ага, да

Our democracy has been hacked, patched, and moved to Trash, then deleted all the log files after. Mr.Black4. не хочу сильно распространятся, щас такой поток грязи может начатся- вобщим раз на собеседовании я хотел сказать- меня не интересует карьерный рост, а сказал по ошибке — не интересует професиональный рост (волновался немного). ну и меня кинули. так немного знаком с офисной жизнью 90- х — там такого небыло. а тут заходишь в офис- Милый, ты опять мне изменил! Нет, это все проделки завистливых конкурентов папы по бизнесу! Я это знала милый, спасибо. И тебе спасибо милая. реально итальянские сериалы. :-) я еще забыл сказать- спрашивал площадь круга. :-)

это же мидовая вакансия?

от от. Думала що я одна так подумала що то як мінімум ваканція на мідла

ну... насправді в джунів все одно те все питати будуть. просто може візьмуть, навіть якщо не на все повідповідаєш.

Раз в год в Юбисофт есть интернатура к которой можно подготовиться) jobs.dou.ua/...​/ubisoft/vacancies/50862

так, я знаю про це. Але вони починають набір в жовтрні-лютому, а співбесіди в грудні. Тому це ще рік потрібно чекати. Але дякую за силку.

надо знать software rendering — то есть изнутри как устроено — есть трехмерная модель или 3Д сцена, есть матрицы, прочие преобразования (их минимум необходимый)- как вывести это все на плоский двухмерный экран монитора — rendering pipeline описать- программируемый и старый фиксированный, те. фундамент — с чего это все начиналось 25 лет назад во времена Quike1. еще нюансы спрашивают- например нарисуйте и объясните формулу отражения от поверхности, было бы хорошо объяснить математику теней, освещения и тп. плюс STL спрашивают- что map это красно- черное дерево, list это двухсвязанный список, vector это динамический массив и тп. например меня спрашивали- если в list добавить в средину и в конец один элемент- что быстрее? матрицы, векторы- умножение. есть книга на англ.языке Beginning Math and Physics for Game Programmers By Wendy Stahler. спрашивают С++ все ньюансы- что такое explicit, volatile, mutable, виртуальные функции очень интересуют на собеседовании, и конструктор копирования зачем почему. еще меня спросили про o(n) — построено на том какой код (например С++) больше или меньше занимает инструкций процессора. это общие темы на любом собеседовании по 3D графике. один раз спросили алгоритм пузырьковой сортировки и вобще алгоритмы сортировки. раз попросили нарисовать функцию- подсчитать количество единиц в байте- нужен логическое умножение и сдвиг. рекурсивные функции. такого плана вопросы. надо быть готовым и набросать на листке код, и прочитать код с листка (предлагают объяснить алгоритм), и устно по теории 3D математики и С++, там еще boost, lua- но главное STL. я все секреты поздавал.

старый фиксированный

Я б не радив його і ігроконтори, де він критичний. Пару загальних слів сказати.

нарисуйте и объясните формулу отражения от поверхности, было бы хорошо объяснить математику теней, освещения

Неосяжні теми. Дуже вузьку типову базу тільки треба джуну, хіба що.

STL спрашивают- что map это красно- черное дерево

Implementation defined. І якщо ви залупитися на тему, що це конкретно rb tree, то може бути купа зайвих запитань.

o(n) — построено на том какой код (например С++) больше или меньше занимает инструкций процессора

Не кажіть так.

подсчитать количество единиц в байте- нужен логическое умножение и сдвиг

Нет.
unsigned int result; for (result = 0; value; result++) { value &= value - 1 };
Но вопрос дурной

надо знать software rendering

Как оно там в 1990?

А чего не так?

int pop_count(uint64_t x)
{
    static const uint64_t k1 = 0x5555555555555555ull;
    static const uint64_t k2 = 0x3333333333333333ull;
    static const uint64_t k4 = 0x0f0f0f0f0f0f0f0full;
    static const uint64_t kf = 0x0101010101010101ull;
 
    x = x - ((x >> 1)  & k1);
    x = (x & k2) + ((x >> 2)  & k2);
    x = (x + (x >> 4)) & k4;
    x = (x * kf) >> 56;
    return (int) x;
}

В целом знание бит иногда помогает... Например, те же сочетания перебирать...

Знать то, что на сях игоры не делают. Есть более другие инструменты

я вас розстрою — роблять, сама писала на С++ в кокосі міні ігру

ви це мені адресували? та ні, не жарт. Писала на С++

А вам порадив би наступне: підівчити векторну алгебру, алгоритми пошуку шляху, генерації ландшафту і т.д., графіку (opengl, процес рендерингу), не завадить розібратися у якомусь 3D рушії (ue4, cryengine, etc.)

3D рушії

Перевод с русского подкачал наверное. Хотя, слово «движок» и на украинском так же пишется. Рушiй — це mover.
А вообще, Engine — это ближе к «двигун».

До чого тут російська і де ви чули в українській мові «движок»? :)
slovopedia.org.ua/41/53408/272733.html

Первые ссылки из гугла: sum.in.ua/s/dvyzhok xn—r1a3b.xn—b1amgblet.xn—j1amh/index.php?title=%D0%91%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80

Іван лежав біля куреня, заклавши руки під голову, і слухав, як гуде движок на заставі (Олесь Гончар).
Основою будь-якого сучасного браузера є движок — програма для перетворення коду веб-сторінок у звичне всім інтерактивне відображення цих сторінок. Основними движками є..

Русский при том, что видимо с него пытались перевости слово «движок» (возможно, чтобы при этом оно не звучало по-русски). Так же, если бы переводили из оригинального «Engine», то получился бы «двигун». А вообще, «движок» — лучше всего использовать в данном случае.

Аналогічно: uk.wikipedia.org/wiki/Браузерний_рушій
uk.wikipedia.org/wiki/Програмний_рушій
Щодо перекладу «engine»: це слово, на відміну від українського «двигун», використовується ще як «something that provides power, often economic power, for other things», тому, imho, цілком доцільно його перекласти як «рушій»

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

«something that provides power, often economic power, for other things»

Лучше берите цитату из конкретно Game engine: «A game engine is a software framework designed for the creation and development of video games. ».

Спасибо, что привели ссылки на страницы на википедии, содержащие ошибки пеервода.
Наши агенты обязательно эти ошибки исправят, и подкрепят свои исправления отсылками к достойным цитировнаия источника.

На сях не делают. На плюсах делают.

Добрий день Ростислав. Ви як людина яка точно має відношення до гейм компанії — що можете порадити підучити або що потрібно точно знати?

Насправді в геймдеві є багато спеціалізацій програмістів, але якщо говорити про людину, яка безпосередньо реалізовує ігрові механіки, то з обов’язкового:
1) Хороша алгоритмічна підготовка
2) Управління пам’яттю (smart pointers, RAII), в ідеалі вміти самому реалізувати, наприклад, поведінку shared_ptr.
3) STL (контейнери, ітератори, алгоритми, etc..)
4) Мати pet-project або хоча б досвід створення моду під одну з існуючих ігор.

1) це не зовсім зрозуміла
2) розумні вказівники? auto_ptr, unique_ptr, shared_ptr, weak_ptr
3) вектор, список, хеш таблиця, стек, куча, черга, мапа, сет
4) маю пару проектів (примітивні ігри).

Мене ще цікавить. потрібно добре знати патерни та багатопоточність?

1) Вміти оцінити обчислювальну складність алгоритму, володіти класичними алгоритмами: сортування, пошук, комбінаторика, динамічне програмування. Працювати з масивами, списками, графами, деревами.
2) так.
3) так
4) гуд.
Знання шаблонів проектування та багатопоточності, як на мене, не є обов’язковою вимогою для junior’a.

по чем в Одессе рубиройд

Я мала на увазі що саме. Зрозуміло що С++(STL, багатопоточність, патерни), математику(матриці, вектори). Але я ж не працювала в геймі тому і цікаво що ще потрібно + коли я аплаялася на роботу на галеру мені ніяких задачок не давали на співбесіді , тому цікаво тут задають чи ні.

С++(STL, багатопоточність, патерни), математику(матриці, вектори).

Це вже непогана заявка. Я б ще радив графоній трохи (OpenGL). І свої проекти демонструвати непогано б. Ще може з якимось Box2D/Nape погратись щоб може хфізичне двигло помацати. Ну і кватерніони можна для понтів глянути.
І взагалі — напишіть в Геймлофт, там дадуть тест і ви будете знати чого не знаєте (і гарна контора для початківців).
PS: а відмінність pointer та reference знаєте? Про ключове слово virtual багато можете розповісти?

чисто віртуальна функція, віртуальна функція

а віртуальне наслідування?

Это для того, чтобы в твоем коде никто не мог разобраться и тебя не уволили.

К сожалению, одно от другого не зависит(

ну так это же элемент религии.

Ну це звичайно з циклу питань про віртуальний поліморфізм і щонайменше треба знати, що таке вірт. метод та коли використовується. І там таки багатецько можна розповісти.

А мені навіщо? Я не хочу джуном у геймдев.) Олсо, нема про pure virtual та що в конструкторі (pure virtual function call).

В Геймлофте 8 лет назад тестовое задание состояло в том, чтобы написать микроигрульку на Irrlicht (ассеты прилагали).

Я думаю что также стоит обратить внимание на ogre3d и ue4

Впрочем я не на джуна аплаялся

i.imgur.com/3hHWxWP.png

видимо ответа на этот вопрос не знает даже администрация доу

Подписаться на комментарии