• Как начать разрабатывать игры или написать свой игровой движок?

    @Interface
    Как начать разрабатывать игры или написать свой игровой движок?

    Создайте папку в любом удобном для вас месте на компьютере с названием "мой игровой" движок, по желанию можно еще туда положить readme файлик. Готово - вы начали писать движок. Теперь нужно двигаться к его завершению. По мере движения у вас появится множество новых более конкретных вопросов, на которые уже проще будет найти конкретный ответ.

    Несложно представить игровой движок для написания которого не нужно знать физику абсолютно. (движок для крестиков-ноликов, кроссвордов, судоку, текстовых квестов или уже серьезный движок для игр в стиле Diablo, Fallout (1-2-T) и т.д.).

    Сложнее представить движок без математики, как в прочем и все программирование. Однако, часто бывает достаточно классов 5-8 математики чтобы писать что-то вполне серьезное, если оно не требует этой математики. Простенький платформер или скролл шутер не потребует от вас знания тригонометрии, например.

    Довольно ожидаемо, что если под своим движком вы подразумеваете продукт уровня UE, Unity или чего-то отдаленно сопоставимого, или даже простейший 3д движок написанный с нуля, то остается пожелать вам удачи.

    Я бы советовал начать с практики, то есть начать его постепенно писать, понимая, что через месяц/год все придется выкинуть и (опционально) начать с нуля. А там уже сформируются конкретные вопросы и теория будет ложиться лучше на фундамент проб и ошибок.
    Ответ написан
    Комментировать
  • Может ли новичок программирование начать с с++/Gamedev?

    vabka
    @vabka
    Токсичный шарпист
    Ответ на вопрос из заголовка - смотри требования в вакансиях на gamedev C++ и оценивай свои силы, сколько времени тебе понадобится, чтобы эти требования выполнить.

    Если говорить про разработку собственной игры или движка:
    https://qna.habr.com/q/1285166
    Опять же попробуй декомпозировать задачу по разработке конкретной игры с конкретными механиками / визуалом / сюжетом и оцени сколько тебе времени понадобится, чтобы освоить все инструменты и разработать.
    И сколько денег, если ты захочешь привлечь людей со стороны.
    И сколько времени, чтобы заработать эти деньги
    И какие навыки нужны для заработка этих денег
    И сколько времени понадобится на получение этих навыков
    И сколько денег нужно, чтобы не умереть с голоду во время получения этих навыков и разработки игры.

    я видел на форумах писали что Gamedev на плюсах это ели на хлеб наскребсти.

    Геймдев на любом языке такой, тк деньги компенсируются "интересностью".
    Если хочется денег - идти надо в enterprise.


    Есть еще один вариант не трогать сейчас программирования и погрузиться в школьную учебу и повторить весь школьный материал чтоб сдать экзамены и поступить в хороший колледж/университет,

    Хороший вариант.

    я не хочу чтоб моя жизнь была проведена на заводе до старости и люди меня считали глупым мне хочется поступить в МФТИ или в какие то престижные колледжы/университеты чтоб уж точно не пропасть в жизни

    1. То что ты с пятого класса учишься на одни тройки не делает тебя автоматически глупым.
    2. Учёба в хорошем вузе не защищает тебя от работы на заводе до старости и не гарантирует тебе, что ты достигнешь какого-либо успеха в жизни.
    3. Чтобы поступить на бюджет в МФТИ или аналогичного уровня университет не достаточно хорошо учиться и получить много баллов на ЕГЭ.
    4. Одним из признаков глупого человека является неумение грамотно и лаконично выражать свои мысли.
    Ответ написан
  • Opengl 4.* или vulkan?

    TrueBers
    @TrueBers
    Гуглю за еду
    Это вообще разные вещи.
    Нужно отличать изучение API, от изучения технологии. Если вы хотите выучить просто API, учите что угодно, ибо разницу заметите только, когда поймёте основы, базу.

    OpenGL проектировался когда были другие архитектуры железа. Мультипроцессорность была только в теории, и считалась уделом суперкомпьютеров и ненужной для пользовательских ПК.
    Можно привести аналогию: OpenGL == C++, Vulkan == асинхронный Assembler + hardware threads. Например, в C++ сейчас довольно много архитектурных косяков, которые пытаются решить новыми стандартами, объявляют какие вещи устаревшими, потому что они концептуально неверны и не подходят под современные реалии.
    Но, при этом, вы можете всё то же самое написать на ассемблере, но нужно намного лучше понимать, как работает процессор и ОС, самому писать примитивы синхронизации, и т. п.

    Для этих же целей и создавался вулкан. Для программирования на нём, нужно знать все тонкости железки, читать кучи пейперов от той же НВидии, исследовать, придумывать новые фичи для современных архитектур с нуля, которые изначально были придуманы в OpenGL, но для старого железа.
    Т. е. на Вулкане нужно делать больше руками, больше оптимизировать. Вместо одного вызова функции OpenGL, на вулкане придётся несколько сотен строк написать. При этом, если вы не понимаете какой-то одной тонкости, вы сделаете менее эффективнее то, что изначально было хорошо реализовано в OpenGL. К тому же, OpenGL умеет выбрасывать ошибки, в случае, когда вы где-то накосячили. Вулкан же их не выбрасывает, он полагается на то, что вы уже знаете как этим пользоваться. Точно так же, как ассемблер просто меняет состояние регистров, у него нет понятия ошибки. Как интерпретировать эти регистры, зависит от того, насколько хорошо разработчик читал мануал к процессору.

    В итоге, я бы ответил так:

    Если вы будете заниматься графикой как наукой, дико задротить а-ля Кармак в студенчестве с его движками, что-то исследовать, писать какие-то гениальные алгоритмы, защищать на этом диссертации, публиковать их, рассказывать потом на конференции, как вы круто справились с какой-то насущной задачей, повысили производительность, то тогда учите Vulkan. Vulkan — это именно про графику как технологию, про производительность, про инжиниринг и архитектурный дизайн, а не про API и само программирование. С вулканом придётся больше сидеть с диаграммами, документациями и строить архитектуру, придумывать методы взаимодействия частей этой архитектуры, синхронизации состояний, нежели писать код.

    Если же вы пишете простые прикладные вещи, которым нужно показать какую-то графику, то учите OpenGL. Здесь вы учите только API, соглашаясь с уже готовым, слегка устаревшим, архитектурным дизайном.

    Если хотите писать игры не мирового класса, то учите готовые движки, Unity или Unreal. Они уже поддерживают за вас Vulkan, продумали за вас API и архитектуру.
    Ответ написан
    2 комментария