Ответы пользователя по тегу Разработка игр
  • Возможно ли реализовать одноранговый мультиплеер с защитой от жульничества?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    В общем случае это реплеи матчей от лица каждого, обмен которыми происходит автоматически в конце. Если игрок сомневается в честности другого, то он может просто посмотреть его реплей и убедиться, что не было магии, а были просто удачные решения и обычная ловкость рук. В случае же нарушения можно пожаловаться, - и блокируется весь аккаунт вместе со всеми достижениями, включая выигранный матч. Но только постфактум.

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

    Если вы настаиваете на защите в реальном времени, то ответ - невозможно. Можно лишь частично подключить "защиту от дурака", но не гарантировать защиту от любых читеров.
    Ответ написан
    Комментировать
  • Как написать подсчет времени проведенного в игре для лаунчера?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Просто следишь, что такой-то процесс всё ещё запущен и находится в памяти.
    В Стиме сделано так, что эта инфа периодически отсылается на сервер, и там уже происходит подсчет времени.
    Ответ написан
    Комментировать
  • Что нужно знать для создания платформера или изометрической бродилки?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Минимально необходимые знания не ограничены программированием, увы и ах. Художников, геймдизайнеров и т.д. никто не отменял.
    Ответ написан
    Комментировать
  • Где писать игру в жанре квест под Андроид?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Прежде, чем писать игру, нужно на высоком уровне выучить хотя бы один из популярных языков мира. Например, русский или английский. Где? Это делается в школе или на курсах, хотя у некоторых есть воля для самостоятельного изучения по учебникам.

    Ведь в одиночку ты вряд ли сделаешь игру. Тебе понадобятся другие люди в том или ином виде. А второй этап разработки предполагает написание концепта, чтобы кому-то показать. И я уж молчу про последующие этапы, где понадобится с кем-то переписываться или иметь дело с документацией. Без владения популярным языком мира ты будешь выглядеть необразованным школьником в глазах потенциальных коллег, поэтому с тобой мало кто захочет иметь дело.
    Ответ написан
    Комментировать
  • Как определиться с путём развития в GameDev на Unity?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Игра - это не просто комбинация механик.
    Это искусство.
    Вот вы умеете рисовать, например? А в анимацию? А игра - это более сложное искусство, совмещающее в себе и нарратив, и геймплей, и музыку, и всё остальное, чтобы это всё красиво сочеталось и переплеталось, и вызывало особые эмоции у игрока.

    Поэтому для начала определитесь с целью. Если это - просто хобби с целью практиковать программирование, то идите путём написания пятнашек и тетрисов для начала. Если же цель - реально заработать денег, то откажитесь от разработки игры в одиночку, изучите экосистему геймдева, этапы разработки, т.е. основы основ. Выберите себе конкретную роль (например, программист или геймдизайнер) и скооперируйтесь с другими людьми в каком-то проекте. Если хотите быть продюсером, то также откажитесь и от программирования, занимайтесь менеджментом, наберите команду, считайте деньги (бюджет, расходы, общение с инвестором и т.п.). Время обычно считает ПМ. В маленькой команде можно и совмещать роли, но это отдельная история. Классическая микро-команда для создания прототипа - это художник, программист и геймдизайнер. И если вам кажется, что вы со всем сможете справиться в одиночку, то это вряд ли; прецеденты есть, но они очень редкие; на 1 известную вам успешную инди-игру приходится 1000 неудачных инди-игр, о которых вы даже не слышали, плюс ещё больше игр, которые просто не дошли до публикации.
    Ответ написан
  • Как правильно реализовать подбор игроков для мультиплеера?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Думаю, здесь нужно гуглить что-то типа: matchmaking algorithm
    К слову, надеюсь, английский вы знаете неплохо.

    Советую разделять:
    1. Логику подбора игроков
    2. Конкретный алгоритм (оптимизация этой логики)
    3. Реализацию на конкретных ЯП и БД

    Это всё разные вопросы. И их следует адресовать разным экспертам, а не 3 в 1. Эксперт по ЯП может не уметь в геймдизайн и наоборот.

    Что касается первого (логики подбора), то самым тонким моментом является определение "слабого" и "сильного" игрока, и по какой шкале измеряется их сила. Это имеет отношение скорее к геймдизайну, где цель - сделать игру интересной. Следующие пункты относятся уже к другому - к быстродействию (не путать с временем ожидания игрока при поиске группы), дешевизне решения, борьбе с читерами и т.д.
    Ответ написан
    Комментировать
  • Как определить что игре не хватает оперативной памяти?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Надёжный способ понять, что причина именно в нехватке памяти - услышать, как шуршит жёсткий диск во время фризов (если файл подкачки не на SSD).
    Ответ написан
    Комментировать
  • Как запретить игрокам общаться по дискорду?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Вариант 1: запрет и модерация. То есть как только появляются доказательства кооперации вне игры - наказание. Игрокам дать возможность жаловаться на других игроков. Также можно прикрутить систему, в которой жалобы будут учитываться полуавтоматически. Пример, где так сделано: Project Winter

    Вариант 2: запретить игрокам собираться вместе на уровне матчмейкинга. То есть нельзя пригласить друга, вместо этого тебе дадут случайного игрока. Плюс (по желанию) убрать чат и голос, чтобы нельзя было обменяться контактами, но случайные люди и так вряд ли будут звать в дискорд. Пример, где так сделано: Journey (2012)

    К слову, любую систему можно обойти, так что расслабиться не удастся. Но можно в какой-то момент закрыть глаза на нарушения, когда их процент станет крайне низкий.
    Ответ написан
    2 комментария
  • Как попасть в популярные новинки[Steam]?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Точно знает только Гейб, и в новому году его настроение могло поменяться, так что он мог что-то там подкрутить.

    А так лучше копить вишлисты на этапе "скоро выйдет", а затем резко выпустить игру, чтобы её купило сразу много людей в маленький промежуток времени.
    Ответ написан
    Комментировать
  • Тестировщик. С чего начать?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Это сложный путь в gamedev (если вы хотите потом двигаться дальше тестировщика, конечно). Но да, это вполне себе точка входа в gamedev.

    Начните с Википедии. Затем пройдите по всем ссылкам и прочтите каждую (по уровням и методам тестирования). Это и будет хорошее начало.

    После этого вы должны будете уметь дать определение любому аспекту тестирования (например, ответить на банальный вопрос, что такое тестирование вообще). А если не сможете, то книги читать рано.

    В качестве закрепления возьмите что-нибудь простое, например обычный карандаш, и попробуйте протестировать его. Примените к нему не менее 15 различных тестов, где каждый из них - это отдельный вид тестирования и имеет специфическое название и определение.
    Ответ написан
    Комментировать
  • Что изучать начинающему разработчику игр?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    У программиста - один путь, у геймдизайнера - другой, и ещё у каждой из десятка ролей свой путь. Все они являются разработчиками игр, если участвуют в разработке игры. В команду можно пригласить даже дворника в качестве консультанта, если игра про подметание улиц, и он тоже станет разработчиком игр. Первым делом стоит разобраться, какие роли существуют в геймдеве и какие этапы разработки.

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

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

    Ну а если переживаешь за хорошую зарплату (доход), то беги из геймдева. Это область не про деньги, а про счастье. Туда идут за удовольствием. Деньги платят в других сферах, например в разработке банковского софта. И не смотри на супер успешные хиты, смотри на несостоявшиеся и незаконченные проекты. Хотя как ты на них посмотришь? О них же никто не знает и никогда не узнает.)
    Ответ написан
  • Как исправить ошибку "CreateTexture2D: due to removed device"?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Да, что-то с драйверами.

    Или с переключением между картами. Возможно, у тебя две видеокарты - встроенная и дискретная, и система определённым образом настроена, чтобы переключаться между ними при запуске игр и т.д. Только это приходит в голову на "removed device".

    Также попробуй убрать разгон. Пусть видяха работает чуть медленнее, зато надёжнее. И в целом проверь, не перегревается ли она, мало ли.
    Ответ написан
  • Какое направление выбрать в вузе, чтобы в будущем работать в игровой индустрии?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Чистому программисту (исполнителю) должно быть глубоко всё равно, разрабатывает ли он игру или что-то другое. Если же программист не совсем "чистый", а с уклоном в геймдизайн, то есть берёт на себя и другие роли (а именно это и привлекательно в игровой индустрии), то я бы рекомендовал рассмотреть психологическое направление. Внезапно. Программированию выучиться проще, если есть способности к математике и любовь к логике, поэтому язык можно освоить самостоятельно, а дальше только бесконечная практика. Хотя можно совместить оба направления. Например, есть «Прикладная информатика в психологии».
    Ответ написан
    Комментировать
  • Какая мне нужна професия если я хочу делать игры, писать скрипты и т.д.?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    У Unity один из самых низких порогов вхождения. Поэтому писать скрипты для Unity может и школьник. И если ты два года интересуешься программированием и играми, то уже должен уметь многое, то есть знать Unity хотя бы на 70%.

    Советую идти в тот ВУЗ, к которому просто лежит душа, который восполнит какие-то пробелы. Если пробелы (почему-то) именно в программировании, и при этом ты не умеешь (не хочешь) в самообразование, то да, это будет техническая специальность.

    Если же с программированием всё и так хорошо, то обрати внимание на другие интересные специальности. Это может быть что угодно, что просто интересно было бы изучить или пригодится в проработке каких-то игровых механик. Это может быть, например, художественное направление, психологическое, юридическое, экономическое, медицинское, - да какое угодно. Знания пригодятся как при создании механик, так и для понимания организации процесса создания игры.

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

    На стыке знаний рождается много интересных решений. Хотя по сути, при взгляде со стороны, ты будешь как бы просто делать игры, писать скрипты и т.д.
    Ответ написан
    3 комментария
  • Возможно ли создать хорошую игру одному?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Сделать-то можно (в теории). Но каков шанс, что получится сделать её успешной?

    Условно на каждые 1000 выпущенных игр всего лишь одна игра успеша. Например, есть Stardew Valley, мы её знаем, она известна и популярна. И есть ещё 999 неудачных игр, которые вышли в свет, но о них почти никто не знает, потому что в каждой какой-то изъян. А ещё 5000 игр делались-делались, но так и не дошли до релиза, а были заброшены по разным причинам. Об этих играх тоже мало информации.

    Поэтому более точный ответ: скорее нельзя, чем можно. Но всё в твоих руках.
    Ответ написан
    Комментировать
  • Как работать с проблемами с игрой у других пользователей?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Игры обычно ведут некий лог-файл. В случае, когда игра "не отвечает", разработчик просит прислать этот файл, а затем пытается понять, что не так. Содержимое файла всецело зависит от разработчика. Обычно там логируются этапы загрузки игры, а затем в процессе события самой игры. Например, "версия игры такая-то, версия ОС такая-то", "загружены текстуры", "игра сохранена под таким-то именем", "такой-то игрок вошёл в лобби", "обнаружена попытка поделить на ноль". В общем, там все "явки и пароли", которые могут пригодиться, чтобы понять, в каком месте ошибка.
    Ответ написан
    1 комментарий
  • GGD:Геймдококументы игр?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Большинство диздоков защищены NDA (т.е. соглашением о неразглашении). Они-то как раз интереснее всего, но их так просто не достать. А что было 10 лет назад - уже не так важно для понимания трендов в наши дни. И в целом какого-то строгого регламента по составлению диздока нет. То есть геймдизайнер может не добавлять какие-то популярные разделы в диздок, или наоборот добавить какие-то новые уникальные разделы из-за уникальности самой игры.

    А так в гугле можно найти. Только гугли правильно. Не "геймдок", а "диздок", ну или по-английски.
    Ответ написан
    1 комментарий
  • Есть ли программа для постройки карточного домика?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Tabletop Simulator

    Там есть всё вышеперечисленное. Правда, без VR будет сложновато строить. Нужно будет сделать какие-то кнопки и запрограммировать их на Lua, чтобы можно было крутить карты в любом направлении и на любой градус, даже очень маленький. Главное, что это вообще возможно.
    Так-то TTS подразумевает, прежде всего, просто настольные игры, в т.ч. карточные, так что по умолчанию карты берутся "горизонтально" и крутятся на угол кратный 15°.
    Ответ написан
    Комментировать
  • Восстановление закрытого PUBG Lite?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Да, возможно.

    Проще всего - купить проект. Он же остался, хоть и закрытый. Осталось связаться с разработчиками и обсудить, какая цена их устроит. Оба действия: связаться и обсудить - вполне возможны. Конечно, нужны будут деньги. А кто говорил, что будет легко? Речь о том, что это возможно.

    Может даже оказаться, если не договоритесь о цене, что ещё дешевле будет переписать и сервер, и клиент с нуля. Из незащищённого клиента будет не очень сложно выковырять полюбившиеся текстуры и модельки. Но такая разработка тоже стоит денег. Всё делать одному будет слишком долго. А кто говорил, что будет легко? Речь о том, что это возможно.
    Ответ написан
    Комментировать
  • Как создать текстовую онлайн RPG/ZPG?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Если у тебя есть интерес к математике и ты любишь логически рассуждать, то основы программирования тебе дадутся легко. В любом императивном языке программирования используются конструкции "если-то-иначе" и "повторять-до-тех-пор", то есть используются условия, которые могут быть "истиной" или "ложью". Остаётся только изучить синтаксис самого языка: где-то пишут if условие then действие end, а где-то if (условие) { действие } и тому подобное. То есть различия только в написании. Вот тебе основы программирования в двух словах.

    Что касается разработки именно игры, то есть понятие основного игрового цикла. С точки зрения программирования - это обычный цикл "повторять-до-тех-пор", просто он не заканчивается до самого конца игровой сессии. Этот цикл делит игру на так называемые "кадры" или "тики", из которых и состоит игра. Каждый кадр - это отдельное состояние игры, которое соответствует отдельной итерации основного цикла. Тебе нужно придумать, каким образом одно состояние сменяет другое, как осуществляется переход, какие вычисления при этом производятся. Такой "кадр" обычно не соответствует кадру на экране (другими словами ход игры не зависит от FPS), хотя это уже отдельная сложная тема.

    1. Язык выбирай в зависимости от того, какой движок или платформу будешь использовать. Не оглядывайся на другие игры. Например, Unity и соответственно C#.
    2. Курсы, учебники, ютуб-каналы - без разницы. В любом случае ты потратишь какое-то время, и его не получится сильно уменьшить. То есть это прямая конвертация времени в знания и навыки без сильных колебаний курса цены этой конвертации. В целом, время будет зависеть от твоего начального бэкграунда (т.е. что ты знаешь и умеешь уже сейчас).
    3. В программировании (да и в других областях) сложную задачу принято разбивать на части (декомпозиция). Сначала нужно изучить понятие игрового цикла, и как время будет течь в игре (или как время в игре соотносится с реальным, учитывая паузы и сохранения). Затем решить, в каком порядке и что там будет выполняться более детально. Однако любая мелкая игровая система всё равно будет достаточно сложна, и её снова нужно разбивать на совсем уж простые. А простые - снова разбивать на элементарные. Поэтому от умения разбивать зависит, закончишь ли ты программу (игру) или нет.
    4. Сетевая часть - обычно самая сложная (и самая глючная), потому что для каждой своя оптимизация. В двух словах, устройства обмениваются сообщениями по сети, и эти сообщения могут пересылаться с разной скоростью, а могут порой вообще теряться в никуда. Клиент-серверная модель предполагает, что есть некое главное устройство (например, ты арендовал сервер в дата-центре), к которому подключаются все остальные (т.н. клиенты). Но вот как будет реализовано взаимодействие, контроль ошибок, чтобы не глючило, вот это уже зависит от самой игры.
    Ответ написан
    Комментировать