• Как физический движок использовать для 3D графики С++?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Если вам для разработки игр так не нравится шедевральный Unity с его языком C#, который нынче (2019) практически все используют, и вы хотите именно C++, то обратите внимание на Unreal Engine. Этот движок очень хорошо устроен внутри, имеет красивый и понятный код. Для C++ это лучший движок, примерно на равне с Unity, только с более высоким порогом вхождения (школьники его уже не осилят, нужен бородатый программист).
    Ответ написан
    Комментировать
  • Какие языки нужны для написания игр и приложений на Android?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Для начала немного не по теме вопроса:
    • Чтобы стать разработчиком игр, нужно знать не только языки. Причем, языки составляют где-то 10% от всех знаний.
    • Разрабатывать игры в одиночку почти невозможно. Конечно, если это не пятнашки без особых фич. Средние игры, и даже хорошие игры с оригинальной идеей будут приносить околонулевой доход. Игра должна быть отличной, чтобы шанс на успех был выше нуля. А для этого нужен широкий спектр знаний и навыков, которые одном человеку освоить сложно (долго).

    По теме вопроса:
    • Делать игры лучше на Unity, поэтому язык C#. Но Unity это не только язык, это ещё и движок конкретно для игр, который на сегодня (2019), можно сказать, победил все остальные движки. Он имеет большие возможности, производителен, удобен в использовании, и всё это в купе с простотой освоения (низкий порог вхождения).
    • Для собственного сайта подойдёт почти любой язык, но выбор зависит от игры. Ведь вам нужен не столько сайт, сколько игровой сервер (бэкенд). И реализация будет зависеть от специфики игры. Если у вас игра сама как сайт, т.е. переходы по страницам через кнопки, то можно игровой сайт поместить в приложение. В этом случае и PHP подойдёт. Если игра в реальном времени (типа шутера или гонок), при этом огромное число пользователей, то узким местом станет нагрузка на сервер, да и вообще стабильность. Так что бэкенд придется делать на высокопроизводительном языке, таком как C/C++. Ну или, например, Elixir (Erlang). Если у вас что-то среднее между этим, то подойдёт, опять-таки, любой язык, умеющий работать с сокетами и поддерживать сессию игрока. Как я и говорил в преамбуле, всё это сложно, и даже для выбора и реализации архитектуры сервера желателен отдельный специалист.
    Ответ написан
    Комментировать
  • Как получить и записать в ячейку все совпавшие элементы из столбца гугл таблицы?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    1. Выберите пункт меню Инструменты -> Редактор скриптов.
    2. В появившийся редактор скопируйте следующий код:
      Код
      function TOSTER(input) {
        var first = input[0];
        var s  = "";
        var col_search = -1;
        var col_name = -1;
        var col_code = -1;
        var x,y;
        for (x=0;x < first.length; x++) {
          if (first[x] == 'SEORCH_VALUE') col_search = x;
          else if (first[x] == 'NAME') col_name = x;
          else if (first[x] == 'CODE') col_code = x;
        }
        if (col_search === -1) return "Ошибка! Нет колонки с шаблонами поиска.";
        if (col_name === -1) return "Ошибка! Нет колонки со значениями.";
        if (col_code === -1) return "Ошибка! Нет колонки с кодами значений.";
        var table = [['RESULT']];
        for (y=1; y < input.length; y++) {
          var search_text = input[y][col_search];
          if (!search_text || search_text === "") continue;
          var result = "";
          for (var yy=1; yy<input.length; yy++) {
            if (search_text == input[yy][col_name]) { //Совпадение
              if (result !== "") result += ", ";
              var code = input[yy][col_code];
              result += code;
            }
          }
          if (result === "") result = "Not found.";
          table[y] = [result];
        }
        return table;
      }

    3. В любом месте страницы вставьте формулу =TOSTER(A1:C23)
    Ответ написан
    Комментировать
  • Обновлятся до нового макбука или нет?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Подними до 16 Гб. Новый дорого. Когда старый сломается, тогда новый можно покупать. К тому же в новых моделях добавлять память уже нельзя. Если диск старый, то его тоже можно поменять, но ключевой фактор скорости это всё же оперативная память, на неё упор и делай.
    Ответ написан
    Комментировать
  • Как в Google Таблицах сделать функцию которая проверяет все ячейки в одном столбце и передает эту строку в другой лист?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    В первом столбце: =IF('Лист1'!A1="Яблоко";'Лист1'!A1;"")
    Во втором и последующих (растянуть): =IF(A1="";"";'Лист1'!B1)
    Далее можно растянуть вниз. Пример
    Ответ написан
    8 комментариев
  • Как оптимизировать выборку с одновременной сортировкой?

    dollar
    @dollar Автор вопроса
    Делай добро и бросай его в воду.
    В общем, оказалось, что существенно ускорить алгоритм можно, если хоть капельку известна природа исходных данных.
    • Если известно распределение и границы, то почти точно вычисляем порог, выше которого будут наши 10 элементов. Раскладываем массив на две части (выше порога и ниже порога) за O(N). Даже если набрали 11-12 элементов больше порога, то за O(мало) уже смело сортируем и находим 10.
    • Если распределение не известно, но известны границы (то есть минимум и максимум), то делаем предположение, что распределение равномерное, после чего вычисляем порог и задача сводится к предыдущему пункту.
    • Если границы не известны, то за O(N) вычисляем минимум и максимум, после чего задача сводится к предыдущему пункту.

    Конечно, всегда можно специально подсунуть такие данные, что алгоритм будет не эффективен. Но противодействие такому за рамками вопроса.
    Ответ написан
    Комментировать
  • Почему у Godot в android версии не работает per-pixel освещение?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Попробуйте заменить per-pixel на per-vertex.

    P.S. Не лишним было бы в вопросе указать модель смартфона и версию Android.
    Ответ написан
  • На чём создавать игры? Kivy или PyGame?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Говоря по существу, игры на Python лучше вообще не делать, тем более под Android. Если вы хотите именно делать игры, то сразу откажитесь от Python в пользу C# (движок Unity) или Java (потому что чисто под Android, так что тоже обоснованный выбор). Если же очень нравится Python, то посмотрите на движок Godot, это интересный зверь, и там встроенный язык очень похож на Python. Ну а Kivy и PyGame не вариант ни разу, разве что змейку сделать, а в чуть сложнее проекте намучаетесь.
    Ответ написан
    4 комментария
  • Прошу помощи с GameMaker Studio 2?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    но этого не происходит

    А что происходит? Нужно указывать такие подробности.
    Теперь придется перебирать варианты на основе догадок...
    • Объект не отображается. Это значит, что вы его не добавили в комнату. Нужно перетянуть объект в комнату, чтобы он там был виден. Естественно, у объекта должен быть хоть какой-то вид, спрайт или даже анимация, иначе его также не будет видно даже после добавления в комнату.
    • Объект не двигается. На самом деле двигается. У вас же событие Create, которое срабатывает единожды при создании. Вот оно и срабатывает, и объект смещается влево на 200 пикселей. Просто вы этого не замечаете, потому что для вас объект сразу как бы спавнится в других координатах в момент запуска игры.


    Попробуйте так:
    1. Add Event ---> Key Down ---> Left
    2. Добавьте код:
      move_contact_all(180,200);
    3. Запустите игру и нажмите стрелку влево. Объект должен перемещаться при нажатой клавише и останавливаться при отжатии.


    И еще вопрос, можно ли пользоваться данной справкой

    К слову, это нарушение п.3.7 правил Тостера. Лучше было бы отдельный вопрос создать, никто за это не осудит и не накажет. Но всё же отвечу:
    Справка та по Game Maker 8.0, что как бы совсем другой продукт. Пользоваться ей не стоит, она устарела. Пользуйтесь встроенной справкой в GameMaker Studio 2, там всё есть. А чего нет, всегда можно спросить на официальном форуме. Здесь, на Тостере, про этот движок почти не знают (кроме меня разве что), а там обязательно подскажут. Но нужно знать английский.

    Добавлю, что лучше не тратить время на освоение данного движка. Но это моё личное мнение.
    Ответ написан
    Комментировать
  • Где найти программиста и сколько заплатить?

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

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

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

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

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Универсальный способ в лоб - взять и создать отдельную функцию.
    Код
    let modal = document.getElementById('modal');
    let modal2 = document.getElementById('modal2');
    
    function commonFn(e) {
        e.style.display = "block";
    }
    
    link.onclick = function() {
        commonFn(modal);
    }
    
    link2.onclick = function() {
        commonFn(modal2);
    }

    Более хитрый, но странный способ - каким-то образом получить массив элементов. Способы есть разные, не о них речь.
    Код
    let modal = document.getElementById('modal');
    let modal2 = document.getElementById('modal2');
    
    let links = [link, link2];
    let modals = [modal, modal2];
    
    links.forEach((L,i)=>L.onclick = function() {
        modals[i].style.display = "block";
    });

    К слову, вместо .onclick= лучше использовать .addEventListener('click',

    Ну и наиболее правильный, как мне кажется, способ - это каким-то образом связать каждый link с соответствующим modal. Выше эта связь происходит через индекс в массиве. Но может быть, что можно как-то по-другому, через цепочку соседних или родительски-дочерних элементов вычислить. В идеале у link и modal должны быть похожие атрибуты, с помощью которых функция в onclick, зная атрибут у link, сможет вычислить атрибут у modal, а затем найти его по этому атрибуту на странице. Например, одинаковый класс (один из).
    Ответ написан
    Комментировать
  • Игровые движки и 3Д моделирование?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    1) Unity - отличный вариант. Хорошее соотношение возможностей движка и простоты изучения. Несомненный лидер в геймдеве. Шедевр по современным меркам движков.
    2) Unreal Engine - отличный вариант. Но только если вы опытный программист С++, да ещё и точно знаете, что хотите от игры, и вам нужно больше свободы и специфических возможностей, чем предлагает Unity.
    3) CryEngine - довольно плохой вариант из-за низкой гибкости. Как говорится, что ни делай на CryEngine, всё Crysis выходит.

    Какую лучше выбрать программу для 3D моделирования для движков?

    А это нарушение п.3.7 правил данного сервиса, потому что отдельный вопрос. Но всё же отвечу. Программы для 3D моделирования примерно одинаковы. Совместимость с движками везде хорошая. Я бы выделил 3dsmax, также blender выделяется бесплатностью (но не какими-то супер фичами). Но всё же возможности примерно одинаковые, потому лучше использовать ту программу, к которой уже привыкли, или выбрать по другим (любым) соображениям. Основные - это Blender, Maya, 3ds Max.
    Ответ написан
    Комментировать
  • Как организовать учетную запись клиента в игре?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    У нас на обоих клиентах должно по идее одно и то же отображаться?

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

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

    В любом случае вам нужно освоить понятия (игровая) сессия. Потому что она привязывается к устройству. Обычно, в момент авторизации по логину\паролю устройству выдаётся некий ключ (токен), и далее доступ осуществляется по нему. Для пущей надежности можно нумеровать пакеты, тогда сессию вообще не получится перенести на другое устройство, но это уже тонкости безопасности, в простом варианте это совсем не обязательно.

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

    В общем, ответ: 1) сделайте сессии 2) кикайте из старой сессии при создании новой.
    Ответ написан
    5 комментариев
  • Ошибка скрипта: bad argument #2 to 'format' (number expected, got string) stack traceback: [C]: in function 'format'?

    dollar
    @dollar Куратор тега Lua
    Делай добро и бросай его в воду.
    sampSendChat(string.format('/get guns %d', tonumber(msg)))


    А еще можно проще:
    sampSendChat('/get guns ' .. msg))
    Ответ написан
    Комментировать
  • Как понять устройство Unity?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Разные тематические видео-курсы:
    https://learn.unity.com/

    За деньги более индивидуальный подход:
    https://unity.com/ru/learn-premium

    Ну а так вообще можно просто API смотреть или читать официальное руководство, вот и всё. Ничего более чёткого не придумано пока что.

    На пальцах могу дать вводную. Вам предлагается иерархия объектов, к которой будет привязана вся логика работы игры (в рамках одной сцены). В каждом объекте могут быть в свою очередь разные компоненты, несущие различную функциональность, например расположение объекта в игровом мире и прочие свойства. Координаты объекта считаются не от глобального начала координат мира, а от координат родителя. Гениально и просто, как говорится. Удачи в освоении!
    Ответ написан
    Комментировать
  • Сколько места занимает iOS на iPad?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    iOS весит около 3 Гб, но со временем эта цифра может увеличиться на примерно 10 Гб всяким системным мусором. Избавлению от этого мусора помогает только полный сброс (настроек и контента), что не очень удобно.

    Лучше брать на 64 и более.
    Ответ написан
  • Могут ли пользователи загрузить вирус на сайте?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    В общем случае нет. Ведь конфиг не сохраняется на сервере. А если сохраняется, то без права запуска. Хотя в теории вирус можно загрузить и без конструктора, но это другая история.

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

    Например, если в поле вводится число, то это можно легко проверить.

    А исключить php в текстовых полях можно поиском пары символов "<?" - и если такая подстрока встречается, то это плохой текст, и конструктор должен запрещать его.
    Ответ написан
    2 комментария
  • Как создать текстовую онлайн игру?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    1. Обычный сайт. "Мультиплеер" подразумевается по умолчанию. Это голый html/js плюс что-то на сервере (например, php и mysql).
    2. Обычный хостинг.

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

    Кстати, "просто" создать хорошую игру не получится. Геймдев это очень сложная область. Прикиньте, сколько времени у вас это займёт, и смело умножайте на 10. А шанс, что игра-таки будет доведена до конца, не выше 10%.
    Ответ написан
    Комментировать
  • Как заблокировать запросы в браузере (Vk, Yandex, Mail)?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    uBlock Origin
    Ну или Ghostery, как уже отметили.
    Лично я использую оба.
    Ответ написан
    Комментировать
  • Как узнать, каким программам разрешено вносить изменения на компьютере?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Если трояну разрешил доступ, то всё, дальше он обойдёт любые списки.

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