Ответы пользователя по тегу Разработка игр
  • Дамп игры на c++?

    TrueBers
    @TrueBers
    Гуглю за еду
    Для получения методов игры дампить ничего не нужно, если только игра не запакована самомодифицируемым кодом.
    Нужен дизассемблер, отладчик, знание системного программирования и реверс-инжиниринга.

    На Юнити бывает как минимум два типа кода: il2cpp, когда генерируется код на C++, а потом компилируется в нативный код; второй тип -- managed .net код. Для каждого из них нужны свои инструменты и знания.

    Достаточно дизассемблера типа Ghidra, Ida Pro, radare2. Отладчика типа WinDbg, x64dbg или CheatEngine. Фреймворка динамической инструментации типа Frida. Для managed кода хорошо подойдёт .dotPeek или ILSpy в качестве декомпилятора.

    Ещё очень неплохо будет знать какой-нибудь низкоуровневый язык программирования типа Rust, Си, C++.

    Ну и ещё несколько тысяч часов опыта...
    Ответ написан
  • Можно ли создать приватный сервер игры?

    TrueBers
    @TrueBers
    Гуглю за еду
    1. Скачать игру.
    2. Провести реверс-инжиниринг.
    3. Формализовать сетевой протокол.
    4. Реализовать его на любимой технологии.
    5. Написать сервер.
    6. Играть.
    7. PROFIT!
    Ответ написан
    2 комментария
  • Математика для геймдева. Какие материалы посоветуете для изучения?

    TrueBers
    @TrueBers
    Гуглю за еду
    Это всё мифы и легенды, что для геймдева нужны невероятные знания математики и линейной алгебры. Только если не пишешь авиасимулятор, симуляцию гидроаэродинамики, частиц или что-то подобное.

    Для начала хватит простейших преобразований матриц и операций с векторами, кватернионами. Это покроет процентов 80, необходимых для изучения 3d графики.
    Возьми любой современный курс по графике, там обычно даются базовые материалы для необходимой теории.

    Тот же курс по OpenGL от Джоуи де Фриса learnopengl.com можно взять. Отличный курс. У него есть адаптации под различные языки программирования.
    На его основе ещё есть курсы по Vulkan и, возможно, DirectX.

    И от математической базы там зависит ну от силы процентов 5. Только если не собираешься прям исследованиями заниматься, пилить свои гениальные алгоритмы. 99% уже написано топовыми математиками, достаточно взять и использовать у себя в проекте, если позволяет лицензия. Не бездумно, конечно, базовое понимание работы алгоритма должно быть, само собой.

    Геймдев -- скорее про архитектуру ПО и паттерны проектирования, про взаимодействие, про оптимизацию, расположение данных в памяти, понимание, как эти данные по железу гоняются, как их эффективнее прочитать или записать. Математику красивых пост-процессингов за нас написали профессора из исследовательских центров NVidia, AMD, Intel, и т.п.
    Ответ написан
    Комментировать
  • Как делать спавн существ в javascript?

    TrueBers
    @TrueBers
    Гуглю за еду
    Комментировать
  • 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 комментария
  • Что определяет качество 3D картинки в играх?

    TrueBers
    @TrueBers
    Гуглю за еду
    Чем обусловлена такая разница?
    Баблом.
    Анрил пилят сотни инженеров за бабки. А огры — костылями студенты за чсвешчку. Вот и вся разница.

    OpenGL может выдать абсолютно то же самое, что и directx или вулкан. Потому что это все — API. А это в, свою очередь — просто соглашение, как нужно писать. У стандартов графических API нет понятия качества картинки. Качество зависит только от профессионализма разработчика, как инженера-математика, его фантазии отчасти, способностей нестандартно мыслить.

    Разработчики анрила многие имеют ученые звания в этой области, проводят исследования, выступают на конференциях с докладами, работали в нвидии, интеле и прочих корпорациях, которые изначально делают видеочипы, поэтому их экспертиза позволяет им творить такое.
    Открытые же движки никто не спонсирует, поэтому кандидаты наук туда не идут.
    Ответ написан
    Комментировать
  • Как запустить обработчик для UDP соединения?

    TrueBers
    @TrueBers
    Гуглю за еду
    Ну, так, а вы почитайте про разницу UDP и TCP и всё станет понятно.

    В UDP нет понятия подключения или потока байт. Там есть понятия датаграмм. Это атомарные сущности, которые принимаются точно так же, как и отсылаются, абсолютно в том же виде.

    Каналы в джаве созданы просто для унификации, для некого подобия псевдо-стримминга для удобной обработки. На самом же деле, никакого канала и потока нет. Есть отдельные датаграммы определённого размера, которые вы должны принимать.
    Каждый клиент идентифицируется по его паре адрес:порт, с которого пришли данные через функцию recvfrom. Других вариантов нет.

    Это, если нужна синхронная обработка. Для асинхронного варианта, как уже ответил dummyman, удобнее использовать Asio.
    Ответ написан
    Комментировать
  • Прыжки в Unity. Как сделать чтобы персонаж прыгал один раз?

    TrueBers
    @TrueBers
    Гуглю за еду
    State pattern
    Ответ написан
    Комментировать
  • С чего начать изучение Unity что бы создать 2д платформер?

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

    Самый простой вариант: в ютубе пишете "unity 2d". Выдаёт 350 тысяч результатов. Этого разве мало?
    Юнити сейчас самый распространённый фреймворк в мире, пожалуй. Столько материалов, как по юнити, нет ни по одному средству разработки, когда-либо созданному. И всё равно людям не хватает... да что ж вам надо тогда?
    Ответ написан
    2 комментария
  • Какую дорогу в GameDev лучше выбрать?

    TrueBers
    @TrueBers
    Гуглю за еду
    Да не слушай ты этот бред, который пишут: "То бросай, это бросай, вакансий нету, всё пропало!".
    Всё есть, если есть интерес.
    Учить не важно какой движок, они все используют одни и те же концепции, паттерны примерно одинаковые.

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

    А все эти анрилы и юнити только ключевыми словами, по сути, отличаются. Ну, и общий дизайн у них чуть более удобен в плане декомпозиции кода, грамотной архитектуры. Но, пока сам не дойдёшь до необходимости использовать эту декомпозицию, ничего особо не выиграешь, только запутаешься. При переходе достаточно будет ознакомиться с паттернами Gang of Four и всё станет ясно более-менее.

    ПС Знаю разработчиков Юнити, которые начинали геймдев с этого движка и в шоке от того, что кто-то программирует не мышкой. Азы оптимизации им просто недоступны, ибо они даже понятия не имеют о нижележащем уровне API. Они искренне удивляются, как это знать чистый OpenGL и писать всё самому, а разве так можно? Точно так же, кстати, удивляются многие кодеры на плюсах: "А зачем мне знать ассемблер? Я с ним не сталкиваюсь никогда..."

    ППС Вот ещё можно почитать чуть позже, самая крутая книга по геймдеву, которую я видел. Правда, она для тех, уже, кто нашёл в своих движках какие-то изъяны и ищет решения. Но и основы игрового цикла есть там, обработки ввода, множество примеров декомпозиции.

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