Рубрика «перемещение»

Каждый раз, когда мы пишем класс, управляющий ресурсами, мы задумываемся о том, что, скорее всего, для него придётся писать move-конструктор и move-присваивание. Ведь иначе объекты такого типа становятся неуклюжими, как std::mutex, ими тяжело пользоваться на практике: ни вернуть из функции, ни передать в функцию по значению, ни положить в вектор — а если положить его в другой класс как один из членов, то тот класс также «заболевает».

Положим, мы преодолели свою лень (хотя в Rust таких проблем нет!) и садимся писать move-операции для нашего класса. Проблема в том, что move-семантика в C++ имеет фундаментальное ограничение: каждый владеющий ресурсами тип с move-операциями должен иметь пустое состояние, то есть состояние с украденными ресурсами. Его нужно описывать в документации и предоставлять ему поддержку, то есть тратить время и силы на то, что нам не нужно.

Для абстрактных типов данных пустое состояние обычно бессмысленно — если у объекта украли его ресурсы, то он не сможет выполнять свои обычные функции. Но мы вынуждены это делать, чтобы реализовать move-семантику. Для некоторых типов пустое состояние недопустимо: open_file (в противовес теоретическому file), not_null_unique_ptr<T> (в противовес unique_ptr<T>).

Говоря словами Arthur O'Dwyer, мы заказывали телепорт, а нам дали «вас клонируют и убивают первоначальную копию». Чтобы вернуть себе телепорт, проходите под кат!

Читать полностью »

Всем привет! Когда-то давным-давно я делал простенькие игрушки на Flash. Например: игрушка — провести курсор мышки через лабиринт, не касаясь стен и уворачиваясь от всяких движущихся объектов. Некоторые из этих объектов двигаются по заданной траектории, некоторые гонятся за курсором, а некоторые стреляют в курсор другими движущимися объектами.

Сейчас я увлёкся программированием под андроид и сделал примерно такую же игрушку. И столкнулся с теми же геометрическими задачками с которыми встречался тогда.

Геометрия в компьютерных играх - 1
Читать полностью »

Последние годы стали экстроординарными для развития Литовской экосистемы стартапов. Растут местные проекты, но еще большее внимание предпринимательского сообщества притягивает передислокация российского бизнеса в Литву. Литва показывает себя как привлекательная бизнес-среда для множества известных российских компаний, и это не случайно.

Последний год был очень значителен для крупнейшей платформы Game Insight. Компания перенесла головной офис из Москвы в Вильнюс. А также еще 15 игровых компаний из России и стран СНГ выбрали Вильнюс. Такая миграция бизнеса оказала огромное влияние на многие российские стартапы, ищущие инвестиционные возможности и хорошее стратегическое местонахождение. Planner 5D, DevtoDev, Kula Tech, Plag**, 4Talk были среди тех, кто переехал в Вильнюс, они рассматривают это как прекрасную возможность для дальнейшего расширения бизнеса в Западные страны. «Первый шаг в большой мир», — говорит Алексей Шереметьев, соучредитель проекта Planner 5D.
Читать полностью »

Элон Маск скоро представит проект новой системы пассажирских перевозок Hyperloop

Один из самых талантливых людей современности Элон Маск сообщил в своём твиттере, что 12 августа он планирует опубликовать проект своей новой идеи для её публичного обсуждения. Речь идёт о системе сверхбыстрых пассажирских перевозок под футуристичным названием Hyperloop.

Технически Hyperloop представляет из себя современное развитие идеи пневматической почты: это системы труб, из которых откачан воздух, и по которым перемещаются специальные капсулы с людьми и некоторым полезным грузом. Утверждается, что скорости перемещения капсул таковы, что за шесть часов окажется возможным совершить кругосветное путешествие.
Читать полностью »

Это заключительная часть серии статей, описывающих перемещения компьютерных персонажей. Я расскажу о смешанных видах передвижений, которые сочетают в себе векторные и плиточные методы, небольшая оптимизация плиточных перемещений и ускорение просчетов добавлением сетки к векторам. А так же поведу общее сравнение всех описанных методов в виде таблицы.Читать полностью »

В предыдущей статье я рассказал о видах передвижений и перемещений в плиточном мире. Сегодня расскажу подробней о векторных способах. Как и в прошлый раз расскажу теорию, объясню суть и покажу пример реализации перемещений на языке C++.Читать полностью »

Все, кто начинал заниматься реализацией игрового искусственного интеллекта, наверняка сталкивались с проблемой реализации движений своих персонажей. Дело в том, что поведение и в реальном мире в большей степени определяет интеллектуальность того или иного существа. Даже люди друг друга зачастую оценивают по поведению (что немного неверно). Эта статья рассчитана на тех, кто только приступает к реализации своего первого игрового ИИ. Я расскажу о видах перемещений, их преимуществах и недостатках, а также покажу на примере как можно реализовать тот или иной способ на языке C++. Замечания и критика, а так же свои точки зрения приветствуются. Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js