• Проблема разности частоты обновления на сервере и на клиенте?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Физическая модель мира не должна зависеть от ФПС на экране. Если ты победишь эту проблему
    то тогда никаких артифактов с отображением не будет. Для простоты ты можешь обновлять физику
    хоть 10 разв в секунду хоть 120 раз это не важно. А визуальная часть игры будет делать интеполяцию.
    Потому что засинхронизировать всех клиентов сетевой игры в принципе никогда невозможно.
    У них и таймеры будут не синхронны и производительность разная.
    Ответ написан
    Комментировать
  • Что творится с контекстом внутри ES6 классов?

    Alexandroppolus
    @Alexandroppolus
    кодир
    Потому что во время вызова конструктора ClassA, где у тебя вызывается init из ClassC, объект ещё "не доделан", где-то внутри, до полноценного экземпляра ClassC, в частности, ему ещё не добавлены приватные методы ClassC.

    Скопируй в консоль Хрома этот код:
    код

    class ClassA {
        constructor(){
            this.#methidA();
            this.init();
        }
        
        init(){
        
        }
    
        #methidA(){
            console.log('in ClassA.#methodA');
        }
    }
    
    class ClassC extends ClassA {
        init(){
            console.log('*** this in init(): ', this);
            debugger;
        }
        
        #methidC(){
            console.log('in ClassC.#methodC');
        }
        callMethidC() {
            console.log('*** this in callMethidC(): ', this);
            debugger;
            this.#methidC();
        }
    }
    
    const c = new ClassC();
    c.callMethidC();



    и нажми ентер.

    на брекпоинтах разверни в консоли экземпляр класса, который будет в последних выводах в консоль (это надо делать именно во время остановок на брекпоинтах, иначе будет одинаково).
    можно увидеть, что в первом случае в [[PrivateMethods]] не хватает метода #methidC()

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

    надо поисследовать, почитать спецификацию. Сам их не использую, у нас на работе TS )
    Ответ написан
    2 комментария
  • Первая работа. Стоит ли идти в такую компанию новичку?

    vabka
    @vabka
    Токсичный шарпист
    Вообще, такого рода вопросы запрещены правилами, тк они привязаны к конкретной жизненной ситуации конкретного человека и провоцируют рассуждения на основе предположений (о ситуации, опыте, знаниях)


    Как часто вообще используются CMS в создании сайтов компаниями?

    Практически все небольшие компании делают свои сайты/интернет-магазины при помощи CMS.

    Более крупные - практически никто не использует CMS (либо используют своё узкоспециализированное решение).


    И вообще имею такой стереотип, что CMS - это не серьезно.

    Смотря с какой стороны смотреть:

    С точки зрения бизнеса - вообще насрать, каким именно образом решена задача, если она решена и даёт пользы больше, чем убытков.

    С точки зрения твоего личного роста как инженера - да, CMS - это тупиковая ветвь.


    И еще: на что стоит обратить внимание на первой работе?

    Узнавать заранее, как будет устроена работа и как тебя будут оценивать - это нормально.
    Просить прибавку к зп - это нормально.
    Иди с вопросами к твоему руководителю, если тебе не нравится работать в той команде/над тем проектом, на который тебя поставили - это нормально.
    Менять работу, если новое место работы обещает более интересные для тебя условия - это тоже абсолютно нормально.


    В любом случае всё время нужно будет развиваться и это зависит уже от челоека, а не от компании.

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


    Как бы вы поступили?

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

    Если с деньгами точно проблем нет (есть родители которые закидывают деньги или ещё какой спонсор) - можно попробовать ещё какое-то время потратить на учёбу (при работе фуллтайм времени и сил будет уже меньше)
    Ответ написан
    2 комментария
  • Как выкачать весь сайт?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    https://eternallybored.org/misc/wget/

    Чтобы скачать сайт целиком с помощью wget нужно выполнить команду:
    wget -r -k -l 7 -p -E -nc http://site.com/

    После выполнения данной команды в директорию site.com будет загружена локальная копия сайта site.com. Чтобы открыть главную страницу сайта нужно открыть файл index.html.
    Рассмотрим используемые параметры:
    -r — указывает на то, что нужно рекурсивно переходить по ссылкам на сайте, чтобы скачивать страницы.
    -k — используется для того, чтобы wget преобразовал все ссылки в скаченных файлах таким образом, чтобы по ним можно было переходить на локальном компьютере (в автономном режиме).
    -p — указывает на то, что нужно загрузить все файлы, которые требуются для отображения страниц (изображения, css и т.д.).
    -l — определяет максимальную глубину вложенности страниц, которые wget должен скачать (по умолчанию значение равно 5, в примере мы установили 7). В большинстве случаев сайты имеют страницы с большой степенью вложенности и wget может просто «закопаться», скачивая новые страницы. Чтобы этого не произошло можно использовать параметр -l.
    -E — добавлять к загруженным файлам расширение .html.
    -nc — при использовании данного параметра существующие файлы не будут перезаписаны. Это удобно, когда нужно продолжить загрузку сайта, прерванную в предыдущий раз.
    Ответ написан
    Комментировать
  • Какая физика нужна разработчику игр?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Щкольная физика нужна для ориентировочного понимания того, как устроен и работает наш мир.
    Когда вы будете разработчиком, то столкнётесь с очень разными задачами, в том числе далеко выходящими за рамки школьной физки. Но школа в целом и школьная физика в частности нужна в первую очередь не для получения конкретных знаний и заучивания конкретных формул, а для формирования УМЕНИЯ УЧИТЬСЯ, умения осваивать новые концепции, поступательно и планомерно разбираться в теоретических основах, ориентироваться в механике реального мира.

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

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

    Визика важна.
    Ответ написан
    3 комментария
  • Существует ли какая- та тула, плагин или просто сервис который бы помогал улучшить код.?

    vabka
    @vabka
    Токсичный шарпист
    На небольших масштабах с этим справляются различные инструменты статического анализа (типа sonar или pvs) а также твоя IDE (например в intellij idea ultimate достаточно много разных анализов и рефакторингов).

    Для более радикальных и неочевидных вещей, в теории, с этим может справиться github copilot. (но если ты сам плохо понимаешь, то он никакой пользы тебе в принципе принести не сможет)
    Ответ написан
    3 комментария
  • Существует ли какая- та тула, плагин или просто сервис который бы помогал улучшить код.?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Как только такая появится, вы станете не нужны.
    Ответ написан
    Комментировать
  • Как устроены хэштаблицы?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Сначала выделяется массив какого-то размера, например 256. Обычно длина - степень двойки. Потом хеш обрезается до размера таблицы. Если элементов становится слишком много, то происходит перехеширование - размер таблицы увеличивается, и все элементы в нее перезапихиваются.

    Но да, если в таблицу запихать много элементов, а потом почти все оттуда удалить, то она будет большая и почти вся пустая.

    Edit:

    Эта "проблема" никак не решается. Это и не проблема вовсе. Просто хеш-таблицы работают быстрее всяких балансированных деревьев или тупо сортированного массива за счет большего расхода памяти. Это нужно знать и дальше уже решать - что вам больше подходит под вашу конкретную задачу.
    Ответ написан
    Комментировать
  • Как создать объект с регистронезависимыми ключами?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Если завернуть объект в Proxy, можно будет изменять ключи при обращениях к объекту:

    const obj = new Proxy({}, {
      get(target, key) {
        const lowerKey = key.toLowerCase();
        return target[Object.hasOwn(target, lowerKey) ? lowerKey : key];
      },
      set(target, key, val) {
        target[key.toLowerCase()] = val;
        return true;
      },
      has(target, key) {
        return key in target || key.toLowerCase() in target;
      },
      defineProperty(target, key, descriptor) {
        return Object.defineProperty(target, key.toLowerCase(), descriptor);
      },
      deleteProperty(target, key) {
        return delete target[key.toLowerCase()];
      },
      getOwnPropertyDescriptor(target, key) {
        return Object.getOwnPropertyDescriptor(target, key.toLowerCase());
      },
    });
    Ответ написан
    1 комментарий
  • Как настроить вызов функции как только в массив что-то добавилось?

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

    Можете даже сделать массив приватным, если хотите. Тогда уж точно придётся добавлять данные через публичную функцию. Но в целом это не обязательно.
    Ответ написан
    1 комментарий
  • На IP моего сервера перенаправляются сотни доменов, как исправить?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Да просто разные боты ходят, ищут уязвимости, а в refereer пихают разный мусор.
    Ответ написан
    1 комментарий
  • Как отрисовывать линию в сторону курсора всегда фиксированной длинны?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    можно через Math.atan2() посчитать угол из центра на мышку.
    Зная угол — найти конец линии фиксированной длины length под этим углом:
    const { documentElement: el } = document;
    const [cx, cy] = [el.clientWidth / 2, el.clientHeight / 2];
    const angle = Math.atan2(y - cy, x - cx);
    const length = 50;
    const [bx, by] = [cx + length * Math.cos(angle), cy + length * Math.sin(angle)];
    // рисуем линию из (cx, cy) в (bx, by)


    P.S. Раз у вас логика от центра канвы, может быть удобнее однажды сделать ctx.translate(width/2, height/2) — и центр (0, 0) теперь будет в центре холста.
    Ответ написан
    3 комментария
  • Добрый день я хочу сделать движок для 2d Rpg с инвинтарем, спелами, боссами и тд... на чистом C# winforms хотел бы спросить что нужно учить и где?

    Griboks
    @Griboks Куратор тега C#
    В первую очередь вам необходимо создать свой движок, а точнее все используемые вами части:
    1) графический движок
    2) физический движок
    3) возможно, магический движок
    4) систему интерфейса
    5) звуковой движок
    6) возможно, сетевой движок
    7) редактор уровней
    8) редактор персонажей

    Затем уже в своём движке создать игру как на любом другом движке.

    p.s.
    Также советую взглянуть на Unity 3D.
    Ответ написан
    1 комментарий
  • Как рендерить большую локацию для изометрической игры?

    vabka
    @vabka
    Токсичный шарпист
    Разделить на отдельные части и рендерить только то что видно в конкретный момент.
    Всякие объекты, которые видны только под одним углом, сделать в виде спрайтов. Удалить всё что не видно - если у тебя честные 3д-модели, то спокойно можно половину полигонов без сожаления удалить.
    и при попытки рендерить ее полностью, она очень сильно теряет в качестве

    Как это проявляется? Как вообще рендеринг происходит? Если это не в реальном времени рендеринг, а какой-то рей трейсинг, то видимо надо подождать больше проходов.
    Ответ написан
    Комментировать
  • Не натягивается текстура в blender, что делать?

    John_Norton
    @John_Norton Автор вопроса
    Game developer
    Хе-хе (❁´◡`❁), получилось самому решить этот вопрос: я просто развернул выбранные полигоны в uv-редакторе(¬‿¬)
    Ответ написан
    1 комментарий
  • Почему такой простой javascript код не работает?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Потому что вы написали "введённое число равно пять ИЛИ семь". И движок это "семь" читает не как человек, а как отдельное условие, которое всегда равно true.
    num == 5 || num == 7
    Ответ написан
    5 комментариев
  • Глупые вопросы по тостеру, которые меня интересуют?

    6274c3558ac3a089197449.png

    Все пользователи с 0 вопросов и 9999 ответов действительно гении или это новореги или им удаляли вопросы?
    Аудитория Тостера, по сути, делится на четыре группы:
    1. Те, кто абсолютно не умеют искать информацию и пользоваться головой. Или умеют, но ленятся. Они бесконечно задают вопросы и очень редко отвечают.
    2. Те, кто прекрасно имеет искать информацию (вычленять суть проблемы, формулировать её, подбирать ключевые слова, отсеивать шелуху). Они очень редко задают вопросы, но не потому, что вопросов не возникает, а потому, что на абсолютное большинство их вопросов ответ в интернете уже есть, его нужно только найти.
    3. Те, кому не хватает опыта для того, чтобы оказаться во второй категории. Со временем они туда переходят.
    4. Те, кто зашёл случайно, не связан с программированием и дети, желающие наконец-то узнать нужны ли им математика и высшее образование.
    Ответ написан
    15 комментариев
  • Как добавить заданный текст в input?

    XanXanXan
    @XanXanXan
    inp.innerHTML заменить на inp.value.
    Только результат всё равно будет не очень, т.к. 'рублей' будет добавляться на каждое изменение.

    Лучше заменить ’рублей’ на ₽ (чтобы не возиться со склонениями) и вынести в отдельный блок рядом с input.
    Ответ написан
    Комментировать