home.social

#игры_и_консоли — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #игры_и_консоли, aggregated by home.social.

fetched live
  1. Не делайте NPC умнее игрока

    Cегодня принято хвастаться достижениями в области ИИ, даже если вы встроили исправление пикселей в текстурах, чем раньше занимался джун-артист, работа кстати непыльная и художник делает её лучше и быстрее модельки до сих пор, но реалии времени диктуют убрать джуна-Васю и взять Клода-помощника. И возникает довольно странное ощущение… если нейронные сети уже научились распознавать изображения, генерировать текст и музыку, управлять автомобилями, играть в сложные гео-политические игры и решать огромное количество задач, которые ещё совсем недавно считались исключительно человеческими, что нам стоит запустить модельку в современную игру и дать ей управление NPC, чтобы сделать его более живым и интегрированным в лор. Но вот вы заходите с супер-современные (Pragmata, PUBG, выберите свое), как внезапно выясняется, что там по-прежнему находятся старые добрые конечные автоматы, Behavior Tree (поведенческие деревья), эвристик и тонна ифов, который говорит NPC, что если игрок достаточно близко, то надо его атаковать, если игрок убежал, то надо немного его поискать, потом покричать, потом …выберите свое…, а если искать его слишком долго, то следует сделать вид, что вообще ничего не заметили и уйти заниматься своими нпсишными делами, мужественно охраняя сундук с лутом от дерзких взглядов местной живности, которая тоже, кстати, на эвристиках. И это все происходит в современных AAA проектах, где на рендеринг одного кадра работают сотни потоков, физика считается на нескольких уровнях детализации, анимация использует сложнейшие системы смешивания и procedural animation, а навигация строится на огромных графах и разработчики совершенно спокойно используют ML для отдельных частей графического пайплайна, обработки звука или генерации контента. А вот когда дело доходит до вопроса «что сейчас должен делать этот конкретный NPC», внезапно оказывается, что старый switch по состояниям всё ещё является самым лучшим инженерным решением.

    habr.com/ru/articles/1085546/

    #искусственный_интеллект #разработка_игр #игры_и_консоли

  2. Анатомия граблей

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

    habr.com/ru/articles/1078334/

    #игры_и_консоли #программирование #с++ #разработка_игр

  3. Как «ужать» мегаполис до размеров iPhone 4

    Помните времена, когда трава была зеленее, мобильный интернет помегабайтным, а Apple осваивала непаханые поля смартфоно-игровых ферм? Начало 2010-х было очень интересным временем, когда мобильные студии создавали целые новые жанры, пытались перенести или адаптировать старые концепции и игры, попутно решая задачи, от которой у десктопного разработчика начинал дергаться глаз. Вот и EA решили взять культовые франшизы SimCity и The Sims со всеми их терабайтами ассетов, сложнейшей симуляцией дорог, пробок и отдельных симов, и попробовать затолкнуть это в карман. В кармане у пользователя тогда лежал условный iPhone 4 или 5 с уже тогда куцым бюджетом оперативной памяти в районе 100–300 МБ на всё про всё, но айфоновладельцы были "платящей" аудиторией, поэтому игровое подразделение метило в основном в них. Как не превратить смартфон в обогреватель и словить ООМ в первые минуты игры? Выкинуть честную симуляцию на помойку, превратить симов в конечные автоматы, а город сделать хитрой иллюзией из текстурных атласов и таймеров . Раскажу немного как устроены SimCity BuildIt и The Sims Mobile с инженерной изнанки, кода почти не будет, да он и не нужен тут для понимания, а еще будет немного грустинки по российскому подразделению EA, и фотки с закрытия офиса в 2016.

    habr.com/ru/articles/1051440/

    #с++ #игры_и_консоли #разработка_игр #программирование

  4. Путеводитель по чужим STL

    Надеюсь вам понравилась статья про работу с памятью на консолях , где каждый ездил на том велосипеде, который сам же и придумал, попробую рассказать про зоопарк теперь уже стандартных библиотек. Стандартных в отдельной студии или конторе, потому что у соседней будет свой стандартный стандарт. Забавно что любовь прикрутить очередную погремушку к своему велосипеду становится тем сильнее, чем становится крупнее контора, поэтому приходя в игровую студию есть очень немаленький шанс, что стандартный STL у неё нестандартный, обёрнут или вовсе запрещён религией кодстайлом. EA, Facebook, Google, Adobe, LLVM и рядок компаний поменьше тратят человеко-десятилетия в поисках ответа на главый вопрос жизни, Вселенной и всего такого «почему std:: это медленно, непредсказуемо и жрёт память». По аналогии с прошлой статьей вам не потребуется знать стандарт наизусть, а будет достаточно понимать, что такое указатель, чем вектор отличается от дерева и почему промах в кеше это дорого, а дальше я пройдусь по разным стандартным библиотекам и про каждую немного расскажу, что это, зачем оно появилось и где об него можно больно удариться, потому что про вот этот последний пункт обычно забывают "продаваны" и прочие студийные еванглелисты, когда расказывают какое там всё красивое, легкое и с++двадцатое.

    habr.com/ru/articles/1042198/

    #с++ #с++_программирование #ненормальное_программирование #игры_и_консоли

  5. C++101

    Про C++ часто шутят, что любую вещь можно сделать пятью разными путями, четыре из которых компилируются, три работают, а два правильные, но один зависит от фазы луны. Часто такие шутки и идиомы откладываются в коллективной памяти сообщества какой именно из этих путей правильный в каждой конкретной ситуации. Большинство этих примеров родилось в эпоху до C++11, когда у языка ещё не было ни умных указателей в стандарте, ни move-семантики, ни constexpr , ни концептов, и приходилось руками собирать из шаблонов и перегрузок некоторые кострукции, которые в более поздниях стандартах язык даёт почти бесплатно. Многие идиомы, примеры и идеи стоит читать в двух смыслах сразу, как исторический артефакт, объясняющий «почему старый код выглядит вот так», и как живой приём, который всё ещё применяется в движках и играх. Разработка игр тут не случайно, потому что игровой движок это обычно место, где абстракции встречаются с профилировщиком, и проигрывают ему чаще, чем хотелось бы. А легаси паттерны цветут и пахнут из-за чьих-то забытых в углу костылей, но большинство вещей вполне правильны, применяются и спасают от ошибок. Многое из этого спрашивают если не дословно, то хотя в паре слов, хорошие лиды на собесе, перед тем как позвать вас в команду, и просто взяв рандомо 5-6 пунктов можно составить впечатление, сталкивался ли новый человек с определенными проблемами. Когда я собирал оглавление Game++ , раздел про идиомы, идеи, паттерны и механизмы C++ планировался шестым и завершающим, и должен был занять страниц сто, по одной на каждый пункт, но чем дальше я собирал материал, тем яснее становилось, что каждая секция тянет за собой историю, а каждая история требует контекста, а каждый контекст в игрострое никогда не бывает простым. В итоге текст разросся до размеров, при которых он просто сломал бы структуру книги, и мне пришлось выбирать между «урезать до неузнаваемости» и «отпустить жить отдельно». Пришлось выбрать второе. Перед вами то, что могло бы стать половиной Game++ , но стало самостоятельным материалом. Здесь собраны идиомы, идеи, паттерны и механизмы C++, которые сложились в сообществе за несколько десятилетий и продолжают жить в кодовых базах игровых движков, иногда под своими именами, иногда под другими, иногда вообще без имён, потому что их давно перестали объяснять. У большинства имена все же есть, есть и история с ответом почему именно так, а не иначе. Вероятно вам потребуется вспомнить некоторые правила вывода шаблонов, и что такое конструктор и деструктор, чем стек отличается от кучи, что у объекта есть время жизни, но это не точно. Я также намеренно убрал обработку краевых случаев и разные проверки из кода, которые в реальном коде заняли бы половину всего текста и утопили бы саму мысль в деталях. Паттерн механизма в моем случае важнее конкретной реализации, и почти каждая из них существует в десятке вариаций под разные компиляторы и стандарты.

    habr.com/ru/articles/1044450/

    #с++ #с++_программирование #игры_и_консоли #разработка_игр

  6. Как не перепутать мечту, портфолио и вторую работу

    У разработчиков игр есть довольно странная профессиональная болезнь, когда после рабочего дня, проведенного за тасками и кодом хочется открыть ноутбук и снова писать код, только уже «для себя». Большинство моих коллег по цеху, придя домой тратят 1+ часов чтобы: поделать свой движок или переписать/помодить/любимую/старую/новую/другую (нужное подчеркнуть) игру или собрать какую-нибудь библиотеку, или починить инструмент, который всех раздражает. Не знаю, может эта заразно и гуляет по студиям, а может это просто кусочек творческой атмосферы, который ты уносишь из офиса, и он некоторое время живет вне этого пространства. Часто бывает что маленький проект, который был на "пару вечеров" внезапно превращается в несколько лет жизни. Я много раз видел это снаружи и изнутри: СorsixTH , 0AD , Akhenaten , Cytopia , StoneKingdoms , (тут больше open-source-games) очень разные проекты (из тех куда я комитил), но все они хорошо показывают одну и ту же вещь, что пет-проект почти никогда не остаётся «просто маленькой штукой». Он либо умирает, либо начинает требовать от автора взрослого отношения и тянет за собой архитектуру, поддержку, документациу, общение с коллегами по цеху и теми кто просто играет, разбора багов, релизов и неприятных компромиссов. И главный вопрос тут не «как найти мотивацию», а точно ли тебе это нужно?

    habr.com/ru/articles/1032486/

    #программирование #с++ #разработка_игр #игры_и_консоли

  7. Зоопарк строк в вашем C++ коде?

    CryEngine2 использовал класс собственный CString, для реализации работы со строками и немного использовал строки из стандартной строковой библиотеки Windows. Насколько я помню, последняя версия CryEngine всё ещё использует те же самые CString, она кардинально поменялась внутри, но как дань истории название класса менять не стали, зато сильно расширили функционал. Я не на 100% уверен, применялся ли CString только в редакторе или в рантайме игры тоже, вы можете сами это посмотреть в исходниках, которые все еще доступны на гитхабе. Это один подход к работе со строками, довольно распространненный в мире игростроя - когда мы все нужное пишем сами, не оглядываясь... хотя, тут больше уместно слово поглядывая, на существую реализации и утаскивая в проект все самое лучшее. Есть и другой подход... Я работал в команде над некоторым проектом, который должен был выйти на консолях, и в какой-то момент на проект пришел эффективный тимлид, который хорошо умел в красивые презентации, и продавил использование std::string из sdk. Все очень опытные программисты, синьоры и руководство важно кивали на совещании и согласились всё перевести на std::string… не такие уж они оказались опытные, как выяснилось. В итоге мы заменили большую часть CString на std::string. Не сказал бы, что это сильно повлияло на время компиляции - плюс-минус минута к проекту, который собирается двадцать минут особой погоды не делают, но это также превратило наш довольно понятный базовый код в запутанный кошмар. Возможно, для переносимости это было лучше, но ни наш проект, ни CryEngine2 Editor так и не были портированы ни на Linux, ни на какую-либо другую платформу. Прошло десять лет, я вижу ровно туже ситуацию на текущем проекте - новый тимлид решил перевести местный MySuperPupeString на std::string, уже предчувстуя "нижней чуйкой" последствия - запасаюсь попкорном и беру отпуск на следующий месяц после принятия решения. Но не это интересно, а то - какие вообще строки могут быть в вашем с++ коде. Строка, на строке и строкой погоняет

    habr.com/ru/articles/968536/

    #с++ #работа_со_строками #программирование #игры_и_консоли

  8. Хороший, плохой, цветной и быстрый

    Давным-давно, когда с ездовым котом приключилась "записка шестая" , а знания об аллокаторах и опыт их применения ограничивался линейным и системным, перебросили мою команду в помощь другой команде, которая занималась системами навигации больших судов. Ездовые коты, особенно нестарые - это такие создания, которые редко изучают документацияю детально, а чаще бегло читают там про интерфейсы систем в проекте, malloc, new, системные аллокаторы и думают, что теперь-то точно понятно, как всё устроено. А потом приходит работа и такая: “Забудь всё, что ты знал. Ты не дочитал до страницы восемьсот что-то там РД, тут есть свой аллокатор - и он реально плохой”. Примерно так началось мое погружение в мир ненормального распределения памяти. Это сейчас я знаю с десяток разных аллокаторов, и специфику их работы, специфика правда больше игровая, но думаю многим будет интересно - зачем нужны все эти " танцы с аллокаторами ". В той статье все аллокаторы еще более менее нормальные, но есть еще ненормальные и они оказывается тоже нужны, и в определенных сферах разработки очень даже важны и применяются. А вот почему нужны и важны ненормальные - объяснений почти нет, как и самих реализаций в открытом доступе. В этой статье я расскажу, какие повстречал ненормальные алгоритмы распределения памяти, чем они живут, кого едят, и почему иногда malloc делает вид, что он не при делах и таки да, malloc может возвращать null и ту проверку мы убрали зря.

    habr.com/ru/articles/954676/

    #с++ #игры_и_консоли #разработка_игр #программирование #ненормальное_программирование

  9. Будни ретрогеймера: совершенная игровая Nintendo

    Возвращаемся к шестнадцати битам! Сегодня я готовлю к эксплуатации сразу две игровые консоли Super Nintendo с целью погружения в богатый внутренний мир этой замечательной платформы сразу двух неофитов. Проводником же для них в туда выступит опытный Сусанин, то есть я. Задача на этот раз максимально проста: доукомплектовать две консоли и сделать им простейший мод со снятием региональной блокировки. Не очень интересный процесс в свете предыдущих публикаций цикла, но можно немного сместить фокус: сегодня это просто повод поговорить про замечательную, но не особо популярную в наших краях платформу, и рассказать личную историю, связанную с ней. Да и модификации получились достаточно разными, а в процессе также были подняты некоторые полезные вопросы. Очередная будня ретрогеймера начинается!

    habr.com/ru/companies/ruvds/ar

    #игры #игры_и_игровые_приставки #игры_и_консоли #ретрогейминг #16_бит #16bit #16bit_games #super_nintendo #super_famicom #snes #картридж #картриджи #pal #ntsc #моддинг #модификация #diy #сделай_сам #arduino #ардуино #ruvds_статьи

  10. Первому игроку приготовиться

    Электронные игры (аркадными, видео и компьютерными они станут значительно позже) появились не в уютных гостиных и даже не в шумных игровых клубах. Первые игры родились совсем в других местах — в исследовательских лабораториях, университетах и на военных базах чьей-то там минобороны, где военные искали новые способы использования технологий, чтобы внести побольше рацпредложений на одну солдатиковую единицу. На авиастанции корпуса морской пехоты Канеохе, солдатикам предлагали электромеханические игры еще в 1949. Чтобы хоть ненадолго отвлечь молодцев от изнуряющей подготовки и строгой дисциплины, в гулко звучащих казармах новобранцы часами сосредоточенно вертели ручки и нажимали кнопки, стараясь на время забыть тяготы и лишения, пока начальство судорожно решало проблему нехватки брома в части. Тем временем, в тишине университетских корпусов, среди гудящих cтоек и залежей перфокарт, заспанные и перегруженные учебой студенты, будущие светила программирования и предлагатели новых станадартов превращали огромные дорогущие мейнфреймы в примитивные игровые приставки. Вместо добивания перфокартами сложных математических расчётов или моделей для научных работ, эти люди писали код для первых игр. Не могу их в этом винить, потому что сам под в конце 90х прокрадывался в зал, где стоял отцовский комп и тайком запускал SimCity или Цезаря, или пытался накропать морской бой на BASIC руководствуясь исходниками, напечатанными в каком-то журнале и молясь, чтобы скрип жесткого диска и попискивание бипера не были услышаны родителями. Так, в тени науки и военных технологий, из любопытства, усталости и стремления поиграть, зародилась одна из самых мощных индустрий развлечений современности — видеоигры. Небольшая передышка для одних, вскоре стало культурным феноменом масс и изменила мир развлечений. Press start

    habr.com/ru/articles/884056/

    #разработка_игр #игры_и_консоли #история_it

  11. Винтажные пиксели: как энтузиасты сохраняют классические видеоигры

    Великие художественные произведения прошлого бережно хранят в музеях и архивах. С классическими играми дела обстоят намного хуже: многие из них уже бесследно пропали. Спасением остальных занимаются десятки волонтеров по всему миру. Рассказываем, как эти энтузиасты борются за игровое прошлое.

    habr.com/ru/companies/psb/arti

    #видеоигры #игры_и_консоли #старые_игры

  12. Проблема красной бочки

    Вы, наверное, знаете о страхе поэта перед чистым листом - это психологическое состояние человека при необходимости начинать что-то новое. Оно может появляться в различных ситуациях, от рисования до создание музыки, любой деятельности, которая требует креативности и начала без подсказок. За этим страхом прячется нежелание ошибиться или завышенные ожидания, страх критики и негативных оценок, отсутствие ясного понимания с чего начать. В разработке игр тоже есть похожая проблема, но уже в отношении существующих вещей, и называется она "red barrel", этот термин я несколько раз слышал от своих англоязычных коллег game-дизайнеров. Страхи те же: критика, негативное отношение к изменениям, отсутствие четкого плана действий. Если в пылу сражения, например в шутере, вы увидите красную бочку, то точно по ней пальнете, потому что 9 игр из 10 предлагают именно такое поведение - красные бочки взрываются. Бочка взорвется и нанесёт урон врагам, которые (совсем вот глупые) мало того, что бочки с ГСМ расставили по уровню, так еще и курят рядом(все знают что курение убивает). Почему бочки стали проблемой расскажу ниже. А есть ли проблема?

    habr.com/ru/articles/803417/

    #red_barrel_flood #красная_бочка #разработка_игр #игры_и_консоли #управление_проктами

  13. «Слово из трёх букв», или Пишем SMS-аналог Wordle с помощью MTС Exolve

    Привет, Хабр! Сегодня поговорим об игре «Угадай слово» и её вариациях, например Wordle («Вордли»). Скорее всего, вы с ней сталкивались, а если нет, поясню: она похожа на старую добрую «Виселицу» — есть загаданное слово, и надо за ограниченное количество попыток его угадать. Только отгадываем слово не по буквам, а целиком. В какой-то момент игра стала так популярна, что некоторые компании интегрировали её в разные маркетинговые акции внутри приложений. Казалось бы, тема закрыта, можно расходиться. Как бы не так! Мне есть чем вас удивить, ведь сегодня займёмся разработкой именно такой игры, геймплей которой базируется на SMS-сообщениях. Подробности — под катом.

    habr.com/ru/companies/ru_mts/a

    #itинфраструктура #облачные_сервисы #сотовая_связь #wordle #разработка #логические_игры #разработка_игр #игры_и_консоли #игры_и_игровые_приставки

Share on Mastodon

Enter the server where you have an account.