• C++ или C# в рамках OpenCV проекта?

    На С++ будет работать быстрее(если правильно написать).
    На C# будет проще написать и быстрее написать.
    Я бы для такой задачи выбрал бы связку на C#:
    1)sqllite или mssql express в качестве бд. Sqllite если все данные хранятся локально.
    2) Для работы с бд в c# есть entity framework
    3) В качестве библиотеки компьютерного зрения я бы выбрал EmguCv. (Почти тоже самое, что и OpenCVSharp, но документация лучше, поддерживается лучше и в общем информации больше)
    4) Ну и в качестве интерфейса можно использовать winforms, хотя я бы написал на wpf

    Обосновать такой выбор можно сокращением времени разработки.

    По вопросу 1: Если бы это был реальный проект, то скорее всего часть для обработки изображений была бы написана на c++, а интерфейс на c#+wpf или с помощью какого нибудь фрейм ворка типа react.
    Ответ написан
    8 комментариев
  • Не могу найти работу в gamedev (unity) в своем городе. Как быть?

    В порядке брейншорма на самом деле есть еще один вариант кроме переезда в Москву или Спб.
    Переехать в Киев или в Минск. Города не такие шумные и тесные как Москва, не такие дожливые как Питер и есть много вакансий.

    Мне как-то предлагали работу в гугловском офисе в Москве, посмотрел, в каких условиях там живут их работники и отказался (очень дорогая аренда квартиры)
    Ответ написан
    4 комментария
  • Не могу найти работу в gamedev (unity) в своем городе. Как быть?

    vetero4eg
    @vetero4eg
    Frontend
    У вас есть целых три варианта: переехать, найти подходящую работу удаленно, или поменять направление деятельности под более востребованное в вашем городе. Главное что-то поменять, потому что при таком раскладе, ка у вас сейчас, ИМХО, вы бесповоротно закисните...
    А еще можно сходить побеседовать в компанию, где вы видели вакансию сеньора, и пообщаться на тему вашего проф.роста. Может выйти очень полезная беседа.
    Ответ написан
    Комментировать
  • Не могу найти работу в gamedev (unity) в своем городе. Как быть?

    sober_cat22
    @sober_cat22
    Back end(Node.JS, Ruby)
    У меня была похожая проблема, поскольку под нужный стэк не было работы в моем городе. Пришлось переехать в Мск, поработал пару лет, прокачался до миддла, потом вернулся, и сейчас могу, без проблем, найти удаленку.
    Ответ написан
    4 комментария
  • Не могу найти работу в gamedev (unity) в своем городе. Как быть?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Тут вариант только один -- переезд в Мск/Спб. А работу уж найти будет довольно просто. Можете искать удалённо, можете на месте. На месте как всегда проще. Можно ещё, как вариант, попытаться найти удалённую работу с последующим переездом. Правда это реже удаётся.

    У меня была ситуация почти как у вас. Я переехал в Спб в итоге, а потом и из России уехал. Очень советую защитить кандидатскую, если есть такая возможность, и это не займёт больше стандартных трёх лет сумарно. Наличие степени реально помогает получить работу на зарубежного заказчика из России или же сразу работу за границей. Помимо этого, положительно сказывается на переговорах о зарплате.
    Разумеется, знания больше котируются, чем степень. Но ещё одно преимущество не помешает.
    Ответ написан
    5 комментариев
  • Не могу найти работу в gamedev (unity) в своем городе. Как быть?

    @kiberlain
    С нормальной работой в регионах сейчас вообще труба. Остаётся либо фрилансить, либо переезжать в Питер или Москву. Лично я второй вариант выбрал. Впрочем даже тут большинство вакансий так себе. Серьёзные конторы ищут сеньёров, а шарашкины конторы (коих большинство) выставляют миллион требований и предлагают зарплату ни о чём.
    Ответ написан
    5 комментариев
  • Object reference not set to an instance of an Object Почему unity выводит эту ошибку?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    а вы не забыли случаем где нибудь инициализировать массив??
    если уж другие переменные и поля из sv доступны..

    sv.achieveStatus = new int[,]
    или не int. но суть уловили.

    а то так и получите NUllRef))нельзя брать длину у НИЧЕГО))
    Ответ написан
    2 комментария
  • Есть ли ассет для Unity для реализации осмотра предмета который ты подобрал или как эта механика называется?

    GavriKos
    @GavriKos Куратор тега Разработка игр
    Механика называется "инстанцировал нужный префаб в нужных координатах и кручу его за мышкой".
    Ответ написан
    Комментировать
  • Можно ли в классе-потомке переопределить метод с новыми параметрами?

    Это противоречит LSP.

    Вот представьте, вам дали такую возможность и вы переопределили метод с новыми параметрами. Теперь у нас есть метод, который принимает Layer или даже ICreatable. Допустим так:

    void DoSomething (ICreatable layer) {
      layer.Create();
    }


    Но мы ведь можем передать потомка в этот метод! Делаем следующее и ломаем наш код:
    DoSomething(new PerlinNoiseLayer())

    Потому именно в таком виде - нет, нельзя.

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

    Это слой? - Да. - Ок, тогда посмотрим его высоты.
    Если есть такая необходимость - почему бы не ввести отдельный интерфейс для высот?

    void DoSomething (IHasHeights layer) {
      layer.Heights; // <== тут есть высоты
    }


    Почему бы не воспользоваться фабрикой или билдером? Или даже заставить передавать все эти параметры в конструктор?

    public abstract class Layer: ICreatable
    {
        float[,] Heights { get; set; }
        public abstract void Create();
    }
    
    public class PerlinNoiseLayer : Layer
    {
        private float[,] _heights;
        readonly int _resolution ;
    
        public PerlinNoiseLayer (int resolution) {
            _resolution = resolution;
        }
    
        public override void Create()
        {
            // тут расширение уже есть
        }
    }
    Ответ написан
    6 комментариев
  • Как сделать доступным для пользователя встроенный редактор ландшафта в Unity?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Никак не сделать, мало того, что все инструменты для террейна работают только в редакторе, дак ещё и сам террейн был написан много лет назад и с тех пор не обновлялся. Если хотите менять террейн в рантайме, то надо писать свои инструменты, берёте Terrain.terrainData и вперёд. Либо поищите плагин в магазине.
    Ответ написан
    1 комментарий
  • Как вы выбираете из множества решений то, которое в итоге реализуете?

    Stalker_RED
    @Stalker_RED
    В первую очередь выбирается то решение, которое "было в прошлый раз". Потому что оно уже собственноручно проверенное, и не даром же оно уже было выбрано по каким-то параметрам.

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

    OtshelnikFm
    @OtshelnikFm
    Обо мне расскажет yawncato.com
    На начальном этапе - не париться об этом. Все равно идеально не сделаете. Крутите велосипед - с опытом его улучшите и поймёте что правильно.
    Вариант есть - спросить о реализациях старшего разраба. Если таковой есть. Описать ему все варианты реализации и он объяснит где у какого минусы-плюсы.

    Просто пишите, читайте, вникайте. Со временем всё придёт.
    Ответ написан
    Комментировать
  • Как вы выбираете из множества решений то, которое в итоге реализуете?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    На самом деле вам только кажется, что несколько вариантов равноправны. С опытом приходит понимание, чем каждый вариант лучше/хуже и вы применяете его в конкретной ситуации уже исходя из опыта.

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

    @immaculate
    Программист-путешественник
    Это вряд ли возможно формализовать. Один из подходов: KISS — keep it simple. Выбираю самое простое решение, потому что, пока оно дойдет до production, требования 10 раз поменяются (и еще 10 раз поменяются уже после внедрения), а простое решение и проще реализовать и проще переделать. Но это только одна из эвристик.

    Такое, чтобы запутаться в решении не бывает. Это только, если не понимать, что делаешь. Иногда бывает, что не совсем до конца понимаешь требования, или как решать задачу. Тогда можно зайти в тупик спустя несколько часов или дней. Но такие ситуации встречаются редко.

    Иногда по мере того, как делаешь задачу, понимаешь, что ее можно сделать совсем иначе, при этом получится проще и эффективнее. Ничего страшного нет: с самого начала продумать идеальное решение не может никто.

    В жизни нет готовых рецептов на все случаи. Жизнь вообще не поддается формализации.
    Ответ написан
    5 комментариев
  • Как вы выбираете из множества решений то, которое в итоге реализуете?

    @Camaro67
    Помог? - "Отметить решением"
    ИМХО. Только опыт, со временем перестанете задумываться об этом и будете делать уже на автомате.
    Ответ написан
    Комментировать
  • Как создать редактор карт внутри Юнити?

    @rukzachini
    Скоро прямо в Unity появится расширенный функционал по собиранию уровней. А может и не скоро :). Но выглядит очень круто.
    Ответ написан
    Комментировать
  • Как вы работаете с heightmap resolution (2^k+1) (unity)?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Разбивать нужно с дублированием вершин внутри шва. Возьмём примитивный случай с террейном четыре на четыре клеточки, размер массива вершин в данном случае будет пять на пять. Разобьём его на четыре части, каждая сторона будет разделена пополам. Чтобы посчитать размер нужных массивов, нужно вычесть единичку из стороны, поделить на два и прибавить единичку. Таким образом, получаем четыре массива три на три, каждый содержит в себе два на два клеточек.
    Для вашего случая аналогично, вычитаете единицу из 513, делите на восемь, получается 64, прибавляете единицу, получается 65. Вот и размер нужного вам массива. На стыке вершины будут дублироваться, но каждый кусочек будет независимый.
    Ответ написан
    5 комментариев
  • Можно ли организовать мат. вычисления ч/з шейдер и передать рез-т в скрипт (Unity)?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Можно, но не для всех случаев это будет быстрее, и в конечном итоге вам всё равно придётся профайлить, чтобы понять выигрыш. Видеокарты хорошо умеют работать с векторами и имеют специальные инструкции, которые позволяют совершать несколько арифметических операций за раз, соответственно и ваш алгоритм должен использовать эти сильные стороны, если вам просто нужно факториал посчитать, то возиться с видеокартой смысла нету, вы больше потеряете на загрузке/выгрузке данных с GPU.

    Что касается реализации, то это можно сделать либо с помощью вычислительных шейдеров, либо с помощью обычных шейдеров, всё зависит от возможностей целевой платформы. На компе, если очень хочется, можно и CUDA прикрутить. Если с шейдерами раньше не работали, то могу посоветовать The Book of Shaders, там не про Unity, но достаточно толково.

    К слову говоря, если у вас задача стоит не в переносе на видеокарту, а в оптимизации, то процессоры тоже не лыком шиты, у них есть SIMD, может быть это вам больше подойдёт.
    Ответ написан
    1 комментарий
  • Можно ли организовать мат. вычисления ч/з шейдер и передать рез-т в скрипт (Unity)?

    GavriKos
    @GavriKos Куратор тега Unity
    Можно. Ответ вы написали в заголовке - через шейдер. Вот:
    https://docs.unity3d.com/Manual/ComputeShaders.html

    P.S. тег javascript то тут причем?
    Ответ написан
    2 комментария
  • [Unity] Как создать спавн объектов?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Должно быть:
    1. Ссылка на префаб GameObject enemyPrefab
    2. Любого Enemy мы создаём из префаба, даже первого. Enemy enemy = Instantiate(enemyPrefab)
    Ответ написан
    Комментировать