Игры
Hyakkimaru
9547

Что погубило Yandere Simulator?

Почему амбициозному проекту не удастся дожить до релиза.

В закладки
Слушать

Разработка Yandere Simulator началась в 2014 году. Молодой разработчик Алекс Майер (болен известный как YandereDev) разгорелся желанием стать инди-разработчиком. Вдохновившись своим увлечением аниме, Алекс выкатывает публике шуточную игру, в которой игроку дают возможность поиграть за стереотипную яндере. Идея игры понравилась многим анонимам 4chan, и впоследствии Yandere Simulator перерос в амбициозный проект, обласканный вниманием известных летсплееров.

Прошло 5 лет, и игра так и не смогла выйти из стадии разработки. Многие фанаты были недовольны не только адом разработки, сколько поведением самого Алекса. Стало известно, что YandereDev постоянно банил своих поклонников в своём Дискорде по самым пустяковым причинам. После многочисленных жалоб фанатов YandrereDev ответил им письмом, в котором говорилось о якобы мучавшей его депрессии. Однако это не вызвало у аудитории сочувствия, а напротив, лишь подливало масло в огонь ненависти. В конце концов хакеры смогли взломать его аккаунт и забрать его личные данные, включая исходный код игры. Сам вид кода игры вызвал у многих людей (оссобенно программистов) недоумение. Ведь код был ужасно написан. И с этого момента YandereDev запомнился людям как пример худшего инди-разработчика в истории.

Ссылку на письмо я оставлю тут:

Русскоязычная версия:

О Симуляторе Яндере я узнал где-то в 2016 году. Меня игра сильно привлекала инновационным геймплеем. Читая вики по игре и просмотрев летсплеи, я начал верить, что когда-нибудь эта игра дойдёт до релиза. Я не успел в неё поиграть из-за нехватки времени. И поэтому я через какое-то время забыл об игре. Вернувшись к ней в 2020 году, меня поджидал упомянутый выше неприятный сюрприз. 5 лет. За это время многие фанатевшие школьники успели окончить школу, а некоторые и вовсе вступили во взрослую жизнь. И на протяжении этих лет в игровой индустрии произошло много событий. А Ubisoft за этот срок выпустила несколько игр серии Assassin’s Creed. А у Yandere Similator до сих пор нет Осаны (первой соперницы).

Так почему же игра со столь амбициозным идеями стала провалом?

Во-первых, виноват в этом сам разработчик игры. У Алекса напрочь отсутствует профессионализм. Несмотря на 3 года опыта работы в неназванной калифорнийской студии (хотя вполне вероятно что он нигде и не работал), Алекс оказался очень бездарным программистом. Чтобы убедиться в этом, достаточно просто запустить самую современную версию игры. Даже на мощном компьютере игра едва выдаёт 30 кадров в секунду. Вся игра изобилует багами.

Если верить слухам, многие ассеты игры были не позаимствованы, а стырены у энтузиастов. Люди начали жаловаться Алексу за то, что она воровал модели без их разрешения. Но даже если YandereDev сам делал многие ассеты, то это не отменяет факта о низком качестве игры. Потому что все ассеты выглядят просто ужасно. Графика у Yandere Simulator находится где-то на уровне игр с PS2, и во многом уступает даже любительским моделькам для Miku Miku Dance.

Просто сравнение Yandere Simulator с созданной мною за минуту сценой в MMD. Я использовал бесплатные модели из DeviantArt, доступные каждому желающему. Обратите внимание, что я не использовал шейдеры RayCast и NCHLshaders.

Но гораздо хуже выглядит весь нераскрытый потенциал. На черновике Yandere Simulator должен стать прорывной игрой, способной утереть нос любой ААА-игре. Но на практике все куда плачевнее. По ощущению Yandere Simulator больше напоминает на дешёвую пародию на Garry’s Mod. Поскольку в игре нету ни одной соперницы, игроку ничего не остаётся делать, как развлечь себя, издеваясь над плохо проработанными NPC. Сперва это может показаться весёлым, но со временем эта песочница насинант быстро надоедать. Это не игра вовсе, а всего-то технодемка, в которую можно разок поиграть и забыть.

Отдельного упоминания заслуживают пасхальные яйца, коих в игре очень много. Складывается ощущение, что YandereDev вкладывает больше сил и старания на пасхалки, чем на саму игру. Большинство пасхалок активируются с помощью читов. В основном они превращают главную героиню в персонажа известного аниме или видеоигры. А некоторые пасхалки и вовсе превращают игру в наркоманскую кашу. Например, Titan Mode, который превращает всех NPC в голых великанов (отсылка на сами знаете какое аниме). Но беда в том, что YandereDev больше отвлекается на ненужные для игры вещи, а не на проработку основного геймплея.

Одна из дешёвых и никому не нужных "пасхалок". Аяно Аиши превращается в нелепую модельку Санса из Undertale и устраивает в школе "Bad Time".

Ещё одной проблемой Yandere Simulator является её чрезмерго огромный для инди-разработчика масштаб. Чтобы создать подобную игру, необходима целая игровая студия, состоящая из 15 человек как минимум, а то и больше. Такие игры как Dead Cells, Blasphemous и SOMA разрабатывались подобными студиями. И в этих же студиях работают профессиональные разработчики, которых не стыдно нанять в любую крупную компанию.

Я помню, что разработчик Baba is You испытывал тяжёлые проблемы со здоровьем, когда он создавал игру в одиночестве. От Тоби Фокса нет никаких вестей по поводу Deltarune. А разработчики Cuphead успели заложить свои дома. Иначе говоря, разработка игры в одиночку приводит к большим переработкам и проблемам в личной жизни, что приводит в итоге к производственному аду.

YandereDev собственной персоной и его "Cum Chalice"

Но что же мешало Алексу создать себе команду разработчиков? Ведь немало талантливых людей протягивали ему руку помощи. А виноват во всём его противный характер. Многие бывшие фанаты видят в Алексе образ типичного аниме-задрота из 4chan/reddit, и они недалеки от истины. Стало известно, что YandereDev очень часто проводит время на стриме любимых игр и клепанием мемасов вместо того, чтобы докончить разработку игры. Он очень безоответственно относится к своей работе. И он неадекватно относится к критике. Программисты и волонтёры довольно часто жаловались на код игры и нежеланием YandereDev его переписывать. И как итог, его же эгоцентризм сыграл с ним злую шутку. Я считаю, что каждый разработчик должен уметь хорошо ладить отношения как с игроками, так и с его коллегами. И только благодаря грамотному умению налаживать хорошие отоошения с другими людьми можно получить огромную поддержку. Соглашусь, что это трудная задача, поскольку это требует от человека психического саморазвития, но результат будет впечатляющим.

И таким образом, Yandere Simulator так и не доберётся до стадии релиза, несмотря на весь потенциал. На месте YandereDev я бы для начала набрал себе команду разработчиков и сконцентрировался на создание основной части игры, а уж потом я длбавил прочие свистелки и перделки. Если не удастся запихнуть весь контент в игру, то что де мешает разработчику добавить контент по-позже в виде обновлений и DLC? Если кто и сумеет сделать хоть какое-то подобие Yandere Simulator, то только игровая студия, состоящая из профессиональных и ответственных людей. Эта станет ярким примером того, что даже инди-разработчики способны на самые недобросовестные поступки. Поэтому я желаю вам играть только в хорошие игры и будете здоровы.

P.S. Заодно извиняюсь за отпечатки. Я писал текст ночью на телефоне.

{ "author_name": "Hyakkimaru", "author_type": "self", "tags": [], "comments": 202, "likes": 84, "favorites": 80, "is_advertisement": false, "subsite_label": "games", "id": 183961, "is_wide": false, "is_ugc": true, "date": "Wed, 05 Aug 2020 11:10:26 +0300", "is_special": false }
Объявление на DTF
0
202 комментария
Популярные
По порядку
Написать комментарий...

Свободный Даниль

107

Там реально был потенциал?
Мне всегда казалось, что это просто мемная игра.
И судя по всяким новостям, разраб был просто неудачником с двача, который хайпанул и слился.

Ответить
38

Просто зачем делать игру, если ты можешь каждый месяц забирать по 2-4к c патрона.

Особенно если ты быдло-кодер с огромным эго. 

Ответить

Свободный Даниль

Layben
3

Я вообще фигею, как на патреоне куча мудаков, которые делают минимум и получают нормально с подписчиков.

Ответить
60

Вот только сейчас похоже кислород ему перекрывают. Другая команда за месяц смогла с нуля сделать игру с такой же концепцией. 

Его на столько порвало, что он связался с ними и пригрозил им, что он покончит с собой, если они не удалят игру или не выпустят официальное заявление, что их игра хуже его. 

Ответить
16

Опа опа, а можно название игры или ссылку? очень интересно глянуть.

Ответить
6

LoveSick.

Позднее он пожаловался, что Yandere Simulator хотел переименовать именно в LoveSick.
Разрабы новой игры могли бы послать его в пешее, но переименовали игру в
Love Letter

@NastPsych  , и тебе ответ

Ответить
1

прогуглил оба названия - первое это браузерка какая-то, вторая это карточная игра, так и не нашел ничего такого :(

Ответить
5

Поддерживаю, хотя бы название напишите.

Ответить

Свободный Даниль

Layben
8

Я бы доделал игру и кайфанул, если ебанутый бы себя убил.

Ответить

Вторичный Мика

Свободн…
19

Её и доделывают не смотря на эти странные угрозы

Ответить

Восточный

Вторичн…
11

не смотря

Может наоборот вдохновились

Ответить
14

Он не тот человек, который бы убил себя, он слишком любит себя. Это были просто пустые угрозы и взятие "на понт". Которые кстати, по законам США, можно расценивать как шантаж и угрозу. Жаль только они не захотели отдавать переписку властям, были все шансы на полный успех. 

Ответить
11

Офигеть ему башню рвет. Это как же должна была корона веры в свою исключительность срастись с черепушкой, чтобы такое сказануть?

Ответить

Вторичный Мика

Layben
9
Ответить

Смешанный танк88

Layben
5

он связался с ними и пригрозил им, что он покончит с собой, если они не удалят игру или не выпустят официальное заявление, что их игра хуже его

Земля металлом.

Ответить
1

смогла с нуля

Они, вроде бы, изначально использовали слитый в сеть исходник яндерки.

Ответить
4

Это был вброс от поглотителя "молочка". И если уж на то пошло, то почти вся его игра состоит из сделанных не им ассетов. 

Разработка началась задолго до слива. После того как анон с 4chan поспорил, что он сможет сделать игру быстрее чем Yandere Dev. 

Ответить
2

Можно ссылку на эту историю? Интересно почитать, из-за чего такая драма и что там делают

Ответить
1

лооол. да кому не похер, че он там с собой сделает)) 

Ответить
1

А ещё он с твичом ссорился часто. Его игру там забанили

Ответить
2

Это нормально. Список игр, что нельзя стримить на Твиче весьма длиннен.

Ответить
0

За две недели вроде.

Ответить
0

Так не с нуля а на его слитом билде с гита. Они её исправляют и полируют.

Ответить
0

Я думаю, всем будет только лучше от этого (только и может, что желчью кидаться, урод; за такое естественный отбор уже должен быть)

Ответить
0

Вот чисто вопрос и тебе, и Вячеславу. Вы так говорите про Lovesick/Love Letter, как будто у вас на руках есть демка и вам есть что сравнивать. Я на канале LL вижу лишь пару видосиков, которые вообще никак не отражают готовность проекта. Фичи все те же, что сейчас в YanSim, опять же судя по видосам. Интерфейс изменить легко. Так с чего вы взяли, что те ребята сделали все сами, а не скомуниздили у yan dev'а? короче совсем не могу понять поведение этих (вас) людей.

Ответить
0

Ты просто завидуешь что ты не один из них

Ответить

Свободный Даниль

Dozaemon
6

Если бы я умел рисовать жирных фурей, в памперсах, то заработал бы миллионы.

Ответить
1

Научись, будешь потом донатить дтферам будешь

Ответить
5

Мне кажется, от потенциала дело не зависит. Просто хлебный патреон никак не стимулирует людей к окончанию разработки.

Как та порно-игра про ферму, которая тоже развалилась, хотя могли нанять компетентных разработчиков и всё доделать.

Ответить
2

Там реально был потенциал? Мне всегда казалось, что это просто мемная игра.

Потому с ним контачили те кто любит такой потенциал, TinyBuild 

Ответить
4
Ответить
43

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

Ответить
9

Тут доеб скорее в том, что за 6 лет он так ничему и не научился. Даже не попытался исправить. И если я правильно прочитал код игры из здешних видосов, у него даже костылей для отмазы нет, т.к. их ставить тупа некуда. Все решается простым прочтением книжки-обучалки про Unity, что уже позволит увеличить производительность игры в пару-тройку раз.
Но мы этого не делаем, не гоже бояринам такими мелочами заниматься. Две тыщи долларов в месяц капает, можно и болт забить на хоть какое-то саморазвитие. 

Ответить
3

Я смотрел видос с полным анализом кода
Код нормальный. Тем более, в последние месяцы он кардинально улучшается, ему помогают несколько волонтёров-профессиональных программистов.
Основная проблема в студентах: их больше сотни, всех их нужно отрисовывать на экране и анимировать, постоянно просчитывать им физику, логику, взаимодействия друг с другом. Каждая модель ещё дважды отрисовывается, потому что отдельно рисуется модель, отдельно контур. Эта техника известна и популярна, но в игре, где нужно рисовать контуры сотне студентов на пару десятков тысяч точек каждый, это не работает.
Одной книжки для написания такой сложной нагруженной системы недостаточно

Ответить
1

Хорошо, соглашусь с тобой. Я не прав, в большинстве аспектов. И я рад, что наша Зена - Королева Молочных Кубков спустя черт знает, сколько лет оклемалась и собрала какую-никакую команду разработки.
Но все-равно тяжело просто так взять и забыть все предыдущие года разработки Шредингера и тогдашних конкретных проебов сколько не в коде (он был не плохой, он был слишком сильно перегружен на пустом месте, именно об этом я говорил, приводя пример с учебником по Unity, в которых показывали, как такие проблемы решаются), столько в других аспектах, начиная Водевилем со стоковыми моделями и неумением их подгонять под единый стандарт в игре (вряд ли во всей игре полностью бы набралось столько полигонов, сколько было в той зубной щетке) и заканчивая просто ублюдским отношением YandereDev с аудиторией. 
Буду рад полагать, что разработка увидит когда-нибудь релиз и разраб перестанет быть таким ЧСВ муденем с Манией величия, хотя во второе верится слабо.

Ответить
6

Поэтому надо таким людям работать с кем-то творческим, чтобы был кто-то следящий не только за кодом

Ответить
0

многие одиночки это совмещают

Ответить
2

Это все равно трудно

Ответить
6

Инди разрабов, которые начинают и не доделывают вообще полно, что уж говорить про красоту и правильность кода. Просто единицы становятся "популярными", а именно это и привлекает внимание к тебе и твоему коду (тексту/арту/подчеркни нужное). На таких явно не стоит равнятся (благо есть и хорошие примеры), но и в целом обращать на него внимание не нужно, по сути что хочет то и делает, кому он навредил то)

Ответить
4

Так то да, но проблема была в том, что когда Tiny Builds протянула ему лапку помощи и он хвастался что ему будут помогать специальные люди, исправляющие его код, а спустя некоторое время он сказал что с TB у него не срослось, то всплыл тот факт что он их поматросил и бросил, в итоге он торчит какую-то сумму им, а ситуация с кодом никак не исправилась.

И вообще, я конечно не программист, но даже на мой непрофессиональный взгляд с его кодом что-то не так.

Ответить
0

Ну, например Yahtzee до недавнего времени циклами пользоваться не умел. Он сделал больше игр чем я. Сильно больше.

Ответить
1

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

Ответить
30

Комментарий удален по просьбе пользователя

Ответить
–8

Ты про себя?

Ответить
16

Комментарий удален по просьбе пользователя

Ответить
3

I feel ya bruh, правда на полшишечки ибо не могу заставить себя учиться

Ответить
2

Комментарий удален по просьбе пользователя

Ответить
3

Я вот примерно год назад задавал вопрос по поводу того где я могу обучиться С#
Окей, мне ВСЁ дали, я скачал уроки, они массивные, интересные, но меня хватило на неделю, я просто забил, не без причины, работа однако, но выглядит это довольно таки как оправдание :с

Ответить
7

Я так пытался вкатиться в 3д моделирование 

Ответить
0

Неплохо) 

Ответить
1

Блять, да заткнитесь вы(
Уже пол года не могу себя заставить перекатиться из нихуя не оплачиваемый сферы схемотехники хотя бы в ненавистный вэб

Ответить
0

Ясно. Это было не самобичевание, а всего лишь ложная скромность. 

Ответить
0

Комментарий удален по просьбе пользователя

Ответить
1

Не воспринимают всерьёз из-за аниме на аве :)
А вообще - попробуй собеситься во много разных контор. Сильно зависит от конкретных хр\сео\собеседующих.

Ответить
2

Видимо я тоже один из вас, но у меня хотя бы есть "портфолио" из игор для рпг мукера

Ответить
1

Ты не один, бро.

Ответить

Совместный Никита

29

Что погубило Yandere Simulator?

Тоже самое что и великое множество других проектов из "раннего доступа": сделать демку накидав моделек сейчас может даже ленивый школьник, потому что по базовому функционалу (ходьба, двери и пр) есть множество готовых решений и туториалов. 

А вот что бы оптимизировать игру, написать AI, нестандартные решения и прочее, что является обязательным атрибутом любой качественной игры, нужны уже реальные профессиональные навыки. Но с годами разработки интерес падает, и вместо того что бы "утопить педаль в пол" разработка банально сливается.

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

Ответить
3

Именно. Наверняка поэтому многие инди-игры двухмерны и обладают простеньким геймплеем. Так проще программировать.

Ответить
6

нет, не проще, а иногда сложнее. 2д это всего лишь частный случай 3д

Наверное вы имели в виду относительно простые жанры где действие происходит в одной плоскости (платформеры, визуальные новеллы и т д). 

Ответить
22

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

Ответить
11

Сириосли? Зубная щётка в 5тыщ полигонов в ЯндереСимуляторе?

Ответить
22

По заветом архатов и патриархов.

Ответить
2

3:55

Ответить
0

С зубной щётки проорал.

Ответить
1

В отличие от другого Алекса (тот, что Холовка), многие будут только рады его кончине.

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

Серьёзно!?

Ответить
9

Серьезно. Самый большой файл во всей игре.

Ответить
7

Ну так это щётка семпая. Естественно там надо вбахать дофига полигонов.

Ответить
4

Зато он охуенно поет, завидуй!

Ответить
5

Ого, я думал он только dame da ne петь умеет 

Ответить
23

Вычитку перед тем как выкладывать статью сложно было провести?

Ответить
0

Писал на телефоне. Но подкоректиоую.

Ответить
–6

Эй, это не повод ставить мне дизлайки. У меня просто в тот момент не было времени сесть на компьютер.

Ответить
8

Тебя кто-то торопил? 

Ответить
6

А с телефона нельзя?

Ответить
–5

Я конечно только недавно начал изучать программирование на HTML, но даже для меня, новичка, код выглядит просто ужасно.

Ответить
37

Но HTML это не язык программирования...

Ответить
4

А ты понимаешь что в этом коде написано?

Ответить
–27

Не совсем, но выглядит как работа бездаря.

Ответить

Географический пришелец

Hyakkimaru
9

Плохо бросаться такими обвинениями, если не понимаете, в чём дело.
Иногда(!) даже самый отстойный код оправдан. 

Ответить
2

А здесь в нем есть оправдание? У меня довольно-таки паршивые знания в Unity, ввиду малого опыта работы с ним, но как бы даже то, что я увидел своим дилетантским взглядом,  можно смело назвать страшным сном любого учителя информатики.

Ответить
0

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

https://github.com/0xd4d/dnSpy

Ответить
4

Это не так работает. В шарпе все описания классов и методов лежат в манифесте, и никуда они оттуда не деваются. Т.е. если код написан адекватно, с разделением на классы, с нормальным размеров методов, с использованием нормальных конструкций, после декомпиляции он будет выглядеть на 95% точно так же, даже все названия классов, методов и свойств остаются как были (что, кстати, видно и на видосе). Какие-то мелочи могут быть переделаны на аналоги, но трехэтажные лестницы ифов как результат декомпиляции не появляются.
Код этого товарища это не просто говнокод, я даже не знаю с чем его сравнить, это хтонический ужас с другой планеты, здоровый человек не может так код писать. В коммерции его уволили бы в первый же час.

Ответить
0

 после декомпиляции он будет выглядеть на 95% точно так же

Только Hello World. 

Декомпиляторы даже на простых вещах могут невалидный код вернуть
https://stackoverflow.com/questions/28781839/why-does-the-c-sharp-compiler-translate-this-comparison-as-if-it-were-a-com
Ну просто потому что IL не тоже самое, что и C#. Сохраненные метаданные будут зависть от типа сборки, а уж во что превратятся итоговые конструкции, тут уж много от чего зависит. 

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

Можете сравнить с кодом других игр на Steam из которых процентов 70 написано на C# и которые являются коммерческими продукты. Многократное вложение if вообще самое часто встречающееся, а херачить все в Root Namespace - походу норма. Могу показать результаты декомпиляции где декомпилятор вываливает switch на несколько тысяч вариантов, lol. 

Но насколько результат декомпиляции близок к истине, это ещё бабушка на двое скахала. Но коммутатор на пару сотен значений Вы можете найти, например, и в сырцах пакетов для Unity от Unity Technologies, вот самый простой пример:
https://github.com/Unity-Technologies/2d-extras/blob/master/Runtime/Tiles/TerrainTile/TerrainTile.cs
Замечу еще, что это все же открытый код, над внешнем видом которого все же поработали. А вот как раз в коммерческом коде, который никто не видит, но он отлично работает и это всех устраивает, может вообще что угодно оказаться, платят же не за какую-то субъективную красоту, а за работающий продукт. 

 В коммерции его уволили бы в первый же час.

Я бы не был бы таким уверенным:
https://habr.com/ru/company/analogbytes/blog/510512/

А вот евангелист от Майкрософт учит как ковырять в носу:
https://stackoverflow.com/questions/36887236/c-sharp-parse-text-qualified-file-into-separate-strings/36888673#36888673

И я если честно затрудняюсь сказать, что выглядит страшнее. 

 это хтонический ужас с другой планеты, здоровый человек не может так код писать

Хз, просто много ветвлений, ниче особенного. Весь вопрос только в том, насколько это оправданно, но в видосе только ржут, никакого разбора нет и особо ничего не показывают. Нет разбора => нет предмета обсуждения. 

В другом видео его код разбирают и там уже несколько другие проблемы, далеко не в if'ах

Ответить
0

Вот кстати пример, одной из игр.
Вложенные if в комплекте.
Переменные, num1, num2 и num3, которые можно было бы назвать как dx, dy, dz, тоже вот прилагаются.
Вторые условия для каждого из трех num-ов типа 
else if ((double) num1 > (double) this.m_RCSThrustAccelerationRate) 
никогда не достижимо, выполняется либо первое (где if), либо вообще ничего (где else). Возможно там когда-то была какая-то хитрая геймплейная задумка, которую в итоге пришлось выпилить из релиза, но вообще в коде этой игры много таких хвостов.
Разрабы были не лыком шиты, поэтому запрятали другие вложенные if'ы в 3 функции ThrustX, ThrustY, ThrustZ, которые совпадают между собой более чем на 99% При этом все эти 4 функции разом выполняют примерно тоже самое, что и делает Seek Behavior, который можно в 10 строчек заговнокодить: 
https://gamedevelopment.tutsplus.com/tutorials/understanding-steering-behaviors-seek--gamedev-849 
Но 200k игрокам на самом деле срать на это, они же игру покупают не для того чтобы код под микроскопом разглядывать, а чтоб играть. Я не буду говорить что это за игра, вообще подглядывать за другими нехорошо, но могу сказать, что разработчики всего этого - ветераны индустрии, все до этого делали ААА-игры (и продолжают), работали (и продолжают) в FAANG ну и т.д., но код у них выглядит как пиздец.
Зато этот код работает, а игра продается, даже DLC было и имеет больше 80% положительных отзывов в Стиме. Наверное можно было более оптимально переписать игру, но зачем? Я так понимаю это был у них такой сайд-проект для души - играется бодренько, и за все время, только один раз был случай, когда вылетел с критической ошибкой и предложившей немного подебажить...ну ок, давайте подебажим, а там внутри...звездец, но проблема оказалась не в игре - разработчики драйверов для видеокарт тоже вот, бывает косячат. 

А на другой картинке уже пример из другой игры: switch на 10 тысяч строк, слабо так сделать? ;-) Причем там не просто свитч, а свитч со вложенными свитчами, внутри которых вложены еще и if'ы, а еще там есть goto ;-)
Но тут уже скорее всего просто декомпилятор тупой: либо не смог осилить Control Flow Flattening обфусификатор (херня, господа, пользуйте dotNET Reactor или VMProtect), либо же тупо не раскурил конечный автомат со словариком (такое вот тоже бывает). 

Ну а самый мой любимый пример говнокодинга, это вот, прям бери и клади в палату мер и весов:
https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/util/Stack.html
шел 2020 год, а Stack в Java до сих пор от Vector наследуется...

Выводы таковы:
1. Код чувака - героя этой темы - тупо взломан декомпилятором, вероятно dnSpy
2. Рассуждать над красотой декомпилированного кода, ну это такое себе. Только самый простой С# код вытащенный из дебажной сборки будет похож на оригинал, да и то не всегда, в остальных случаях это как гадание не кофейной гуще, а декомпиляторы все же для другого предназначены.
3. Говнокодят все и везде, в компании любого размера, и код этого чувака выглядит не страшнее, чем код коммерческих продуктов, код того же Pathfinder в момент выпуска выглядел не сильно лучше - масштабы говнокода обратно пропорциональны числу разрабочиков и прямо пропорционально объему работу: небольшая группа вечнокранчащих разработчиков, тут даже к гадалке не ходи, говнокодить будет в гигантских масштабах. А если еще и Agile-евангелиста на помощь позвать, то говнокодить будут вообще в промышленных масштабах. Задним-то умом все сильны, а как доходит дело до продакшена...
4. Декомпильнуть чужой C# код, чтобы выложить видос с мельтешащим кодом, где нифига не понятно, зато под эксклюзивный Original Sound Track - сольную песню "Смех гиены" -  ну какое-то совсем школотронство. Второе видео уже куда более конструктивное.
5. Возможно, YandereDev мудак, но это не отменяет всего вышесказанного.

Ответить
2

Очень может быть. Но неужели такая адовая перегрузка else if - это результат декомпиляции? Сомневаюсь.
Да и без программного кода у него провалов по матчасти хватает с лихвой. Люди здесь уже вспоминали зубную щётку со стока из 5000 полигонов, которую этот вумник без раздумий вставил в игру.

Ответить
2

А это уже зависит от того, что из метаданных попадает в сборку, как компилятор оптимизирует и как у декомпилятора получиться это потом все обратно представить.
Иногда декомпиляторы с совсем тривиальными задачами справяться не могут
https://stackoverflow.com/questions/29967990/dotpeek-not-proper-deserialize-dll
Порой на выходе может вообще нечитаемая каша получиться, особенно если автор кода - лошадь, а лошади как известно любят синтаксический сахар. 
Но простой код обычно возвращается в том виде в котором был. 

 Но неужели такая адовая перегрузка else if

Просто много ветвлений.

Вы если откройте какой-нибудь 2D Extras, то увидите там свтичи на 256 значений
https://github.com/Unity-Technologies/2d-extras/blob/master/Runtime/Tiles/TerrainTile/TerrainTile.cs
Ну синтаксически это на самом деле ровно тоже самое, что и 256 штук if-elseif-else, и в режиме отладки switch часто представляется в IL точно так же как и if-конструкции. Но уже в релизной версии switch будет преобразован в таблицу переходов и это будет работать очень эффективно.
А вот с if-elseif-if - тут уж как повезёт, если число ветвлений не велико, то так и оставит. Но вот если количество условий окажется большим (сотни if), то компилятор создаст HashTable, заполнит его строковыми константами и выполнит поиск с переходом по этой таблице. Лучше конечно, если программист сам додумается до такого. Но я вот свитчами вообще никогда не пользуюсь - там где они проклевываются у меня конечные автоматы и таблицы переходов. 

Но реально, число if-elseif-else и свитчей - вообще нифига не показатель. А вот что реально важно, так это обоснованность таких ветвлений и как они вообще расположены. Один IF или SWITCH легко может разрушить любой параллелизм и там уже пофиг будет 2 перехода или 100500 вариантов. 

 Люди здесь уже вспоминали зубную щётку со стока из 5000 полигонов, которую этот вумник без раздумий вставил в игру.

Я если честно вообще хз, для каких целей в игре может потребоваться зубная щётка, но подрезать полигоны нетривиальная задача. Сделать самолетик на 5000 полигонов сильно сложнее чем на 50000. И такие вещи делаются последовательно.

Обычное размеры следующие:
1) если персонажи, то как правило от 10 и до 100 тыщ. на PC, PS&XBOX, и 1000-10000 для мобильных игр
2) прочие игровые элементы: от 1000 и до 20000 для PC (и т.д.) и 100-2000 для мобильных. 

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

Просто что бы Вы понимали, в Форзе 4 одна LOD0 модель имеет от 500 тыщ и до 1 млн. полигонов, но естественно одна динамически детализируется, там не меньше 5 LOD'ов для каждой модельке. 
Для симуляторов обычно модели делают очень деиализированные. А вот для сетевых дрочильн модели уже заметно меньше, например, в Овердроче типичные персонажи имеют по 15-60 тыщ полигонов. 
Тут же надо смотреть по вычислительному бюджету, но 
Dead Rising еще 10+ лет назад в выдавал до 4 миллионов полигонов в кадре и это далеко не рекорд, была такая игр на PS3, Lair - там некоторые кат-сцены содержали более 100 млн. полигонов. 
Прикол еще и в том, что некоторые game props'ы действительно очень часто оказываются более детализированными чем, например, главный персонаж :-) 
Ну потому что они там попадут пару раз в кадр за всю игру и упарываться над ними нет никакого смысла. А вот над чем реально нужно работать, так это над тем, что постоянно будет в кадр попадать. В Devil May Cry 4 - самую низкую детализацию имеет именно Данте, все остальные персонажи и некоторые объекты заметно толще (некоторые в несколько раз). 
Но полигоны же это еще не все, детализация разных текстур, AO и т.д.

Ответить
0

Я если честно вообще хз, для каких целей в игре может потребоваться зубная щётка,

У нее (персонажа игры) - утащенная зубная щетка предмета ее воздыханий, судя по видео.
Подсчет affectionlevel через if else (вместо одной формулы с целочисленным делением - тоже звоночек. Там в одном из видео эта офигительная вещь видна.

Ответить
1

У нее (персонажа игры) - утащенная зубная щетка предмета ее воздыханий, судя по видео.

Хм...ну тогда на такую и все 50 тыщ полигонов не жалко будет :-)
Можно даже прикрутить какую-нибудь технологию по типу NVIDIA HairWorks, чтоб еще и щетинки совсем офигенно и реалистично выглядели :-)

 Подсчет affectionlevel через if else (вместо одной формулы с целочисленным делением - тоже звоночек. Там в одном из видео эта офигительная вещь видна.

А как оно выглядит?
Ну не все в % умеют, такое бывает, lol
Но тут еще могла быть гениальная задумка, типа сделать неравномерную шкалу эффектов...а потом на неё забить, lol

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

https://dtf.ru/games/183961-chto-pogubilo-yandere-simulator?comment=6281004

Ответить
0

Сейчас попробую найти affection, но вот пример:
Я бы даже не свитч бы делал, я бы сделал массив констант и свернулось бы вся эта херня в одну строчку. Главное нормально задокументировать у себя в блокноте. Но я начинал программировать на 286, там за каждый такт приходилось драться и воевать со страницами видеопамяти, чтобы быстро отрисовывать интерфейс.

Ответить
2

Чувак просто это делал спецом или не хотел дальше изучать программирование. Думаю это его первый язык и кроме пару курсов по юнити он ничего не читал за всё это время. Зря набрасываешься. Всё же люди идут в программирование не ради программирования. 

Ответить
0

else if

Ответить
0

Это примерно как в 9 у нас классе учат программировать. Ужас. 

Ответить
8

А я это хотел запостить

Ответить
6

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

Ответить
1

Прикол в том, что любой адекватный учитель информатики (а конкретно программирование) должен перекрывать кислород подобным "кодерам", обучая программированию без лишних массивов, перегружающих и беспощадных к системе, чуть ли не сразу же, когда ты начинаешь делать программы выше "hello. world", даже если ты занимаешься на гребаном Python.
А если учитывать, что YandereDev за столько лет сделал примерно нихуя (серьезно, почти 6 прошло, хоть что-нибудь критично изменилось?) и не удосужился переделать код хоть как-нибудь, то и о пощаде идти речь не может.
А ведь люди ему за это деньги платят немалые. 

Ответить

Обратный франт

DarkMessiah
3

ЕМНИП, то, что в этом видео - это продукт, полученный декомпиляцией билда, а не сырые исходники. Поэтому такая каша. Впрочем, не знаю наверняка, так это или нет, так как сам не разбирался.

Ответить
2

Это сырцы же. Там же утекли исходники как раз. Там даже красивое форматирование в паре мест - где цвет глаз определяется.

Ответить
2

Исходники говорите текут? И часто ли Вы указывайте в комментах токены метаданных для каждой ссылки?
Token, RID, RVA, File Offset...
Может чувак на самом деле огого какой кодер - сразу херачит код в IL...взглядом, а билдит в уме и без компа? lol
Это все результат работы декомпилятора, по типу dotPeek или там dnSpy
https://github.com/0xd4d/dnSpy

Ответить
1

Красивые комментики и форматирование декомпилятор тоже расставил?
Не знаю, я конечно больше с дизассемблерами работал и прочим ReFox (для досявого фокспро), но если сегодняшняя наука дошла до такого - то Скайнет уже не нужен, у нас наступил полный H+.
Сейчас полный код попытаюсь найти.

Ответить
0

А комменты выпиливаются только из релизной сборки. И то не все, xml-комментарии конечно же останутся.
 
Это же C#, если разработчик сам не озаботиться, то все метаданные будут свалены в сборку.
 
Но вот этот скрин, что Вы скинули, он уже не из видео. 

Ответить
2

4к в месяц? Да он же мог нанять команду индусов и они бы ему уже давно наклепали что-то играбельное

Ответить

Вторичный Мика

SuxoiKorm
1

Последние 2 года, сумма не превышает 2000

Ответить
8

2к с куста за ни за что. Да что б мне так жить!

Ответить
3

Эти 2к могут превратиться в тыкву в один прекрасный момент. И судя по всему этот момент не за горами.
Бонусом к этим 2к идёт репутация быдлокодера и пиздабола на весь интернет. Ты точно хочешь так жить?

Ответить
3

Ну за 2к зелени в месяц я бы не отказался, наверное. Другое дело, что, прийти к такому успеху мне бы тупо не позволила совесть.

Ответить
0

Он бы у меня прошел код ревью))) 

Ответить
12

На черновике Yandere Simulator должен стать прорывной игрой, способной утереть нос любой ААА-игре

Так можно к каждой инди игре приплести, вот на черновике то игра тысячелетия ухх, но реальность сурова.

Ответить
11

Зачем выкладывать статью с ошибкой в каждом четвертом слове? В туннель въезжал? По ощущениям автор 6 класс не закончил. 

Ответить
1

Пишу с телефона. У меня в тот момент не было доступа к компьютеру. Блядь, ещё пальцы у меня огромные.

Ответить

Цивилизованный цветок

Hyakkimaru
5

Пишу с телефона.

Вот это, я понимаю, творческий зуд :)))

Ответить
7

Скорее графоманский зуд

Ответить
9

Статья такая себе, а вот видосики с кодревью в комменты интересные накидали. Код, конечно, стилистически плохо написан, однако функционально вроде ничего сверх ужасного не увидел. Хотя, возможно, я просто быдлокодер. Ну а хули нам, пошаговым 2Dшникам? Он нам и нахуй ненужон, Update ваш. В общем, как время будет, изучу видосики, может чего интересного узнаю. Да и вообще, раньше не задумывался и не знал, что кто-то кодревью делает, для меня это что-то новенькое.

Ответить
1

Он там делает 8 вложенных if чтобы подсчитать то, что можно сделать одной формулой. Формулой affectionlevel := affection DIV 25. Потом сделать If affectionlevel > 5 Then affectiolevel := 5; (сорри за Паскаль, я на него дефолчусь). Плюс я не увидел ни одного цикла в кусках что показывают. Это пиздец, товарищи. Там большая часть его херни сворачивается циклами в пару строчек.

Ответить
2

Пришёл с работы, посмотрел чуть внимательней. Ну, да, местами откровенно плохо написано, да и мусора многовато. Как можно продолжать так писать после 4 лет разработчик в соло — загадка. Хотя, честно говоря, я ещё 2 года назад, когда пытался создать свою супер-пупер эпик 3д экшн эрпэгэ с нонтагрет боёвкой и открытым миром, писал примерно так же и даже хуже. КЕК Правда почему-то у меня фпс в говно не скатывался, несмотря на ещё большие зашквары, нежели у автора сего шедевра. Это, наверное, нужно как-то особо постараться, чтобы убить фпс... В общем, чувак типикал недоразраб, который сразу взялся за масштабный проект и не вывез, при этом по ходу разработки ещё и скиллы/качество кода не подтянул, зато успел срубить лёгких денег. Ха-ха, классик для индустрии.

Ответить
0

 Как можно продолжать так писать после 4 лет разработчик в соло — загадка.

Да как раз таки если разрабатывать в соло, наиболее вероятно что все скатиться в говнокод, инфа 145%
Ну а хули, никто же не прочитает. Работает, ну и хрен бы с ним. 

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

На мой взгляд нужно хотя бы что бы человека работало над игрой и лазило друг к другу в код. Люди от одиночества вообще с ума сходят. 

ФПС убить тоже вот не сложно, эт наверное самое простое чего вообще можно сделать. Там правда есть несколько путей. Один, понятное дело через C#, в общем-то даже такая казалось бы безобидная штука, как виртуальное наследование приводит к падению производительности, пока объектов мало, вроде бы и не заметно, а вот когда много, а еще и иерархия виртуального наследования глубокая...уууу...ну а хули - это же кэш-промах на ровном месте. Это вот только один пример. К слову сказать if тоже далеко не бесплатный, одна такая проверочка обходится как попытка поделить чего-нибудь на что-нибудь, а это недешево вообще-то. Иногда это очень нетривиально написать быстрый код, вот медленный код - ваще не проблема, как два пальца...
Вот, зацените, например, реализацию Vector2 в System.Numerics
https://github.com/dotnet/runtime/blob/6072e4d3a7a2a1493f514cdf4be75a3d56580e84/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector2.cs
все агрессивно заинлайнено и все в инстриксах
https://github.com/dotnet/runtime/blob/6072e4d3a7a2a1493f514cdf4be75a3d56580e84/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector2_Intrinsics.cs
И все это явно не с проста... 

Другой путь - через графоний. Тут уж я не знаю че у него с шейдерами, но если он так любит if'ы то вероятно с шейдерами будет вообще ж0па полная. Но даже если не лезть глубоко в HLSL, то всегда можно обмазываться десятками материалов на каждую сранную модельку и к услугам еще и есть такие замечательные инструменты по типу как Amplify Shader Editor, где благодаря прогрессивной техники программирования Drag and drop можно отправить в астрал любую доступную видеокарту, lol

Еще вот отдельная тема физика, коллайдеры, все-дела. Мда. А можно еще попробовать запилить свои воксели и попасть в мир боли и страданий...вариантов множество, но без сырцов и профайлера просто так не угадаешь. 
Я хз, как он там конкретно убиввл ФПС, но это-то как раз очень просто, есть очень много способов пробить дно падением ФПС. По мне так как раз самое сложное - это именнр не уронить ФПС: по началу то все обычно очень бодренько рендерится, а вот чем дальше продвинулся прогресс, тем все грустнее и грустнее...

Ответить
1

Насчёт разработки в соло придерживаюсь другого мнения: лично для меня наоборот, когда работаешь один и в кайф, когда не горят дедлайны, когда не нужно особо париться, чтобы твои коллеги с альтернативными взглядами на программирование (например, из-за противостояния if vs switch — но мы ещё об этом поговорим) поняли твой код, когда никто тебе не указывает что делать и как, тем более когда есть финансирование — живи в кайф и радуйся, совершенствуйся и работай в том темпе, как тебе комфортно, ни под кого не подстраиваясь. Я сам в свободное время в течении 2х лет пишу свой уже более-менее нормальный проект. Капец как скиллы за это время прокачал и мой проект вылизан так, что я уверен, вы в нём ни единого бага не найдёте. (Однако справедливости ради замечу, что он довольно простой) Это уже скорее от человека зависит, от его мировоззрения, характера и т.д. Я бы себе не позволил оставить в своём проекте горы мусора и плохую стилистику.

И да, я не только работаю один, я последний год вообще почти ни с кем не общаюсь, кроме родных. И мне норм, кукухой вроде не еду. А хули нам, ассоциальным личностям? КЕК Ну и само собой, не нужно прыгать выше головы. Если твой уровень — 2дшное говно, так его и делай, а не пытайся 3д эпик игру сделать с десятками НПС на экране. Я, например, так и сделал: не вывез сложный проект — пошёл набивать руку на более простых. Это и так очевидно, что если ты по скиллам не вывозишь, то ни к чему хорошему это в итоге всё равно не приведёт, и нужно бросать это говно.

Теперь что касается if vs switch: я вчера глянул 50-ти минутное кодревью, нихуя не понял, ибо английского не знаю на должном уровне, но меня привлёк этот момент, где автор типа поправил код (судя по всему, просто заменив if-else на switch-case) и этим самым убрал пики нагрузки в профайлере. И вот тут я немного... кгхм... удивился... Чё? Так можно? Это так работает? Я типа сам только if использую, ибо для меня данная конструкция куда более читабельная. Начал изучать тему, и она всё же неоднозначная, дискуссионная. Само собой, если у тебя, как у автора игры (если я правильно понял) тысячи строк в одном скрипте, а уж тем более в Update, то разумнее использоваться switch. Но всё же данный метод не панацея, и я согласен с некоторыми другими программистами, что, наверное, C# — достаточно высокоуровневый ЯП, чтобы на таких вещах тем более в несложных проектах не заморачиваться. Куда лучше написать читабельный код, нежели выиграть лишних пару тактов процессора.

Но тут, опять же, всё упирается в то, что не нужно прыгать выше головы, собирать с людей бабки за низкокачественный продукт, и никто тебя и твой говнокод трогать не будет. :)

И я, наверное, по уровню понимая предмета не дотягиваю ни до вашего уровня, ни до уровня Xanathar, ни до уровня нормально разработчика, поэтому это всего лишь моё мнение. Не бейте палками, сделайте скидку на быдлокодерство. лол

Ответить
2

 Теперь что касается if vs switch: я вчера глянул 50-ти минутное кодревью, нихуя не понял, ибо английского не знаю на должном уровне, но меня привлёк этот момент, где автор типа поправил код (судя по всему, просто заменив if-else на switch-case) и этим самым убрал пики нагрузки в профайлере. И вот тут я немного... кгхм... удивился... Чё? Так можно? Это так работает?

А тут все просто на самом деле. Switch на вход принимает только следующие типы:
 - bool
 - char
 - string
 - int
 - enum
В общем это либо целочисленные, либо строковые константы.И при этом switch, сам по себе "плоский" - это же просто коммутатор, задача которого это выбор среди взаимоисключающих альтернатив .
В дебажной сборке и при небольшом размере switch (меньше 7), разницу с if Вы вряд ли увидите, т.к. они скорее всего будут транслированы в похожий IL код.
Но вот в релизной сборке, компилятор на основе большого свитча с целочисленным константами без особых проблем сделает таблицу перехода:
https://docs.microsoft.com/en-us/dotnet/api/system.reflection.emit.opcodes.switch?redirectedfrom=MSDN&view=netcore-3.1
и будет по ней прыгать будет за константное время, по крайней мере в большинстве случаев.
Строковые константы тоже не проблема, там будет вычислять хэш-функция для перехода
https://stackoverflow.com/questions/3366376/are-net-switch-statements-hashed-or-indexed
для чего будет использоваться простой алгоритм FNV   
https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function

А вот с if все нифига не так весело.
Во-первых, if принимает на вход именно выражения, которые могут быть какими угодно и которые надо предварительно вычислить.
Во-вторых, if - он же нифига не плоский. В отличии от switch, if'ы создают ветвления, которые могут быть многоуровневыми и очень глубокими, предсказать переход по которым будет затруднительно. А если при попытки предсказать ветвление "промахнуться" то If внезапно окажется дорогой операции, стоимость которой будет как деление чисел с плавающей запятой, если не больше, а это вообще-то дохрена, за это же время можно успеть раз десять числа перемножить
https://habr.com/ru/company/otus/blog/343566/

В общем if'ы как разрушают возможность нормально распараллелить код и плодят лишние кэш-промахи. которые становятся заметными, когда когда if'ов много и высока вложенность.

По-идее, здоровенный if-elseif-else при определенных условиях тоже можно свести условиях к таблице переходов, и компиляторы это иногда действительно умеют делать:
https://stackoverflow.com/questions/15718262/what-exactly-is-the-as-if-rule
Т.е. чисто гипотетически, увидев здоровенный блок if-elseif-else, с простыми (!) услвоиями, компиялтор может сообразить провести аналогичную оптимизацию как и для switch. Но лично я бы не надеялся, что компилятору тут уже мозгов хватит и придется каждый раз профайлер использовать или смотреть че там за IL код генерируется, используя декомпилятор, чтоб перпроверить че он там вообще делает, а оно вообще Вам надо? Собственно для этого декомпиляторы и нужны кстати, а не для того чтобы ржать над чужим кодом на ютубе...ну максимум еще для самообразовательных целей :-) Но когда на релизе игра становится совсем неиграбильно, то народ не может не удержаться покопаться в чужом говнокоде
https://www.reddit.com/r/Pathfinder_Kingmaker/comments/9jw7z1/enemy_difficulty_vs_enemy_stat_adjustment/

В общем тут правило простое, если число вариантов невелико, т.е. меньше 7 штук, то нет никакой разницы, а учитывая что, if'ы могут быть ленивыми, то лучше использовать if'ы.
Но когда число возможных альтернатив становится 7 и больше, и тем более когда их число переваливает за десятки и сотни, то тут конечно же надо однозначно switch использовать, т.к. с ним-то вопросов никаких нет - компилятор его оптимизирует, инфа 145%.

Вот только, прикол заключается в том, что когда у Вас начинаются плодиться свитчи и всякие enum'ы, то это вообще-то такой жирный намек на то, что пора бы задуматься о конечных автоматах, о нормальных конечных автоматах с таблицами переходов. Тоже будет и верно для большого числа if-ов.

Ответить
0

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

Можешь поподробней этот момент объяснить (в чем проблема и как обойти)?

Ответить
1

Виртуальное наследование - это дополнительный слой косвенности, и чем глубже будет иерархия переопределения виртуальных методов, тем больше будет переходов по таблице виртуальных функций. Мало того, что это лишняя инструкция mov (за каждый слой косвенности), которая будет сжирать такты на равном месте, так это в свою очередь может привести и к кэш-промаху. Ну а кэш-промах может привести к перезаписыванию кэша каким-нибудь тупым путем, когда одни и те же данные выкидываются и закидываются туда-обратно, что какую-нибудь хуйню в 3 инструкции сделать, а бутылочное горлышко современных компов - это шина между ОЗУ и ЦПУ
https://habr.com/ru/post/187654/
https://habr.com/ru/company/mailru/blog/319194/
https://habr.com/ru/post/303562/

Прямой вызов метода всегда быстрее. Именно по этой причине в C# не стали копипастить подход из Жабы, где все методы виртуальные, и ввели специальный модификатор virtual, который и превращает метод в виртуальный, и позволяет его переопределить используя override. Зато в C# можно скрыть любой метод суперкласса, используя new так что это будет уже прямой вызов метода (в Жабе же насколько я знаю, можно скрыть только статический метод).

Вообще полиморфизм, реализованный через наследование в любом случае будет замедлять выполнение программы, так что наследование - это зло, как и многие другие ООП штучки
https://habr.com/ru/post/472052/
Хотя в простых случаях это не всегда заметно. Проблемы начинаются когда иерархия наследования становится слишком глубокой, а виртуальные вызовы становятся очень частыми, хотя Unity последние несколько лет уже умеет немного оптимизировать этот момент
https://blogs.unity3d.com/ru/2016/08/04/il2cpp-optimizations-faster-virtual-method-calls/
https://blogs.unity3d.com/ru/2016/07/26/il2cpp-optimizations-devirtualization/
https://blogs.unity3d.com/2015/06/03/il2cpp-internals-method-calls/
Так что если не обмазываться чрезмерно виртуальными функциями и абстрактными классами, то должно быть норм. Но в любом случае композиция будет работать быстрее наследования. Однако подводных камней там много, например, обмазываться MonoBehavior и всеми этими Update() тоже не лучшая стратегия, т.к. удивительным образом, вызов метода Update() медленнее чем вновьнаписанных методов
https://blogs.unity3d.com/2015/12/23/1k-update-calls/
так что когда надо дергать действительно много объектов, то лучше это делать через менеджер объектов, который уже дергает соответствующий метод. Я кстати так и делаю, причем даже не столько по соображениям производительности, а чтобы поддерживать принцип единой ответственности и контроллировать очередность исполнения напрямую, а не ковыряя приоритеты разных MonoBehavior скриптов
https://docs.unity3d.com/Manual/class-MonoManager.html
Есть и другие вещи, например, массивы работают быстрее списков. А сложная иерерахия внутри сцены тоже нифига не круто
https://habr.com/ru/post/481510/
Или другой пример - пул объектов (чтобы сборщик мусора с ума не сходил) 
https://habr.com/ru/post/275091/
А уж когда дело доходит до действительно больших количеств объектов, то тут внезапно оказывается, что вообще приходиться менять парадигму:
https://en.wikipedia.org/wiki/AoS_and_SoA
https://habr.com/ru/post/321106/
И в общем-то получается так, что структура массивов в ряде случаев куда надежнее массива структур за счет сохранения когерентности данных. Собственно Unity DOTS на самом деле решает большинство проблем
https://unity.com/ru/dots
Но тут надо иметь ввиду еще и то, что большое значение имеют масштабы: если, например в игре бегает 3.5 калеки и рубят друг друга мечами, то вообще пофиг должно быть. Разница начинает проявляться, когда, например, хочется сделать RTS с 1000+ юнитов,или запилить свой воксельный движок, ну  и т.д. И тут выясняется, что изначально когда появился Unity, его разработчики просто по полной обмазывались новомодными хипстерскими штучками и методологиями, которые мягко говоря негативно влияют на перфоманс и не подходят для больших игр, но последние лет 5 они взяли курс на то, чтобы исправить эту проблему.

Ответить
0

Просто интересно, а где сейчас востребован паскаль? Моды для казаков писать?

Ответить
2

Учитывая, что я на нем (с ассемблерными вставками) не одну сотню килобайт кода когда-то для своих игр написал, еще на 286, - это просто дефолтная привычка. Сейчас как раз клон первой Визардри потихоньку пилю. В 640х480.

Ответить
0

О как. Ты на свои продукты ориентируешься, не планируешь по найму работать?

Ответить
0

Я когда-то в госконторах работал, там вообще был FoxPro досявый. А потом много лет занимался другим.

Ответить
8

Про студию бред написан. Какие 15 разработчиков? Что они делать будут? Ходить вместе в кафе и есть пиццу? Смотреть футболл? Если кто и сумеет сделать хоть какое-то подобие Yandere Simulator, то только работающий на чистом энтузиазме фанат, ну максимум два.

Как будто раньше один/два человека не делали хорошие игры.

Ответить
0

Вы невнимательно читали мою статью. В ней говорится, что работать над игрой в одиночестве является самым тяжёлым вариантом разработки игр. Тебе придётся программировать, рисовать модели, придумать сюжет и геймплей. Даже Маркус Перссон понял, что он неё сможет справиться с обновлениями Minecraft в одиночку, и ему потребуется команда разработчиков.

Я конечно слыхал, что в разработке находится клон под названием Love letter (не путать с одноимённой настолкой). Ещё есть  Yandere School.

Ответить
7

Разработка в одиночестве это самый комфортный и правильный подход для инди. Но только в том случае, если ты умеешь делать игры. По моему очевидно, что с Yandere Simulator это не тот случай и там никакая команда не поможет, тк психологический барьер и отсутствие понимания все уничтожит. Это уровень Ютуб-гайдов.
Все что нужно Алексу для создания этой игры - научиться делать игры и перестать стричь бабло с фанов. А это очень тяжело, поскольку в индустрии обычно делают наоборот.

Мне кажеться или вы недолюбиваете инди-разрабов? 15 человек это уровень студии с миллионными доходами, но даже самые известные из них часто столько не имеют. Те же The Behemoth это всего 9 человек, но уровень их игр поражает. Puppygames всего 3е и то вроде бы большую часть пилил один человек. У Free Lives вроде бы 16, но они сразу несколько игр для разных платформ делают.

Зато великий и ужасный Draft Fortress делают 2 человека. Hotline Miami 2 человека. Lone Survivor то ли один, то ли два. Неужели Yandere Simulator сложнее этих игр? Не верю.

Ответить
0

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

Ответить
0

И надо найти для себя друзей, готовые тебе помочь 

Но будут ли друзья подходить так же ответственно и работать как профессионалы или же потеряют интерес работать над чужой игрой через месяц? А нанимать уже профессионалов не у каждого выйдет, у обычного разработчика бюджет на игру примерно 0 рублей, у исключений как сабж - 2к баксов в месяц. Ну, если отдавать всё это то можно нанять одного программиста, который не факт что имеет навыки соло-разработки, составления себе ТЗ и опыта работы с непосредственно гейдизайнером. 

Ответить
0

Поэтому я не вижу смысла в том, чтобы пойти в инди разработчики. Лучше работать фрилансером, чем есть доширак за деньги с Kickstarter. Звучит цинично, но это факт.

Ответить
0

максимально ответственно

обусловлена рисками

придётся отчитываться перед аудиторией

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

Проще говоря, если я стану инди-разработчиком, то я буду работать как профессионал

50% современных инди это бывшие сотрудники крупных компаний, но даже они часто выдают жуткий треш.

И надо найти для себя друзей, готовые тебе помочь.

Моя карьера разработчика на этом закончилась. Они не захотели помогать.

Упомянутые тобою игры, сделанные в соло, очень простенькие. Да и то, им просто повезло.

Минутами ранее:
работать над игрой в одиночестве является самым тяжёлым вариантом разработки игр. Тебе придётся программировать, рисовать модели, придумать сюжет и геймплей

Тебе не кажеться что здесь неувязочка? Ты называешь простенькими игры, в которых все ресурсы созданы разработчиком?
Но да, играм повезло быть сделанными настоящими разработчиками и быть уникальными на игровом рынке, как на момент выхода, так и сегодня.

Советую прочитать книгу «Кровь, пот и пиксели», там есть история игры Stardew Valley, максимально профессионального разработчика - одиночки.

Ответить
0

Руководство из крупных студий обращаются со своими работниками как с рабами, а потом выкатывают высокобюджетное говно с микроплатежами. Работники убегают в инди и средненькие рогалики с пиксель-артом и мультиками. Потом появляются инди-фанатики, которые рочат на все, что подходит по определением инди. И никакого рейтрейсинга, глубокого сюжета и Open-world, будет только детское инди, подражающие играм на Денди. Или, в худшем случае, мобильники с патинко.

И вот ради такого некст-гена я коплю деньги на RTX? До чего же деградировался  геймдев! Тьфу!

Ответить
0

Они даже рогалик сделать не могут, тащемта. Только называют уебищное говно "рогаликом", при этом считая что рогалик - это Super Meat Boy. 

Ответить
0

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

Ответить
0

А должно быть не все равно. Если хотя бы они делали рогалики вместо хайпового говна - они бы хоть какой-то нормальный жанр развивали и хоть какой-то смысл в их играх был кроме недорогаликов и хайкин симов. 
[Sunset]

Ответить
0

🎮 Sunset
Дата релиза: 21.05.2015
Рейтинг Metacritic: 66

Разработчик: Tale of Tales
Издатель: Tale of Tales

🛒 Steam

Ответить
0

Упомянутые тобою игры, сделанные в соло, очень простенькие. Да и то, им просто повезло.

Ответить
0

Есть куча сложных игр сделанных в одиночку. Adom. Nahlakh. И так далее. 

Ответить

Вторичный Мика

Антон
0

Да могут, но не Алекс

Ответить