• Как организовать структуру игры Монополия на ECS?

    @MarkusD
    все время мелю чепуху :)
    Самой главной ошибкой начинающих работать с ECS людей является попытка засунуть в ECS сразу и вообще всё.

    У тебя игра по типу монополии. Что есть в монополии?
    В игре заявлены игроки, дискретное поле, активы и события. Еще могут быть заявлены дополнительные правила.
    Игроки и активы имеют свои эффекты и могут быть деактивированы событиями. Собственно, это и есть сущности игрового ECS-мира.

    И тут важно понять, что не сами игроки и активы являются сущностями ECS, а лишь свойства игроков и активов являются сущностями.
    Сами игроки являются внешними к ECS, для каждого игрока в ECS заводится сущность, идентификатор которой сразу прикрепляется к объекту игрока. Теперь игрок может взаимодействовать с миром игры через данные своей сущности. Точно так же делается и для активов.

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

    По своей сути, в монополии ECS будет выполнять задачу документооборота между сущностями. Добавить компонент владения, убрать компонент владения, зачислить деньги, списать деньги, добавить компонент активности, убрать компонент активности. ECS управляет только общими свойствами между полностью обезличенными сущностями, где между игроком и купленным им активом нет фактической разницы.
    Механизм перевода хода тоже является полностью отдельным от ECS, он может только опираться на набор компонент игроков и данные компонент.
    Ответ написан
    3 комментария
  • Как отключить сглаживание в love2d?

    dollar
    @dollar Куратор тега Lua
    Делай добро и бросай его в воду.
    Создайте поверхность в 640 пикселей, и выводите всю графику на неё.
    При этом округляйте координаты, чтобы они все были целыми.
    Затем уже растягивайте поверхность на весь экран, используя фильтр nearest.
    Ответ написан
    2 комментария
  • Как верстать под печать?

    @acwartz
    Тут должна быть ваша реклама.
    Но мне кажется, что это ерунда. Туда отдельно писать код для всей страницы снова?

    На чистом CSS - да.

    Чтобы скрасить монотонность копирования одного и того же, существуют препроцессоры css (LESS, SCSS, Stylus), и вместо дублирования под все медиа, Вы сразу пишите медиа запросы к конкретному классу, в последующем препроцессор сформирует нужное, и оно будет ожидаемо работать.
    Например:
    .sidebar {
      width: 300px;
      @media screen and (orientation: landscape) {
        width: 500px;
      }
      @media screen and (min-width: 640px) {
        width: 350px;
      }
      @media print {
        display: none;
      }
    }

    на выходе будет:
    .sidebar {
    	width: 300px;
    }
    
    @media screen and (orientation: landscape) {
    	.sidebar {
    		width: 500px;
    	}
    }
    
    @media screen and (min-width: 640px) {
    	.sidebar {
    		width: 350px;
    	}
    }
    
    @media print {
    	.sidebar {
    		display: none;
    	}
    }


    Отладка меди-запросов включается в DevTools доп утилитах рендера:
    5f9925e993892286417134.png
    Туть:
    5f99260ea64cd837540535.png
    Ответ написан
    3 комментария
  • Как верстать под печать?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Ну давай посмотрим на примере тостера.

    Попробуем распечатать страницу с вопросом.
    Для начала вопрос: для чего мы его распечатываем? Очевидно, нам интересен вопрос, и главное его решение. Именно это мы хотим распечатать на бумаге.

    Что же нам предлагают верстальщики из ТМ?
    5f98935dba783645914348.png


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

    Смотрим дальше
    5f98942e4692f875969058.png


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

    В самом конце аж три листа совершенно бесполезной информации.

    В общем мы видим совершенно не оптимизированную под печать страницу.

    А вот если не забывать про печатные устройства, можно все это лишнее как минимум спрятать.
    Ответ написан
    2 комментария
  • Какие есть (все) варианты/способы/виды создания игр?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Вот все игровые движки.

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

    Учитывая ваш вопрос, вам понадобится потратить минимум 1 год на профильное обучение в области разработки игр, прежде чем браться за организацию создания вашей игры. Возможно, после обучение вы вообще откажетесь от этой затеи.
    Ответ написан
    2 комментария
  • Как сделать управление объектом на сайте с клавиатуры?

    hzzzzl
    @hzzzzl
    document.addEventListener('keydown', function(e) {
      console.log(e.key)
    })


    5f0058f84aaec940258128.png

    ну а потом сравниваешь e.key с нужными кнопками, и дергаешь нужную функцию для движения
    Ответ написан
  • Самый легкий в изучении игровой движок для С++?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Рекомендую посмотреть Godot —сейчас я бы назвал его самым интересным, продуманым и понятным из небольших движков.
    Ответ написан
    2 комментария
  • Где найти актеров на озвучку NPC?

    milssky
    @milssky
    Координатор племени фиолетовых обезьянок
    Гуглите сервисы озвучивания или ищите услуги диктора. Что первый, что вторых валом.
    Ответ написан
    1 комментарий
  • Как поворачивать координату линии?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Начните с того, что, хотя бы, расскажите про двумерный или трехмерный случай идет речь.
    Обычно конец луча никто никуда не поворачивает.
    У вас есть луч и поверхность. Луч - это половина прямой. Если задать его уравнением и также уравнениями задать поверхность, а потом дополнительным неравенством добавить ограничения (поверхности и прямой), то решение получившейся системы будет точками пересечения луча и поверхности. Нас интересует ближайшая точка пересечения от начала луча.

    Ваша поверхность в точке пересечения с лучом имеет нормаль. Это перпендикуляр к поверхности в данной точке.
    Итак, дано:
    точка старта луча (O),
    точка пересечения (P) луча с поверхностью,
    вектор нормали (n) в этой точке.
    Нужно получить вектор (v) направления нового луча из точки P.

    Построим вектор PO = O - P (да-да, любые координаты - это вектор из начала координат) Если вычесть из вектора O вектор P, получим вектор направления из P в сторону O.

    Итак, у нас есть два вектора: PO и n. Угол падения у нас равен углу отражения и искомый вектор v будет лежать в плоскости этих двух векторов. Нам нужно повернуть вектор PO в упомянутой плоскости на удвоенный угол между нормалью и вектором PO.

    Любую плоскость можно задать точкой и нормалью (вектором перпендикуляра к плоскости). Чтобы получить этот перпендикуляр, назовём его вектором w, нужно сделать векторное произведение PO на n. Это будет ось вращения. Она направлена будет по правилу "буравчика".
    Чтобы повернуть вокруг этой оси ваш вектор PO, проще всего умножить его на матрицу поворота.
    Вот статья, которая это с рисунками показывает.
    https://scicenter.online/avtomatizatsiya-scicenter...
    Ответ написан
    3 комментария
  • Где найти игры для веб-программиста?

    Beeetle
    @Beeetle
    https://flexboxfroggy.com по флексам
    https://cssgridgarden.com по гридам
    Очень прикольные сервисы по изучению в игровой форме
    Ответ написан
    2 комментария
  • Выполнение двух асинхронных функций?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Если результат выполнения commit нужен, тогда так:

    await Promise.all([ one(), query().then(commit) ])

    Если не нужен:

    await Promise.all([ one(), query().then(r => (commit(), r)) ])
    Ответ написан
    1 комментарий
  • Доступность ассета после покупки?

    GavriKos
    @GavriKos Куратор тега Unity
    Когда я покупаю ассет он доступен мне для каждого проекта, или одна покупка на один проект?

    Для каждого проекта

    Если один из нас купит ассет и импортирует его в проект, он будет доступен каждому члену команды, или нет?


    А вот тут нюансы. Есть лицензии Per seat, есть - где ничего не указано.
    Ответ написан
    1 комментарий
  • Как включить отображение полигонов в Unity?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    В SceneView окне - есть на верхней "кромке" кнопки и галочки. там есть режимы отображения, в том числе и Wired (или как он там зовется) думаю сможете найти))

    а про картинку - разрешение и сглаживание, но оно не задаром дается, на ту же мобилочку - будет тяжко без просадочек сделать "гладенько"))

    просто примите как данность в Scene и в Game - по разному рендерится картинка.

    давайте даже так. ссылочкой, раз не читали видать всю документацию)
    https://docs.unity3d.com/Manual/ViewModes.html
    Ответ написан
    1 комментарий
  • VueJS: mutation-types и action-types?

    kulakoff
    @kulakoff Куратор тега Vue.js
    Vue.js developing
    Ответ банальным будет - делайте так как удобнее вам. Если не видите причин использовать - не используйте. Я ни в одном проекте пока не нашёл удобным для себя это делать.
    Ответ написан
    3 комментария
  • Где найти программиста и сколько заплатить?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Огорчу. Ваша идея ничего не стоит (как и любая идея). Если вы по каким-то причинам думаете, что идея стоящая, то это главная ошибка. Естественно, я измеряю стоимость в деньгах, то есть в прибыли.

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

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

    Понадобится не только программист, но и другие специалисты. Минимальная стоимость хорошей игры будет более 100 тыс. долларов. В случае успеха это ничто, потому что прибыль всё окупит многократно, но шансы успеха крайне малы. А в случае провала, что более вероятно, вы просто потеряете эти деньги. Вы готовы к этому?

    Как вы хотите
    Вы платите программисту немного денег, он всё делает. Вы публикуете игру, а дальше толпы фанатов бросают в вас деньгами. Вы не спеша их собираете, изредка поощряя какими-нибудь словами.
    Как будет
    Вы нанимаете программиста. Но оказывается, что еще нужен и художник. Вы нанимаете и его. Но время разработки оказывается 8 месяцев. Всё это время вы практически платите зарплату из своего кармана. В конце получается нечто типа игры, что вы публикуете. 10 человек скачивают игру, и всё, больше никто о вашей игре не знает и не узнает никогда.
    Как надо
    Вы изучаете, что такое геймдев и с чем его едят, читаете статьи, проходите курсы, получаете второе высшее в этой сфере. Затем вы подробно описываете свою идею, находите инвестора, который готов дать вам 300 тыс. долларов, собираете команду из 10-15 человек. Проходите через все этапы разработки, держите KPI на высоте. Готовую игру тестируете на небольшой аудитории (например, на Филиппинах). Это значит, что вы закупаете трафик оттуда, а не просто выкладываете игру в стор. Смотрите, как пойдет, что подрихтовать и т.д. Если игра в целом успешна, т.е. стоимость игрока меньше, чем прибыль с игрока (LTV > CPI), то вливаете огромные деньги для закупки трафика по всему миру, что естественно окупается и вы становитесь миллионером. Если же игра плохо себя показала, то больше не тратитесь на эту игру, а закрываете её, и приступаете к разработке следующей, но с учётом ошибок, либо вообще уходите из геймдева.
    Ответ написан
    Комментировать
  • ES5 only на возможном месте работы. Что скажете?

    JN0iZzze
    @JN0iZzze
    Во первых не понимаю что значит "исключает возможность использовать ES6+ вообще", никто не отменял babel и полифилы, независимо от того на чем был написан проект, другой вопрос что это тоже придется настроить в проекте самостоятельно.

    Во вторых любая первая работа даёт много опыта, НО отсутствие опыта с ES6+ сильно ограничивает возможности получить нормальную работу в будущем, например в нашей компании мы уделяем большое значение опыту работы с ES6 при собеседовании.

    Ну и в третьих опыт работы только с ES5 в 2019 году может дать тебе скорее "анти" опыт и кучу примеров как в 2019 писать код не надо, так что польза от такого опыта сомнительна впринципе.
    Ответ написан
    2 комментария
  • В чем преимущество localStorage перед cookie?

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

    Ну да, а cookieless домены от скуки прикручивают :)

    1. Не передаются = не жрут трафик
    2. Не передаются = нельзя перехватить
    3. Размер хранилища намного больше
    Ответ написан
    2 комментария
  • This - undefined в стрелочной функции?

    filgaponenko
    @filgaponenko
    frontend developer
    Стрелочная функция получает внешний, по отношению к себе, контекст;

    Выше вариант с currentTarget правильный.

    не знаю, как это исправить, кроме как переделать функцию на ES5, но хотелось бы оставить стрелочную


    Стрелочные функции это инструмент, который нужно применять по назначению, если для решения вашей задачи можно написать function declaration, то лучше не усложнять себе(и тому, кто будет читать ваш код) жизнь, а сделать именно так.
    Ответ написан
    1 комментарий
  • Программное решение для упорядочивания жизни?

    whillson
    @whillson
    помогу, чем смогу ^_^
    Пользуюсь и рекомендую Вам trello.
    Сама по себе канбан доска очень удобна.
    В trello вы можете создавать доски под свои нужды, начиная с работы, жизни, покупок, финансов и так далее.
    Проставляйте себе нужные теги, добавляйте колонки с описанием процессов. Этот сервис очень вам поможет, если вы вникните в суть.
    Ответ написан
    4 комментария