24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Геймдеваны, кто-нибудь из вас страдает перфекционизмом?
Геймдеваны, кто-нибудь из вас страдает перфекционизмом? Как с этим боретесь? Как сильно это мешает в разработке?
Я занимаюсь кодингом и мне это порой очень сильно мешает. Не могу продолжать работать, пока код не станет "красивым". Порой убивал недели на изменения в архитектуре, которые не влияли на функционал игры.
>>747811 (OP) >кто-нибудь из вас страдает перфекционизмом Все этим страдают, но пересиливают себя.
Важно поставить сроки, и цель. К примеру: Сделать игру, где игроку даётся возможность катать мячик по полю за 1 неделю. Садишься планируешь, и реализуешь. Никаких но, или вот завтра доделаю. Прям ставишь жёсткие рамки и создаёшь. Если проебался, то смело посылаешь себя нахуй и идёшь работать физическим трудом, т.к не способен к самоконтролю и интеллектуальной деятельности.
Запомни, НИКАКИХ НО. Чёткие рамки и сроки. ВСЁ.
Спустя 2-3 маленькие игры и чёткого соблюдения сроков, у тебя это станет нормой, и сможешь заниматься нормальными проектами.
>>747882 я их называю интерактивные открытки, поэтому они и называются флеш(вспышка) играми, один-два раза потыкал и забыл. суть в том, что я не парюсь, что код выглядит как говно. навалил буков-цифр и за следующий высер взялся.
>>747884 индус-стайл котинг просто валишь всё в кучу потоком сознания в психоделическом трипе, ибо клиенту нужен проект вчера, а заказал он сегодня, нет времени думать логикой.
>>747815 >Важно поставить сроки, и цель. Мне не помогает - ставлю срок в неделю... трачу это неделю на переписывание текущего кода и перестановку пробелов в тексте. А если переписывать уже нечего - начинаю писать этот код заново
(другой анон, страдающий такой же херней как автор темы)
>>747811 (OP) >страдает перфекционизмом? Да. >Как с этим боретесь? Никак не получается. Дедлайны не помогают, только усугубляют стресс. >Как сильно это мешает в разработке? Настолько, что в конце концов я психую, всё бросаю и ухожу в депрессию на какое-то время (неделя, месяц, полгода).
>>747811 (OP) Перфекционизм - это круто. Не слушайте кабанчиков, это только им надо чтобы было все из говна и палок но вчера, у них постоянно какая-то гонка в жизни. Видимо конкурс кто первый жопу порвет. Зато перфекционист сможет сделать то, что обычная макака не сможет. Макаки просто постоянно барахтаются на низшем уровне и никогда не перейдут дальше, в то время как перфекционист учится и строит правильную архитектуру, применяет правильные паттерны, все то, что лежит в фундаменте по настоящему сложных и великих систем. Так что, кабанчику кабанчиково.
>>748016 >Зато перфекционист сможет сделать то, что обычная макака не сможет. В 99% случаев перфекционист не сделает ничего. Перфекционизм – это психическая болезнь. Такая же как, например, ОКР.
>строит правильную архитектуру, применяет правильные паттерны Нет никакого правильного. Всегда будет что-то не так.
>Макаки просто постоянно барахтаются на низшем уровне Перфекционисту даже до уровня макаки тяжело дотянуть. Скорей всего он перегорит, бросит и пойдёт искать работу дворника.
Пишу на C#. Меня тут недавно заклинило. В игре есть различные сервисы. Доступ к ним осуществляется по интерфейсу. Это нужно для того, чтобы можно было вместо реального сервиса подставить тестовый. Например, реальный сервис работает со Steam API и возвращает данные аккаунта, а тестовый сервис возвращает заранее сохранённые данные с ПК.
Так вот. У некоторых интерфейсов свойства возвращают Array/List. Некоторые интерфейсы возвращают классы с открытыми полями. Я на это тригернулся. Типа, какого хуя с одной стороны закрытая абстракция, а с другой - изменяй что хочешь? Часть классов заменил интерфейсами, другую часть классов сделал закрытыми посредством инициализации через конструктор. Array/List заменил интерфейсом IReadOnlyList. И что я этим добился, блять? Сделал игру лучше? - нет. Добавил новый функционал? - нет. Просто проебал время впустую нахуй. Сорвался как завязавший наркоман.
>>748045 >перепизаписал бы ачивки всем игрокам Ага, я же совсем дурак. Ни разу мне это не пригодилось. Такое актуально в игровых студиях, когда над проектом работают несколько программистов.
>>748054 Я же не просто так написал через полгода. Дурак не дурак, а забыть или перепутать можно легко. Смысл всего этого дрочева - получить интерфейсы типа кубиков лего которые вставляются друг в друга. Да и вдруг ты через пол года будешь работать в игровой студии, или создашь свою.
Первым делом из команды надо гнать нахуй перфекционистов. Обычно они любят поныть о том, какие они гении и как надо все делать, но мир жесток и не дает сделать их игру мечты. А кроме нытья нихуя не делают.
>>748016 Ты путаешь адекватное восприятие задач с перфекционизмом. Перфекционист будет искать лучшее решение даже тогда, когда нашёл лучше из возможных. Перфекционист будет жестоко страдать от того, что идеальное решение недостижимо физически или он не может достичь его лично. Даже когда перфекционист пытается смириться с реальностью и использовать то, что ему реально доступно, он всё равно будет мучиться и хотеть невозможного, будет постоянно думать о том, как достичь лучшего, чтобы бросить имеющееся неидеальное. И это отнимает силы, время, желание что-то делать. Я уж не говорю о том, что каждый раз делаешь всё с нуля, и каждый раз бросаешь на полпути, осознавая неизбежное неидеальное решение.
>>748069 Ты не одинок. Я сам ищу слова в словаре, чтобы набрать на английском, хотя мой код всё равно никто не увидит и комментарии я пишу на русском. Просто бесит транслит. Не писал транслитом уже когда учился программированию в школе, не понимаю как некоторые во взрослом возрасте продолжают это делать.
При этом я ничего не имею против кириллических языков программирования. Если весь язык на кириллице, то всё нормально, обзывай сущности русскими словами. Или вот даже не обязательно кириллический язык... Некоторые компиляторы поддерживают парсинг Unicode, позволяя называть переменные, типы данных, классы, методы, имена функций и так далее почти любыми символами Юникода (кроме, естественно, пробела, плюса, дефиса, косой черты, точки, звёздочки и т.д.). То есть разработчики языка дали тебе возможность обзывать переменные кириллическими символами - используй это! Нет, буду писать кривым транслитом. Зачем так?..
>>748087 Дроч на перфекционизм был крайне излишним. Я бы мог вложить это время в улучшение игр или в создание новых. Ещё кукуха поехала от постоянного стресса от продумывания кода. Но игры взлетели.
>>747815 >К примеру: Сделать игру, где игроку даётся возможность катать мячик по полю за 1 неделю. Я тоже так начал игру про катать мячик, а переросло в опенворлд с процедурной генерацией, а потом захотелось ИИ на нейронных сетках для всего повтыкать...
>>748090 Ну, первая называлась Орион Онлайн. Мы её продали. Сейчас есть урезанная версия Orion Sandbox (не путать с Enhanced, это уже рескин от других людей). Я там где-то около 800 классов написал. Свой движок, свой UI. Всё ради максимальной производительности. Но можно было больше вложиться в функциональность, в лучшую физику, в нормальный ИИ, а не дрочить код.
>>748069 мне не нравится англ язык и англоатмосфера, в школе не изучал немецкий язык. французский или португальский изучил бы, но они как бы без задач/профита.
за границей иногда приходится применять сверхломанный кривоанглиш из запомненных мной слов из древних игр и случайно прилипшие.
>>748075 в конструкт2 если всунуть кириллические символы, то после компила игра не запустится.
я старый дед-колдун с седой бородой из полудеревни, мне можно уже обходиться без инглишей и прочих современных требований
Делал после работы простенькую игру. Начинал в сентябре, прервался в апреле, сейчас снова возвращаюсь чтобы добить уже. Думаю за пару месяцев плотной работы можно было сделать полностью. Сильно замедлил, когда стал проходить всякие лекции по программированию, паттернам проектирования. Переписывал архитектуру зачем-то, просто чтобы применить новые знания. Пробовал варианты визуала, но в итоге возвращался к старому. Думаю сделать мвп и пойти по издателям, чтобы издатель пинал меня по срокам ибо свои дедлайны я пребываю.
>>748016 >Перфекционизм - это круто. Я уже десятый год не могу свою игру сделать с этим перфекционизмом. Стопятсот раз переписываю код, Больше некуда переписывать? Ниче, начну писать его заново. Написал заново? Там вон движок новый вышел - буду писать на нем. Нихуя не получилось на новом движке? Там в ютубе ролик с уроком где делают нужную мне фичу, надо возвращаться на старый движок и сделать этот урок.... Мать вашу что тут за говно в коде - срочно все переписать О, а вот у этого чувака в стиме крутая игра, тоже хочу такую... начну делать новую игру.
Перфекционизм - это лучший способ просрать свою жизнь.
>>748016 >строит правильную архитектуру Нельзя построить правильную архитектуру не сделав до этого ни одной игры - просто опыта нет. Проблема перфекционизма - это мнимость.Ты сам придумываешь себе неправильный код и идеальный код. Только это не так - вся эта правильная архитектура - все такое же говно, потому что не прошла боевое крещение на реальном проекте.
>>748100 Я думаю, под "улучшением игр" он имеет в виду геймдизайн, левелдизайн и так далее, то есть то, с чем игрок непосредственно взаимодействует. А дрочил он на красивый код или какие-нибудь паттерны программирования...
>>748101 О, а как освещение делали? Где-то есть туториал или сами придумали? Шейдеры или на процессоре? Или это просто заранее нарисованные маски?
Я пробовал этой весной сделать что-то подобное, застрял на освещении. Нашёл какой-то алгоритм, но он медленный (свет распространяется и угасает постепенно, как вода течёт) и имеет кучу недостатков (в определённой ситуации свет может "застрять" на краю видимой области; источники света рядом создают странные переходы; и т.д.). Также не удалось сделать сглаживание, простое растягивание текстуры создаёт тёмные ореолы вокруг блоков, выглядит отвратно. В результате забил на проект, какой смысл в игре без нормального освещения?
>>747815 >сможешь заниматься нормальными проектами >>748125 >не релизнул ни одной большой А кто тебе обещал, что релизнешь? Занимался же, этого достаточно.
>>748149 >Там вон движок новый вышел - буду писать на нем. >Там в ютубе ролик с уроком где делают нужную мне фичу, надо возвращаться на старый движок и сделать этот урок.... >О, а вот у этого чувака в стиме крутая игра, тоже хочу такую... начну делать новую игру. Имхо, у тебя помимо перфекционизма ещё и неспособность фокусироваться на одной задаче. Короче говоря, очень легко отвлекаешься. Может быть, СДВГ? Я вот тоже часто мечусь от одного к другому, не могу сфокусироваться - но это не имеет отношения к перфекционизму. Перфекционист, наоборот, долго и упорно сидит над одним делом, доводя до совершенства, а не прыгает беспорядочно от одной задачи к другой. У людей с СДВГ или чем-то подобным проблема, что они не могут сосредоточиться, их мозг постоянно находит новые интересные штуки и увлекается ими, бросая всё старое, даже срочное; возможно, это может сочетаться с перфекционизмом, но это отдельная тема.
>Нельзя построить правильную архитектуру не сделав до этого ни одной игры - просто опыта нет Лол, ты это философам скажи, которые строят всякие социальные модели, всю жизнь будучи только философом и не реализуя свои модели самостоятельно. Опыт, конечно, важен, но кроме личного опыта есть книги, сайты, руководства, помощь более опытных людей, в конце концов самостоятельный анализ, моделирование будущего приложения, планирование. Другое дело что игры - очень сложны, тем более если пишешь без готового движка. На готовом движке архитектуру придумали за тебя...
>Ты сам придумываешь себе неправильный код и идеальный код А вот это вообще бред. Как у неправильного, так и у правильного кода есть свои чёткие критерии, по которым их можно определить. И эти критерии зачастую общие для всех программистов, всех языков, систем, проектов. К примеру, называть важную переменную, функцию, тип, класс и т.п. одной буквой - это неправильно, потому что однобуквенное название в большинстве случаев непонятно. Нормально называть счётчик цикла "i", или "x" и "y", но нельзя называть что-то нетривиальное случайной буквой. И таких критериев или правил очень много, о них пишут целые книги. Ты можешь, конечно, придумать себе какие-то новые правила или отказаться от некоторых общепринятых, но чаще всего ты будешь согласен с общепринятыми критериями правильного кода, потому что они испытаны на практике миллионами людей и доказали свою важность.
Вообще, любой человек, хорошо разбирающийся в программировании, согласится с перфекционистом в том, что было бы очень здорово иметь идеальный код. Но этот человек не будет бросать все ресурсы на создание идеального кода, потому что это будет нерациональной тратой времени и сил, а результат не компенсирует затрат. А вот перфекционист готов бросить всё ради достижения идеала, и если идеал недостижим, он будет страдать и бросать начатое. То есть идеалы перфекциониста адекватны, неадекватно стремление эти идеалы достичь любой ценой.
>>747811 (OP) > Как с этим боретесь? Как сильно это мешает в разработке? Постановка целей и определение приоритетов. Например, загрузка\сохранение карты это важнее чем красивое окошко с кистью для рисования.
>>748149 Десять лет - это не много для обучения. Возможно ты не очень эффективно обучаешься, но раз ты каждый раз переписываешь, значит, ты еще не достиг совершенства, раз каждый раз можешь переписать лучше. Ты сам пишешь, что "нихуя не получилось" и тебе надо повторять чей-то ютуб урок. Значит, у тебя пока низкие навыки. Дело в том, что когда навыки есть, человек, наоборот, сам записывает уроки и учит других, при этом ему не надо подглядывать уроки, он сам понимает как делается фича. А зачастую он придумывает фичу сам, пишет пейперы по ней. Поэтому ничего неправильного в перфекционизме по прежнему нет. Тебя ввели в заблуждение двумя вещами - 1) что мы участвуем в какой то гонке, где надо клепать много некачественных (неперфекционистских) игр, сайтов, программ и прочего. Что успех измеряется количеством. и 2) что делать игры легко. На самом деле, продолжай свой путь, совершенствуй код, и в зрелом возрасте сделай одну, но хорошую, игру.
>>748165 >а как освещение делали? Это очень простое освещение по тайлам. Для каждого тайла просчитывается color. Есть глобальное освещение. И есть источники света, которые распространяют свет по кругу. Сущности берут освещение из тайлов. Тени на краях тайлов рисуются спрайтами отдельно простым алгоритмом (если тайл сплошной и снизу нет другого сплошного тайла, то рисуем снизу тень, и так далее).
>свет распространяется и угасает постепенно, как вода течёт В террарии вроде такой. Можешь посмотреть их исходники. У меня освещение примитивнее.
Меня вдохновляет разработчик из Facepunch. Он уже давно работает на кодом идейного продолжения Garry's Mod. У него получается простой и элегантный код. И этим кодом потом будут пользоваться сотни сторонних разработчиков. Эх...
Была рабочая игра. Да, код хреновый, но он работал и в коде довольно много связей. Нужно было всего лишь добавить новый функционал. Но вместо этого я начал глобальные изменения. А они привели к тому, что мне ВЕСЬ код нужно переписывать. Дороги назад уже нет. Загнал себя в угол. Ну хоть остановился вовремя. Попробую сильно не заморачиваться.
>>749782 Рефакторинг проводят по специальным методикам. Когда небольшую часть кода меняют на новый, чтобы ничего остальное не поломалось. Для этого иногда заводят временные прокси объекты.
>>747811 (OP) Перфекционизм еще разный бывает. Я иногда стопорюсь, если первое представляемое решение мне не нравится. Оно обычно громоздкое, трудоемкое, мне просто лень кодить всю эту лапшу. В итоге могу несколько дней вынашивать мысль, пока не придет в голову более элегантное решение. Я осознаю, что какие-то вещи на самом деле не надо делать, что-то можно сделать проще. И в таком случае уже с более спокойной душой и некоторым энтузиазмом сажусь за написание кода.
Иногда специально задаюсь целью сделать какую-то фичу проще, с минимальными изменениями, на существующем коде, не ломая ничего. И зачастую код получается изящным в своем роде, он прост, минимален, логичен. Нет ничего лишнего, только решение конкретной задачи на своем законном месте.
Периодически делаю рефакторинг, чтобы подчистить код. Все тоже в минималистичной манере. Выделение переменных или констант где надо, потом от этого проще выделять куски в отдельные функции. Когда собирается ряд специфичных методов, тогда можно подумать над выделением их в какой-то новый файл или класс. Но к рефакторингу приступаю обычно с подходящим настроением, просто знаю, что один вечер надо заняться черной работой по коду, максимально сконцентрироваться, сделать все внимательно, чтобы не потерять ничего. И конечно же дроблю все на маленькие кусочки и сразу тестирую, чтобы сразу локализовать поломку.
И второй момент. В первом классе есть метод UpdateNotifiers (пик-1). По сути его можно разбить на дополнительные методы (пик-2). Но стоит ли? Интуиция подсказывает, что таки стоит.
>>750010 Ноунейм погромист с ютуба говорит что знает что нужно бизнесу @ А бизнес-то и не знал, что ему нужен хороший код завтра, а не прибыль вчера
Алсо топовый коммент: >хотел посмотреть видос как стать хорошим программистом, а в итоге посмотрел пару очевидных советов и остальное реклама супер мега крутого курса, где в прямом эфире Роман распродал все места.
Ящитаю, самые главные перфекционисты - это те, кто вместо разработки своих программ сидят на ютубе и смотрят многочасовые лекции про "хороший код", в которых говорят о банальных вещах, которые можно прочитать за 5 минут на Википедии. Серьёзно, программисту должно быть стыдно смотреть ютуб на темы, хотя бы немного касающиеся разработки софта.
>>750078 Поначалу может казаться, что усложнит, потому что используется чуть более сложная конструкция. Но потом поймешь, что на самом деле упростит. Ведь в твоем коде ты два раза по 6 раз проговариваешь одно и то же с разными словами. А в коротком ты бы выразил только саму мысль, задачу которую надо решить.
>>750028 Мне кажется у тебя логическая ошибка. Ты передаешь в OnNotify сравнение по == Но возможно ты имел ввиду | Что будет, например, если у тебя одновременно есть оружие и скины? В inventoryFilter будет Weapons | Skins Сомневаюсь что у тебя notifier.Filter расписаны на ВСЕ возможные сочетания.
Я занимаюсь кодингом и мне это порой очень сильно мешает. Не могу продолжать работать, пока код не станет "красивым". Порой убивал недели на изменения в архитектуре, которые не влияли на функционал игры.