Что то я не учерен, что понимаю, что ты хотел сказать этой фразой:
То, что они работают и развлекают, говорит о том, что альтернативный им геймплей для тех, кого они развлекают, неинтересный, непонятный, пустой
Ты действительно считаешь, что если мне интересны квесты в ММО, это одновременно означает, что любой другой, более песочный геймплей ММО, мне менее интересен?
Повторю свою ключевую мысль. Вопросы производительности важны, но они решаемы, причем даже в одно-два лица/разработчика, при мизерном бюджете (см кейс Haven & Hearth). В случае хорошей команды и бюджета побольше они решаемы с очень крутым результатом (см кейс EVE-Online). Поэтому я не вижу особого смысла рассуждать о технической стороне вопроса.
Финансирование и инвестиции в то, что не факт что стабильно заработает или будет интересным — вот это вопрос, да. Но он не имеет отношения к ООП, архитектурам процессоров или гейм дизайну.
Понятное дело, что софт не создается путем бросания денег в монитор. Но, как и со всем остальными предприятиями в жизни, это вопрос знаний, навыков, профессионализма, управления, эффективности, которые и определяют успех.
Ну и правильно сделали, на самом деле. Задолбали на тестерах экономить. Уж к релизу можно поднапрячься и сделать все с первого раза. Ибо у тебя есть один шанс произвести первое впечатление.
Также хотелось бы реальных примеров, а не иерархий диалогов печати файла и сохранения шаблонов, которые не имеют отношения к играм.
Я к большому сожалению просто куда-то посеял сгенерированную в Doxygen иерархию классов для Unreal, уж больно много места все это занимало.
Что ж, по остальному могу пройтись в след. раз, т.к. я, если честно, не думал, что так много людей тут есть, кто прекрасно бы все понял и «в терминах», так сказать.
В статье, правда, много воды. Также хотелось бы реальных примеров, а не иерархий диалогов печати файла и сохранения шаблонов, которые не имеют отношения к играм.
Не соглашусь с объявлением ООП виновником всех бед. Если сталкиваетесь с проблемами в иерархиях, то не нужно делать такие длинные и развесистые иерархии, а лучше использовать композицию. Я хоть и не игру делаю, но у меня обычно трейт или абстрактный класс, который расширяет библиотечный класс, и у него пара наследников. Всё.
Писать многопоточный код намного сложнее, чем однопоточный, но причём здесь ООП? Разве многопоточный код со struct-ами на чистом С или даже ассемблере выглядит проще и понятнее? В любом случае нужно или куча синхронизаций при работе с shared mutable state, или неизменяемые объекты и функциональный подход (всё равно объекты, как ни крути). Или пересылать сообщения в очередях.
Для высоконагруженных систем есть микросервисы, которые, опять же, на объектно-ориентированных языках обычно пишутся.
Работает — не трогай
Этот принцип подходит далеко не всегда, а только для тех частей программы, которые Не нужно развивать. Например, ланчер или окошко настроек. Их один раз написали, и больше новых функций от них не потребуется. А вот для основного кода, который всё время развивается, лучше другой принцип — постоянный рефакторинг. Тогда и будет нормальный код, который не придётся полностью переписывать, а только частично поменять при добавлении новой механики.
Я согласен лишь только с одним тезисом — масштабируемость — проблема, требующая серьезного внимания и затрат. В остальном — не согласен. Статья, с неоправданно длинным и self-centered вступлением, похожа на попытку вступиться за коллег (что я лично сам очень даже понимаю, been there, done that), манипулируя «магическими» словами, малопонятными для неподготовленного читателя, в попытке обосновать свой тезис.
Несмотря на все это, автор приходит к правильным выводам:
куда проще и дешевле, ведь у вас есть инвесторы. А как известно, инвесторы не хотят тратить годы на реализацию каких-то новых технологий, писать что-то с нуля, переписывать и внедрять фичи, использовать новые парадигмы. От вас не хотят инноваций, ведь для инвестора важна надежность, а что может быть надежнее проверенного велосипеда?
Внезапно оказывается, что это всё бизнес, и дешевле копировать, чем создавать что-то новое. Но в этом то и отличие индустрии от искусства. Приоритеты разные. Только архитектура и гейм-дизайн здесь не при чем.
ООП лишь принцип. Как его применять — отдельная тема. Знание основ Software Engineering для гейм-дизайнера важно (и обязательно в случае с независимыми разработчиками, которые носят множество шляп одновременно). Можно делать плохие системы, а можно и хорошие, регулируя количество внутренних и внешних связей, используя контейнеры и компоненты, и т.д.. Это, в буквальном смысле, целая наука. Требующая профессионального подхода.
Точно также и гейм-дизайн постепенно начинают преподавать в университетах, это же тоже целая наука. А упрощение дизайна систем, в ней, на мой взгляд, не стоит подавать как нечто плохое.
А вы, поразмыслив вместе с ним, начинаете ее крамсать, сокращать, упрощать и видоизменять так, чтобы вам не пришлось переписывать весь ваш код или заниматься тем, что называется велосипедостроением.
Наоборот, упрощение — крайне полезно. Если можно что-то упростить, не теряя сути, то это плюс, а не минус. Игры должны быть доступны и понятны.
Ведь игра — набор механик, которые призваны создавать некий опыт. Как именно они это делают, иногда скрываясь от взгляда окружающих и срезая углы, там, где это можно сделать, не важно.
PS: начинающий независимый гейм дизайнер/софт инженер, адепт C#/Unity
Я на днях удивился и решил посмотреть, что это незнакомое на первом месте по текущим зрителям на твиче. Да, это был атлас, но все стримеры делали кто что, кто ютуб смотрел, кто музыку слушал. Интригу развеял стример, который показывал крупным планом твит разработчиков о том, что в связи с непредвиденными обстоятельствами старт откладывается до починки сервера, примерно на сутки.
Вот, наверное, народ обиделся и пошел отзывы писать.
Пишешь, приводишь аргументы, никто не спорит, а потом бац — снова звонит анонс-будильник и ты просыпаешься во вчерашнем дне под песни с теми же словами «не сильно влияют на баланс, большую часть шопа можно купить за ингейм».
Никакого сожаления. Иначе День Сурка будет продолжаться. Сколько можно игнорировать элементарные аргументы? Довод, простой как дверь: не надо рассказывать о том, что если можно оплатить что-то в игре с магазином игровыми деньгами, то это «не нарушает баланс». Я не претендую на истину, но оставил ссылку на развёрнутый текст, объясняющий мою позицию.
Человек ответил «не вижу в этом проблемы» (каждый имеет право на своё субъективное отношение, и комментарий никто не минусовал), а потом признался, что даже не переходил по ссылке. Вот такой уровень дискуссии я оцениваю минусом. Туда же реплики «Вас никто не заставляет играть в эту игру» в качестве «аргумента», который не имеет никакого отношения к сути того, что мы обсуждаем, или резкая смена темы в сторону того, что сюжет или данжи в магазине не продаются, хотя мы говорили исключительно о предметах, которые продаются в магазине. Или прекрасные вопросы «что мешает вам пойти на аукцион и купить эти же самые костюмы?» на рубеже 2018-2019 годов. После десятков обсуждений этого вопроса и объяснений, что таким образом ты снабжаешь донатера своей валютой, работаешь на него, помимо того, что должен тратить время и усилия на заведомо обесцененные достижения.
Боюсь, если бы Ассур не ушёл в минус, этот цирк продолжался бы. Я лично не хочу видеть такой уровень дискуссии. Да боже, кого я обманываю, вообще называя это «дискуссией»?
Сотни раз говорилось, что минусы для этого и нужны — чтобы не порождать бесконечное бодание и хождение по кругу:
Я следил за многими другими форматами, и везде видел примерно одно и то же — в любой момент самый крикливый или упрямый участник дискуссии мог поднять ставку и у тебя оставалось только два варианта: перебить эту ставку своей репликой, либо сказать «пасс». Пасс практически везде трактовался как проигрыш («тебе просто нечего на это возразить»), попытка перекрыть ставку оппонента приводила к невольному выравниваю дискуссии до уровня предыдущей ставки. Собственно, именно так и появился троллинг — это просто попытка заставить тебя сделать ставку за гранью допустимого и, к примеру, вынудить модератора тебя забанить. Все это прекрасно процветало, включая формулы «кто последний сказал, тот и прав», «кто громче, тот и прав», «кто более грубый, напористый, тот и прав». И никакая отрицательная карма, позволяющая человеку продолжать писать, никого не останавливала, сути процессов не меняла. Поэтому «минус», приближающий человека к молчанке (временной, прошу заметить), как раз то, что отличает нашу систему от других. Минус можно получить только за комментарий. За заметку, отдельно оформленное мнение, его получить физически нельзя.
никто никого не сливал — просто пара ярких поставили минус. Многим из нас «Дивина и ко» ломали призмы лишь за то, что мы сомневались в адекватности БДОшного доната. Ассур, к сожалению, попал под механику сайта, никто его специально не сливал.
Вы слили Ассура за то что он играл в лост арк без магазина.
Так что конкретно в этом случае «Заткнись. Заткнись. Заткнись» очень в тему в вашу сторону.
Плюса мало. Ат, я понимаю что тебе обидно. Извини, но я скажу здесь. Людей, которые могут высказать свои мелочные, гаденькие претензии — много. Людей, которые могут с надменным видом, менторским тоном рассказать как поступать — еще больше. Они через неделю с таким же надменным видом будут отстаивать ровно противоположную точку зрения — и как с гуся вода. А людей которые последовательно, аргументированно отстаивают свои принципы — их крайне мало. Ты просто не представляешь как здорово, что среди всего скама, глупости, цинизма и лицемерия есть ММОЗГ. Я понимаю что это не просто, но не принимай близко к сердцу :-)
ЗЫ: У крутых вроде другое какое-то классное место появилось для общения? Или тянет к тирании?)
Вы знаете, я понимаю, почему Атрон потерял силы для разговоры с вами. Вы не видите разницу между сущностями, которая очевидна:
— продавая оружие, наборчики, домики и костюмы, разработчик игры работает в конкурентной среде — делает благо для одних, которое является предметом зависти других. ММОРПГ — это конкурентная среда, где каждый может получить больше, чем другой, в контексте главной функции игры — в контексте социализации и игрового процесса.
ММОзговед — это тоже конкурентная среда. Но только в одном отношении: в части системы яркости и энергии. И эта часть системы, уж простите, не покупается и не продается. «Игровой процесс» остается закрытым и самоценным.
В остальном все возможности для инвесторов не создают конкурентного преимущества и не ухудшают положение других игроков. Все, что получают эрги, только улучшает контент портала. Кому может навредить возможность инвестора отправить представителя редакции в определенную ММО с целью написания отчета? Предложение взять интервью? Или перевести статью? Тем, что на ММОзговеде появится новая статья или новый перевод?
Это и есть то самое «лучшее обслуживание клиента», которое вас так пугает?
У вас, опять же, какие-то дикие, людоедские представления о том, как работает структура управления проектом. Я попробую по пунктам из своего обширного неигрового опыта, ладно?
1. Ни у одного эрга (или любого другого члена правления) нет 100%-но правильных представлений о том, как именно нужно развивать проект. Если я что-то предлагаю, то я никогда не настаиваю на этом предложении. Ни силой денег, ни силой убеждения. Потому что проект верификации предложения коллективом — это важный процесс прежде всего для меня. Нужно ли это, сработает ли это, адекватный ли это вообще шаг.
2. Ни один эрг, какого бы размера вложение он ни сделал, не сможет единолично влиять на процесс принятия важных и судьбоносных решений на ММОзговеде. Это просто невозможно, во-первых, потому, что нельзя просто купить решение, а во-вторых — потому что по-настоящему важные решения все равно принимаются редакцией, и хоть бы обплатись.
3. В контексте появления нового контента на портале нет проигравших и нет победителей. Я хотела отправить Атрона в BnS, а вместо этого он отправился в TESO. И что же я проиграла? Ну да, забавно было бы отправить Атрона в BnS, но и обзор по TESO я прочитаю с большим удовольствием. Я хотела бы появления формата микро-заметок, а вместо этого приоритетным посчитали развитие профиля. Я проиграла? Нет, потому что профиль мне тоже нужен.
Дело не в «дружности» эргов. Я могу вообще их не знать. Дело в целях, которые нас всех тут собрали. Наша цель — развитие портала, появление новых возможностей и нового контента, поэтому никто из нас не проигрывает, даже если прямо сейчас выполняются не наши личные пожелания.
Это — не игра. Это серьезная взрослая жизнь, в которой у людей в одной лодке общие интересы и пожелания, и да, кто-то может позволить себе вкладывать больше в развитие ресурса и влиять на него чуточку (а не прямо пропорционально, кстати!) сильнее.
И то, что вы говорите о «силе в конкурентной среде», говорит о том, что вы очень сильно заигрались и не видите разницы между p2w, где каждый сам за себя с мечом тысячи истин наперевес, и нормальной организационной структурой, где совет акционеров решает важные вопросы, но никто не хочет разорить компанию и никто — никто! — не знает на 100%, как именно она должна развиваться, чтобы всем было максимально хорошо.
Это не та конкурентная среда. Это конкуренция идей и желаний, а не ресурсов и возможностей, которые переплавляются в личные достижения. Потому что они НЕ переплавляются, мы связаны одной целью и одним глобальным интересом.
Было бы, как минимум, цивилизованно, если бы вы с той же тщательностью, с которой я раскладывал по полочкам вашу систему, попробовали проанализировать нашу и указали бы, где же в игровой части нашего проекта продаются преимущества за донат.
С такой же тщательностью — лень разворачивать… дискуссию.
Но… «Подписочная» модель на патреоне выглядела бы как один уровень поддержки — вы платите нам 5 (10) долларов в месяц и имеете следующие бонусы. Любой патрон может платить только один вариант подписки не более и не менее.
Все остальные варианты отправляют ММОзг в один лагерь с автором с которым вы спорите.
И не так важно торгуете вы мечом тысячи истин или косметикой (званиями от эрга до гэрцога) — все начинают с торговли косметикой. Это мне кажется даже ты понимаешь.
Ты действительно считаешь, что если мне интересны квесты в ММО, это одновременно означает, что любой другой, более песочный геймплей ММО, мне менее интересен?
Повторю свою ключевую мысль. Вопросы производительности важны, но они решаемы, причем даже в одно-два лица/разработчика, при мизерном бюджете (см кейс Haven & Hearth). В случае хорошей команды и бюджета побольше они решаемы с очень крутым результатом (см кейс EVE-Online). Поэтому я не вижу особого смысла рассуждать о технической стороне вопроса.
Финансирование и инвестиции в то, что не факт что стабильно заработает или будет интересным — вот это вопрос, да. Но он не имеет отношения к ООП, архитектурам процессоров или гейм дизайну.
Понятное дело, что софт не создается путем бросания денег в монитор. Но, как и со всем остальными предприятиями в жизни, это вопрос знаний, навыков, профессионализма, управления, эффективности, которые и определяют успех.
Но намекну, что я не просто так упомянул архитектуру процессоров и то как они воспринимают вообще любые иерархии, даже не слишком сложные.
Ах да, я бы не сказал, что кого-то защищаю, как раз даже во многом наоборот.)
Я к большому сожалению просто куда-то посеял сгенерированную в Doxygen иерархию классов для Unreal, уж больно много места все это занимало.
Что ж, по остальному могу пройтись в след. раз, т.к. я, если честно, не думал, что так много людей тут есть, кто прекрасно бы все понял и «в терминах», так сказать.
В статье, правда, много воды. Также хотелось бы реальных примеров, а не иерархий диалогов печати файла и сохранения шаблонов, которые не имеют отношения к играм.
Не соглашусь с объявлением ООП виновником всех бед. Если сталкиваетесь с проблемами в иерархиях, то не нужно делать такие длинные и развесистые иерархии, а лучше использовать композицию. Я хоть и не игру делаю, но у меня обычно трейт или абстрактный класс, который расширяет библиотечный класс, и у него пара наследников. Всё.
Писать многопоточный код намного сложнее, чем однопоточный, но причём здесь ООП? Разве многопоточный код со struct-ами на чистом С или даже ассемблере выглядит проще и понятнее? В любом случае нужно или куча синхронизаций при работе с shared mutable state, или неизменяемые объекты и функциональный подход (всё равно объекты, как ни крути). Или пересылать сообщения в очередях.
Для высоконагруженных систем есть микросервисы, которые, опять же, на объектно-ориентированных языках обычно пишутся.
Этот принцип подходит далеко не всегда, а только для тех частей программы, которые Не нужно развивать. Например, ланчер или окошко настроек. Их один раз написали, и больше новых функций от них не потребуется. А вот для основного кода, который всё время развивается, лучше другой принцип — постоянный рефакторинг. Тогда и будет нормальный код, который не придётся полностью переписывать, а только частично поменять при добавлении новой механики.
Несмотря на все это, автор приходит к правильным выводам:
Внезапно оказывается, что это всё бизнес, и дешевле копировать, чем создавать что-то новое. Но в этом то и отличие индустрии от искусства. Приоритеты разные. Только архитектура и гейм-дизайн здесь не при чем.
ООП лишь принцип. Как его применять — отдельная тема. Знание основ Software Engineering для гейм-дизайнера важно (и обязательно в случае с независимыми разработчиками, которые носят множество шляп одновременно). Можно делать плохие системы, а можно и хорошие, регулируя количество внутренних и внешних связей, используя контейнеры и компоненты, и т.д.. Это, в буквальном смысле, целая наука. Требующая профессионального подхода.
Точно также и гейм-дизайн постепенно начинают преподавать в университетах, это же тоже целая наука. А упрощение дизайна систем, в ней, на мой взгляд, не стоит подавать как нечто плохое.
Наоборот, упрощение — крайне полезно. Если можно что-то упростить, не теряя сути, то это плюс, а не минус. Игры должны быть доступны и понятны.
Ведь игра — набор механик, которые призваны создавать некий опыт. Как именно они это делают, иногда скрываясь от взгляда окружающих и срезая углы, там, где это можно сделать, не важно.
PS: начинающий независимый гейм дизайнер/софт инженер, адепт C#/Unity
Вот, наверное, народ обиделся и пошел отзывы писать.
А тем, кто спорил — заткнули рот)
Никакого сожаления. Иначе День Сурка будет продолжаться. Сколько можно игнорировать элементарные аргументы? Довод, простой как дверь: не надо рассказывать о том, что если можно оплатить что-то в игре с магазином игровыми деньгами, то это «не нарушает баланс». Я не претендую на истину, но оставил ссылку на развёрнутый текст, объясняющий мою позицию.
Человек ответил «не вижу в этом проблемы» (каждый имеет право на своё субъективное отношение, и комментарий никто не минусовал), а потом признался, что даже не переходил по ссылке. Вот такой уровень дискуссии я оцениваю минусом. Туда же реплики «Вас никто не заставляет играть в эту игру» в качестве «аргумента», который не имеет никакого отношения к сути того, что мы обсуждаем, или резкая смена темы в сторону того, что сюжет или данжи в магазине не продаются, хотя мы говорили исключительно о предметах, которые продаются в магазине. Или прекрасные вопросы «что мешает вам пойти на аукцион и купить эти же самые костюмы?» на рубеже 2018-2019 годов. После десятков обсуждений этого вопроса и объяснений, что таким образом ты снабжаешь донатера своей валютой, работаешь на него, помимо того, что должен тратить время и усилия на заведомо обесцененные достижения.
Боюсь, если бы Ассур не ушёл в минус, этот цирк продолжался бы. Я лично не хочу видеть такой уровень дискуссии. Да боже, кого я обманываю, вообще называя это «дискуссией»?
Сотни раз говорилось, что минусы для этого и нужны — чтобы не порождать бесконечное бодание и хождение по кругу:
Я следил за многими другими форматами, и везде видел примерно одно и то же — в любой момент самый крикливый или упрямый участник дискуссии мог поднять ставку и у тебя оставалось только два варианта: перебить эту ставку своей репликой, либо сказать «пасс». Пасс практически везде трактовался как проигрыш («тебе просто нечего на это возразить»), попытка перекрыть ставку оппонента приводила к невольному выравниваю дискуссии до уровня предыдущей ставки. Собственно, именно так и появился троллинг — это просто попытка заставить тебя сделать ставку за гранью допустимого и, к примеру, вынудить модератора тебя забанить. Все это прекрасно процветало, включая формулы «кто последний сказал, тот и прав», «кто громче, тот и прав», «кто более грубый, напористый, тот и прав». И никакая отрицательная карма, позволяющая человеку продолжать писать, никого не останавливала, сути процессов не меняла. Поэтому «минус», приближающий человека к молчанке (временной, прошу заметить), как раз то, что отличает нашу систему от других. Минус можно получить только за комментарий. За заметку, отдельно оформленное мнение, его получить физически нельзя.
В конце концов, всегда можно обратиться к тексту «О жертвах системы».
Так что конкретно в этом случае «Заткнись. Заткнись. Заткнись» очень в тему в вашу сторону.
ЗЫ: У крутых вроде другое какое-то классное место появилось для общения? Или тянет к тирании?)
— продавая оружие, наборчики, домики и костюмы, разработчик игры работает в конкурентной среде — делает благо для одних, которое является предметом зависти других. ММОРПГ — это конкурентная среда, где каждый может получить больше, чем другой, в контексте главной функции игры — в контексте социализации и игрового процесса.
ММОзговед — это тоже конкурентная среда. Но только в одном отношении: в части системы яркости и энергии. И эта часть системы, уж простите, не покупается и не продается. «Игровой процесс» остается закрытым и самоценным.
В остальном все возможности для инвесторов не создают конкурентного преимущества и не ухудшают положение других игроков. Все, что получают эрги, только улучшает контент портала. Кому может навредить возможность инвестора отправить представителя редакции в определенную ММО с целью написания отчета? Предложение взять интервью? Или перевести статью? Тем, что на ММОзговеде появится новая статья или новый перевод?
Это и есть то самое «лучшее обслуживание клиента», которое вас так пугает?
У вас, опять же, какие-то дикие, людоедские представления о том, как работает структура управления проектом. Я попробую по пунктам из своего обширного неигрового опыта, ладно?
1. Ни у одного эрга (или любого другого члена правления) нет 100%-но правильных представлений о том, как именно нужно развивать проект. Если я что-то предлагаю, то я никогда не настаиваю на этом предложении. Ни силой денег, ни силой убеждения. Потому что проект верификации предложения коллективом — это важный процесс прежде всего для меня. Нужно ли это, сработает ли это, адекватный ли это вообще шаг.
2. Ни один эрг, какого бы размера вложение он ни сделал, не сможет единолично влиять на процесс принятия важных и судьбоносных решений на ММОзговеде. Это просто невозможно, во-первых, потому, что нельзя просто купить решение, а во-вторых — потому что по-настоящему важные решения все равно принимаются редакцией, и хоть бы обплатись.
3. В контексте появления нового контента на портале нет проигравших и нет победителей. Я хотела отправить Атрона в BnS, а вместо этого он отправился в TESO. И что же я проиграла? Ну да, забавно было бы отправить Атрона в BnS, но и обзор по TESO я прочитаю с большим удовольствием. Я хотела бы появления формата микро-заметок, а вместо этого приоритетным посчитали развитие профиля. Я проиграла? Нет, потому что профиль мне тоже нужен.
Дело не в «дружности» эргов. Я могу вообще их не знать. Дело в целях, которые нас всех тут собрали. Наша цель — развитие портала, появление новых возможностей и нового контента, поэтому никто из нас не проигрывает, даже если прямо сейчас выполняются не наши личные пожелания.
Это — не игра. Это серьезная взрослая жизнь, в которой у людей в одной лодке общие интересы и пожелания, и да, кто-то может позволить себе вкладывать больше в развитие ресурса и влиять на него чуточку (а не прямо пропорционально, кстати!) сильнее.
И то, что вы говорите о «силе в конкурентной среде», говорит о том, что вы очень сильно заигрались и не видите разницы между p2w, где каждый сам за себя с мечом тысячи истин наперевес, и нормальной организационной структурой, где совет акционеров решает важные вопросы, но никто не хочет разорить компанию и никто — никто! — не знает на 100%, как именно она должна развиваться, чтобы всем было максимально хорошо.
Это не та конкурентная среда. Это конкуренция идей и желаний, а не ресурсов и возможностей, которые переплавляются в личные достижения. Потому что они НЕ переплавляются, мы связаны одной целью и одним глобальным интересом.
Еще раз: это не игра.
Chiarra, 9-10 апреля 2018.
Но… «Подписочная» модель на патреоне выглядела бы как один уровень поддержки — вы платите нам 5 (10) долларов в месяц и имеете следующие бонусы. Любой патрон может платить только один вариант подписки не более и не менее.
Все остальные варианты отправляют ММОзг в один лагерь с автором с которым вы спорите.
И не так важно торгуете вы мечом тысячи истин или косметикой (званиями от эрга до гэрцога) — все начинают с торговли косметикой. Это мне кажется даже ты понимаешь.