Комментарии проекта Game Dev
19

Правильный подход к разработке игр. Часть №2

» Game Dev
Приветствую! Сегодня мы рассмотрим самое сладкое в разработке игр. Сам процесс разработки.

Читать далее...
GeneralElConsul #19 - 2 месяца назад (отредактировано ) 0
В данной записи к автору то же самое замечание, что и в более поздней его статье. Опять же стремление сохранить байты на типах переменных в структуре LevelManager.
  1. Во-первых выравнивание данных в памяти вероятно сделает автору бяку и если уж так важно сохранить память, то можно было бы воспользоваться атрибутами StructLayout, если, конечно, они работают в Unity.
  2. Во-вторых, попытка сэкономить память в скорее всего единичной сущности попросту нецелесообразна. Это все имело бы смысл, если бы использовалось большое множество значений этой структуры, тогда в совокупности можно было бы надеяться на какую-то экономию. В данном же случае имеем наоборот одинокий менеджер, поля которого будут интенсивно использоваться вследствие чего опять возникнет уже один раз описанная мной в комментарии дополнительная работа. В таких условиях не зазорно было бы не поскупиться на память такой важной структуре.
10

Realtime Ray Tracing

» Game Dev
В рамках очередной конференции GDC был анонсирован ряд интересных новостей, потенциально знаменующий начало новой эры в риал-тайм рендеринге.

Читать далее...
Raised #1 - 3 месяца назад (отредактировано ) 0

Подытожим

Плюсы

  • Интеграция со множеством приложений и движков (со всеми вытекающими как для разработчиков, так и для игроков)
  • Цена (если учесть что то для чего нужно было 4 Quadro теперь делает одна 2080ti, то предложение просто чудесное)

Минусы

  • Даже Titan RTX не способен обеспечить 60 FPS при Full HD в каком-то Battlefield даже при том что добрая половина фич там просто не используется. Серьезно бьет по оптимизации (чтоб объект вне поле зрения камеры отражался/отбрасывал тень/прочее, он должен отрисовываться в игровом мире).
  • Цена (продукт скорее для разработчиков чем для игроков ибо цена мозолит глаза даже относительно обеспеченным человекам)
  • Новые плюшки интегрированы в одной с половиной игре
avuremybe #2 - 9 месяцев назад (отредактировано ) -2
Полагаю "эта технология" - указатель на оптимизированный рейтрейс+денойз
Он не оптимизированный, а кастрированный.
Но вообще да, именно на это.
Думаю, стоит подметить что идея за технологией предельно простая, потому в поисках автора столько же смысла что и в поисках автора народного фольклора.
Все гениальное - просто. Вот только додумывается до гениальных решений очень мало людей.
А касательно поиска автора - таки да. Когда эта технология выйдет в массы - автор значения иметь не будет.
Все бабло будет снимать владелец патентов наиболее популярной API (лично я ставлю на невидию).
Raised #3 - 9 месяцев назад 2
Эта технология разработана epic games и представлена еще год назад.
Это утверждение все еще без пруфов. Полагаю "эта технология" - указатель на оптимизированный рейтрейс+денойз?
Думаю, стоит подметить что идея за технологией предельно простая, потому в поисках автора столько же смысла что и в поисках автора народного фольклора. К слову теперь, когда я до этого додумался, их синхронность больше не кажется столь удивительной. Но пруф все еще жду.
avuremybe #4 - 9 месяцев назад (отредактировано ) 0
Raised, на юнити оно попало из BRIGADE.
А из юнити оно переехало на UE.
А оттуда уже массово распостранилось и движуху подхватили невидии, мелкомягкие и амд.
И если вкапываться в такие дебри, то это началось еще где-то в 2010х годах.
И да, это ниразу не одновременно с презентацией API этой весной.
И информация это не из секретных архивов КГБ, можешь взять да погуглить.
Raised #5 - 9 месяцев назад (отредактировано ) 0
avuremybe, одновременно анонсировали новые технологии и API.
Эта технология разработана epic games и представлена еще год назад.
Плиз пруф. Я слышал только об OctaneRender, когда Oats Studios начали делать свои мувики на Unity.
avuremybe #6 - 9 месяцев назад (отредактировано ) -2
Raised, какая синхронность? При чем тут зеленые с красными вообще?
Эта технология разработана epic games и представлена еще год назад.
А майки, амд и невидия просто наперегонки начали делать API под эту технологию, потому что кто первый продвинет в массы - того и бабки.
Raised #7 - 9 месяцев назад (отредактировано ) 0
Зы. Меня одного смущает удивительная синхронность зеленых и красных? Если они и о продуктах своих договариваются, то все как всегда в общем. Забавно что даже приглашенным СМИ на Computex запрещали раскрывать детали представленного железа. То ли потому что хотят дезинформировать народ своими маркетингом и адвертайзингом, то ли чтоб поизображать конкуренцию.
prog #8 - 9 месяцев назад 2
Минимум пара поколений железа и несколько итераций движков пройдет пока технология выйдет на уровень пригодный для широкого применения, как обычно.
FYAN #9 - 9 месяцев назад (отредактировано ) 2
видел на ютубе на днях как эти роботы танцевали - выглядят конечно как под кокаином, но в любом случае это технологический прорыв в индустрии.
Cinos, да ради такого я уже пару тяг сделал, кайфую сижу
Cinos #10 - 9 месяцев назад -2
Месяц назад за это даже тост поднимал. Хорошая вещь, но нескоро её увидим во всей, как мне кажется. А жаль.
19

Игра как сущность

» Game Dev
Вступительная статья небольшого цикла статей, в которых я максимально абстрактно, но с использованием примеров постараюсь пролить свет на то, что же такое игра.

Читать далее...
Clamp #1 - 4 месяца назад 8
Она ничего полезного не вещает, просто мысли человека.
Бывают статьи, которые вещают что-то, что не является мыслями человека? Да, здесь мысли человека, который семь лет крутится в этой сфере и что-то в ней понимает, и по своим причинам считает полезным поделиться частью этого понимания с другими.
Komkozavr #2 - 4 месяца назад 1
Meddin, эм. Причем тут порча жизни? О.о
Про статью я ничего плохого не сказал. Просто сказал что не понял ее смысла и почему она на главной. Все.
А дальше пошло про игры

Но некоторые люди не поняли и все сгребли в одну кучу.
Meddin #3 - 4 месяца назад 2
Komkozavr, в целом ты говоришь верные вещи, но не позволяй своему пригару портить жизнь другим людям. Да, раньше было лучше, да, сейчас большинство игровых кампаний помешано на деньгах и относятся к аудитории честно говоря по-скотски, но таково наше время. Не стоит лить негатив на все и вся из-за этого. Мне лично было интересно прочитать статью и для себя я отметил вещи, которые были мне в новинку.
PrincePhoenix #4 - 4 месяца назад 0
Komkozavr, Я не знаю, в курсе ты или нет, но к инди-проектам на сегодня гораздо больше внимания, чем к ААА. По крайней мере у людей, которые разбираются в играх.
Komkozavr #5 - 4 месяца назад -4
PrincePhoenix, просто я не стадо, а ты стадо. Вот и бесишься
PrincePhoenix #6 - 4 месяца назад 1
Clamp, представитель нашего сообщества, в лице комка, уже не знает куда и кому кричать о том, что мир не такой, как был раньше. И трава была зеленее и игры делались от души...
Komkozavr #8 - 4 месяца назад -8
Вопрос: для чего эта инфа и почему она на главной?
Она ничего полезного не вещает, просто мысли человека.

Про игры: сейчас игры зациклены на графике. Сделай говняшку с красивой графикой и ее сожрут. Как говорится:"Пипл схавает".
Единственные две игры в которых действительно интересные истории и крутая атмосфера, это - Detroit: Become Human и God of War. Там реально рассказываются интересные истории и очень атмосферный мир. Видно, что разработчики вложили душу в эти проекты. В отличии от провального Kingdom Come: Deliverance, у которого баг на баге в момент продаж. В этих же не было ни одного бага. Ни один стример или летсплейщик не столкнулся с багами.
Так к чему это я? Ах да. Игры с хорошей историей уже вымерли. Они не продаются, ибо разрабы не очень зацикливаются на графике, а людям подавай графику чтоб аж комп дымился от низких настроек.
Получают красивую графику и в подарок куча багов с дерьмовым сюжетом. Зато быстро, как хотят игроки. Вон, Фоллаут вышел 76-й, и что? Лаги, баги, сервера ломаются, зато быстро и с красивой графикой. Настолько быстро делали, что аж анимки из скайрима сперли
Clamp #9 - 4 месяца назад (отредактировано ) 0
Кет, так и есть. При этом простая модель геймплея может быть частью более сложной модели всей игры.
В следующей статье пройдусь по играм в совсем общем смысле (взаимодействие со скрытыми мотивами), уже предвкушаю, как разорвёт шаблон всем ищущим конкретики от абстракций :D

NazarPunk, не буду отвечать на вопрос прямо, дабы не плодить прецедент, однако предложу подумать, почему она могла бы подойти / не подойти. лабиринты кстати алгоритмически очень слабые, «на побегать» вместо «на подумать»
NazarPunk #10 - 4 месяца назад 0
Вот например сверхсовременная RPG с векторной графикой, она подходит под ваши критерии игр?
Beyhut #11 - 4 месяца назад 0
Честно. Увы. Но статья лично мне не понравилась. Слишком много всего обобщённого, мало конкретики. Читаешь обо всём и ни о чём. Что касается "правило шести", то увы но это правило явно не для первых этапов разработки, поэтому не понимаю зачем о нём говорить в такое поверхностной теме "игра как сущность". Как бы прикольно да, правило 6 чего-то, комбинируй и т.д., советы, круто. Но рано их применять, ведь ты только сказал: "Интересная игра- это интересный выбор". Увы. Статья не о чём.
Jusper #12 - 4 месяца назад 0
Отличная статья в качестве вводной.
Подцепил отсюда в свое время "Много - это шесть".
Кет #13 - 4 месяца назад 2
получается игра это решение задач в рамках заведомо простой модели
Clamp #14 - 4 месяца назад (отредактировано ) 1
Упомянутое в статье "правило шести" тоже видел в азах какой-то из областей, уже не соображу в какой именно, именно в основах, с которыми знакомится человек впервые решивший что-то узнать на тему, а не на правах какого-то откровения.
Ну когда я о нём узнал, я только вкатывался в область, и для меня такое эффективное упрощение было почти откровением, оттуда и такие нотки в статье. Ну и потом, когда с тобой делятся даже базовой информацией в формате «откровения», невольно больше ею проникаешься, педагогический эффект сильнее, на это тоже ставку делал.

Беда современных разработчиков игр в том, что они совсем не читают классику - теорию игр ту же, например, это которая вовсе не о компьютерных играх, а о логике и математике.
Независимо от наполнения, игра (компьютерная) всегда есть модель, вполне логично, что чтобы делать красивые модели, надо знать, как их делать и как они работают. В общем, полностью согласен.
Мне, можно сказать, повезло: был в жизни длительный период меланхолии, и я просто запоем читал статьи (часто из той же википедии) и исследования по всем направлениям, до которых мог дотянуться, просто чтобы отвлечься. И математику, и физику, и социологию с биологией, в общем, чем абстрактнее было, тем лучше; очень увлекательно было читать различные исследования и теории о явлении сознания. Плюс ещё в какой-то момент увязать всю эту информацию в единую цельную модель помогла кислота, чего уж тут таить.
prog #15 - 4 месяца назад 0
Беда современных разработчиков игр в том, что они совсем не читают классику - теорию игр ту же, например, это которая вовсе не о компьютерных играх, а о логике и математике. Азы психологии тоже не помешали бы. Упомянутое в статье "правило шести" тоже видел в азах какой-то из областей, уже не соображу в какой именно, именно в основах, с которыми знакомится человек впервые решивший что-то узнать на тему, а не на правах какого-то откровения.
Clamp #16 - 4 месяца назад 2
Пять рядов по пять яблок можно ответить не пересчитывая.
Пять рядов - да, пять яблок - да, однако для пяти рядов по пять яблок придётся чуть-чуть, но задуматься, ответ не будет интуитивным.

то я бы выделил
Целью статьи является попытка вынести на поверхность не различия, а, напротив, универсальные абстрактные сущности.

пример с Транзистором некорректен, потому что всё всёравно сводится к затыкиванию кнопок
Бездумно затыкивающий кнопки игрок будет иметь исчезающе малые шансы на успешное прохождение; пример, очевидно, отсылает не к самому механическому взаимодействию, а к высокой вариативности механик при небольшом количестве их базовых элементов.
NazarPunk #17 - 4 месяца назад 0
Цель - понять, когда отвечающему приходится пересчитывать предметы для ответа, а когда он отвечает не задумываясь.
Пять рядов по пять яблок можно ответить не пересчитывая.
подавать игроку один и тот же геймплей
тут уже всё размыто донельзя. Если гэймплэй это способ взаимодействия игрой, то я бы выделил:
  • рефлексы и быструю реакцию как в шутерах, слэшерах
  • сюжет как в RPG
  • пошаговые игры как шахматы или герои
А ваш пример с Транзистором некорректен, потому что всё всёравно сводится к затыкиванию кнопок, с тем же успехом жанр файтингов вообще можно называть самым разнообразным по гэйплэю ибо количество комбинаций там просто зашкаливает.
Raised #18 - 4 месяца назад 2
Масло маслиное. Давай исчо.
Clamp #19 - 4 месяца назад 2
Когда-то публиковал это в своём блоге, но решил, что не потяну более-менее большой цикл, поэтому там и оставил. Теперь же, спустя пару лет, у меня есть знания, опыт и понимание многих вещей, бывшие мне недоступными, и я решил, что пришло время вернуться к этому сложному, но интересному занятию.

Не стоит воспринимать всё написанное как относящееся исключительно к играм, почти всё может быть применено и ко многим другим аспектам жизнедеятельности =)

Ну и конечно вопросы, пожелания и советы по написанию приветствуются.
6

Python - баг в системе инвентаря для текстовой РПГ

» Game Dev
Помогите найти баг. Думаю, это как-то связано с глобальными переменными или лупом while.
Такое ощущение, что когда item_for_put_on_1.name меняет значение - все переменные в коде, которые ранее присваивали эту переменную - тоже меняют наименование на новое, что как-то странно. И не знаю, как это баг вычистить.
А если пытаюсь после надевания очищать значение item_for_put_on_1.name, то оно очищается и в надетых вещах, т.е. придмет теряется.

Читать далее...
nvc123 #1 - 6 месяцев назад 0
vasex, скорее всего потому что v1 == v2
либо гдето перемудрил с присваиваниями либо right_hand_item() и on_head_item() возвращают один и тотже объект
vasex #2 - 6 месяцев назад (отредактировано ) 0
хм, помогла замена все этих объектов-классов на простые переменные (которые я объявил везде глобалами):
xx = all_item_names[i][0]
xxx = all_item_names[i][1]
или
zz = all_item_names[i][0]
zzz = all_item_names[i][1]
Теперь код работает, как надо. в руке (хх) - палка, в голове (zz) - шлем, как не ворочай, всё получается.
Только я, наверное, всё равно слишком тупой, чтобы понять, почему не работает это:
  1. один объект присваивает значение словаря при одном условии...
  2. совершенно другой объект, никак не связанный с предыдущим (кроме слова name и одного и того же словаря, но с разными i в зависимости от условий), присваивает совершенно другое значение словаря при совершенно другом условии...
  3. но почему-то в итоге в обоих объектах в итоге записано одно и то же свежее значение из словаря... и проблема, как теперь известно, не в i, которое корректно в зависимости от условий меняет значение словаря...
name ведь не общее у двух разных объектов двух разных классов, а как бы характеризует своё уникальное значение, ну как у одного героя имя одно, а у другого имя другое, я даже классы их разделил (right_hand_item_1 = right_hand_item() и on_head_item_1 = on_head_item()), а не делал общий, хотя и так по логике вроде не должно было быть одинаково...ну и не вижу других примеров в коде, когда из-за общего написания слов "name" у каких-то разных объектов что-либо совпадало (а объектов много разных с name).
Мне бы хотелось в этом разобраться.
Т.е. если в твоём примере ситуация и понятна, ок, то у меня была один пример назад несколько иная ситуация всё же!
v1 = right_hand_item()
v1.name = "блабла"
&
v2 = on_head_item()
v2.name = "блублу"
и почему же тогда v1.name = v2.name = блублу ?
nvc123 #3 - 6 месяцев назад 0
vasex, и почему твой костыль должен был помочь?
vasex #4 - 6 месяцев назад (отредактировано ) 0
nvc123, звучит хорошо... Но я попробовал заменить таким образом:
Чтобы избавиться от сторонних проверочных классов типа item_for_put_on_1, я решил переносить в функцию item_put_on() не это, а сохранить нужную i !!!
Для этого добавил переменную qqq, которая присвает значение i (это строка - название из словаря, которые перебираются лупом while при поиске вещи, которую игрок хочет надеть), сделал qqq глобальной в обеих функциях.
А затем присваиваю теперь к слоту левой руки или головы не item_for_put_on_1, а уже напрямую значение через словарь (т.е. если бы ты был прав, ошибки быть уже не должно):
left_hand_item_1.name = all_item_names[qqq][0]
left_hand_item_1.body_part = all_item_names[qqq][1]
или
on_head_item_1.name = all_item_names[qqq][0]
on_head_item_1.body_part = all_item_names[qqq][1]
Соответственно подкорректировал все проверки, всё работает, как и раньше, первая вещь без проблем помещается в нужный слот.
Но со второй вещью происходит ровно то же самое, как и раньше, она заменяет имя и в on_head_item_1.name и в left_hand_item_1.name, т.е. опять два шлема в разных частях тела.
Тут в чем-то другом проблема. Такое ощущение, что не вижу чего-то до глупости очевидного.
nvc123 #5 - 6 месяцев назад 3
если что, то . это оператор обращения к содержимому объекта
т.е. меняя item_for_put_on_1.name ты меняешь поле name у объекта записанного в item_for_put_on_1
все объекты хранятся по ссылкам а не по значениям
т.е. в следующем коде все переменные (v1, v2, v3, v4) указывают на 1 и тот же объект
v1 = item_for_put_on()
v2 = v1
v3 = v1
v4 = v2
BrEd Pitt #6 - 6 месяцев назад 1
пока что не могу сказать, в чем конкретно проблема, но посоветую сделать дебаг как запись имен переменных в тхт каждый ход - если переменные действительно меняют названия, станет заметно. Пока думаю, что дело с лупом и массивом all_item_names
(у меня была похожая проблема, но со спрайтами для роглайковских крипов, жуки свиду становились скелетами при появлении первого скелета)
Возможно, while и if друг друга теснят где-то, опять же, видел что-то такое на стаковерфлоу, пока свою проблему исправлял (не на пайтоне, но все же), мб стоит это дело переосмыслить чутка синтаксически
4

Критерий оценки подземелья

» Game Dev
Как можно оценить процедурно-сгенерированное подземелье (в 2D)? "Хорошее" ли оно?
С точки зрения алгоритма и асимптотики.
Suite #1 - 10 месяцев назад 0
Подразумеваю под этим возможность создания не просто пустых комнат, но и комнат с "колоннадами", т.е. вырезанными участками, евпочя.
Говоря комнаты я имел ввиду множество различных типов комнат, которые после станут известны.
про подземелья оно и понятно, что не лабиринты, лабиринты же без комнат. Но в то же время вариативности прибавляет сама возможность создания подземелья, в некоторых случаях близкого к лабиринту (а-ля канализации с карманами и прочие катакомбы)
вопрос в том, нужна ли такая реализация
Если локация сплошь будет состоять только из канализации, то она будет однотипной и есть вероятность того, что игроку поднадоест. Если часть её будет состоять из таких вот "лабиринтов", то да, но сейчас самое главное создать что-то наподобие такой карты, как в этом алгоритме:
BrEd Pitt #2 - 10 месяцев назад 0
интересность мб как вариативность?
Подразумеваю под этим возможность создания не просто пустых комнат, но и комнат с "колоннадами", т.е. вырезанными участками, евпочя.
про подземелья оно и понятно, что не лабиринты, лабиринты же без комнат. Но в то же время вариативности прибавляет сама возможность создания подземелья, в некоторых случаях близкого к лабиринту (а-ля канализации с карманами и прочие катакомбы)
вопрос в том, нужна ли такая реализация
вообще вот тут pcg.wikidot.com/category-pcg-algorithms про все это добро хорошо расписано, в т.ч. и разнесено по категориям
Suite #3 - 10 месяцев назад (отредактировано ) 0
по сабжу "искусственных".
У нас есть какая-то область (сетка), на которой уже делаем операции расстановок комнат, соединения и т.п. и т.д.
Не могу кластеризовать алгоритмы на категории, так как не понимаю как оценивать их.
Пока можно оценивать сам алгоритм по
  • асимптотике
  • проходимость (достижимость комнат)
  • интересность (скучность? как научно назвать? однотипность?)
  • ...
И еще хочу уточнить, что именно уровни - подземелья, а не лабиринты и прочие виды нечисти.
BrEd Pitt #4 - 10 месяцев назад 0
грубо говоря, если алгоритм не допускает создания не в исключительных случаях (когда что-либо в формулах обращается в "подозрительные точки") уединенных комнат или коридоров из ниоткуда в никуда, а также если предложенная под подземелье площадь не сплошь покрыта мелкими комнатами/пещерами и тонкими стенами (но в некоторых случаях, например, с соответствующим сеттингом, это можно сделать фичей), то алгоритм хороший.
Что за подземелье, можно уточнить? Искусственное или естественное? Очевидно, что "хорошее" искусственное подземелье должно иметь минимум (а лучше - и не иметь вовсе) кривых и неправильных ходов. Все должно быть строго и как на чертежах.
"Хорошее" естественное подземелье должно удовлетворять обратному (кэп).
Если речь о "смешанном", то алгоритм, как я видел в некоторых роглайках (сам никогда смешанных не делал, не умею) иногда внушителен за счет проверок и всяких аппроксимаций в разных случаях несоответствий. Т.е. допускает кривые, но в меру, комнаты рядом с природными ходами, и наоборот. Тут код надо видеть, или хотя бы алгоритм
4

веса

» Game Dev
прога блендер, суть в том что кидаю я веса на левую ступню,а закрашиваеться правая,когда правая закрашиваеться инверстно,тоесть левая кость получает вертексы правой ступни и правая кость получает левую ступню хотя с руками такого косяка нет,хотя меш повернул локальна на 90 градусов,как исправить такой косяк
ledoed #1 - 11 месяцев назад 0
решил проблему,нада в меше выставить норм поочередность модификаций
ledoed #2 - 11 месяцев назад (отредактировано ) 0
вот
ага еще как сверхестественное сколько моделей неделал эт 2й раз когда с блендером чтото сверхестественное
прикреплены файлы
prog #3 - 11 месяцев назад 0
Apply Transform не забыл перед тем как скелет прикручивать? Других вариантов что это может быть не знаю - у меня все отлично работает. Если это не что-то сверхсекретное - выложи модель, чтобы можно было своими глазами увидеть что же там происходит на самом деле.
ledoed #4 - 11 месяцев назад (отредактировано ) 0
ошибся такая инверсия происходит со всем мешем,хотя автовеса ставяться как надо
Raised #1 - 1 год назад 0
Работы предложить не могу, разве что для звуковика. О геймдеве: если есть идеи, рекомендую покопаться в Game Maker и работать над личными проектами, подключая других по мере необходимости.
Jack-of-shadow #2 - 1 год назад 1
Как ни странно традишн арты выглядят в разы лучше, чем cg. Пока в игровой индустрии можно рассчитывать разве что на хиден обджект проекты, Ито при наличии качественного портфолио. Качай скилл, и изучай чужие работы, например на артстейшене. И попробуй помоделить в збраше, это поможет лучше понимать объёмы.
И анатомия, это первое что в глаза бросается.. Нужно совершенствоваться вообщем
Komkozavr #3 - 1 год назад (отредактировано ) 4
Мой тебе совет - ищи настоящую работу. Рисуй на заказ.
Clamp #4 - 1 год назад 0
Впечатляюще, но я не уверен, что у тебя получится найти здесь искомое. К сожалению.
33

Многопольз. онлайн сервер. Плачу за разработку.

» Game Dev
Писал это в юнити, но напишу и сюда, более подробно: Возможно ли создать многопользовательскую игру, которая может хостится только автором, а игроки могут подключаться в любой момент работы сервера?

Читать далее...
prog #32 - 1 год назад 0
Komkozavr, только вот они пару лет его доводили до такого вида, если не больше. Командой в несколько человек, насколько я знаю.
Komkozavr #33 - 1 год назад 0
Вот, учись у них. На майнкрафте сделали сталкер и играют онлайн игроки