Платформер HTML5 + Javascript

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

html5-platformer

Инструкция по игре:

Главная задача — собрать все монеты в игре и не попасть на раскаленную лаву

Передвигаться игроком — клавиши Лево Право и для прыжка Вверх

Играть

Кто следит за нами каждую секунду?

Изначально поисковые системы занимались поиском информации, но, прошло не так много времени и они превратились в системы тотальной слежки. За вами следят даже через рекламные сети, они особенно прикладывают массу усилий, чтобы показывать пользователю интересную для него подборку рекламных объявлений. Многие компании, хотят знать всё, о каждом человеке на планете и чем он занимается, какие у него слабости, какие достижения, чего боится, как можно надавить, что ему предложить. Не брезгуют применять разные методики слежения. Даже прогулки через Tor браузер, не скрывают вашу информацию. Пользователей Tor браузера, так же можно идентифицировать. Многие из пользователей прописывают DNS адрес от google 8.8.8.8. По сути, сами себя сдают.

Основные методы идентификации пользователя (цифровые отпечатки):

  • Информация о вашем браузере
  • Информация об установленной операционной системе
  • Видеокарта (информация по WebGL)
  • Шрифты в системе
  • Класс процессора
  • Временная зона
  • Разрешение экрана
  • Язык системы\пользователя
  • Установленные плагины

Но бывают и весьма интересные методы: Скролинг мыши при просмотре страниц (у каждого пользователя свой стиль), Поведение курсора при чтении информации на сайте. Хотите найти подробности по идентификации в сети, рекомендую изучить исходники от компании Valve Software, ссылка на github. Думаю для начала этих исходников будет достаточно, чтобы понять основы. Если хотите узнать, что знает о вас гугл, достаточно посмотреть на сайте гугла в личном кабинете, где вы были, где был ваш телефон, какие запросы вы вводили, какие устройства у вас еще есть. Эта статья лишь напоминание — быть осторожнее в сети и использовать нетипичное поведение, использовать шифрование. И да, жизнь в линуксе с перестройкой под себя и свои задачи. Но и не стоит забывать, Android устройства, первые кто расскажет о вас всё.

Модернизация физического движка

В современных играх, в основном, используется «импульсная» модель физического движка. По сути это расчет импульсов и сил действующих на объект с выталкиванием объектов, либо с поиском ближайшей точки до момента контакта и перерасчетом сил. На сегодняшний день создано много физических движков, все работаю с разными погрешностями. Даже в самых основных движках, задача по оптимизации так и не решена. А именно быстрый расчет движения объекта в момент скольжения и столкновения с другими за минимальное число операций. В играх физический движок за одну секунду обычно около 60-200 раз пересчитывает сцену. В итоге результат будет верный, но на его расчет мы потратим значительно больше процессорного времени. Обычно, оптимизируют число проверок столкновения, упрощают модели создавая convex представление и другие оптимизации. Так что же можно применить, чтобы упростить расчеты?

Читать дальше

Процедурное моделирование зданий

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

Художники, фантасты, архитекторы и другие деятели видят будущее по своему. Но всех их объединяет создание нового, прекрасного мира с выдающейся архитектурой.

Предлагаю вашему вниманию результат простейшего генератора зданий. Он основывается на конструктивной сплошной геометрии с оптимизацией.

Генератор зданий создан полностью на Javascript, не использует сторонних библиотек. Создан для проекта Dreams Gate.

Оптимизация 3D моделей на Javascript

Все кто работал с конструктивной сплошной геометрией (CSG), создавал свой воксельный движок или использовал готовые модели, сталкивался с проблемой оптимизации треугольников. Число и расположение треугольников у моделей может быть не оптимальным. Конечно, если дизайнер нарисовал для вас лично модель, его можно попросить её исправить. Но как быть, если модель процедурная, и дизайнер не может исправлять каждую процедурную деталь?

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

Читать дальше

Аппарат «Юнона» вышел на орбиту Юпитера

Космический аппарат «Юнона», задача которого — исследование Юпитера, успешно зашел на орбиту этой планеты, сообщило НАСА.

Аппарат успешно выполнил 35-минутный маневр, во время которого он снизил скорость и оказался под воздействием гравитационных сил Юпитера.

Во время этого маневра командный центр мог обмениваться с аппаратом только простыми сигналами, так как главная антенна зонда в этот момент направлена не на Землю. Во время маневра зонд летел на автопилоте, и вмешательство операторов на Земле фактически не требовалось.

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

juno_probe_gfx2_russian

Редактор моделей для различных форм жизни

При создании большого проекта Dreams Gate, постоянно нужны модели и не только зданий и сооружений, но и различных форм жизни. Это могут быть различные животные, рыбы, гуманоиды, фантастичные пришельцы, динозавры и даже роботы. Но рисовать их в стандартных редакторах Blender / 3D Max / Maya и других очень сложно, долго, а в итоге они будут занимать слишком много места (даже в сжатом виде модель одного человека получилась 43кб при 60 тыс треугольников и 1 текстуре 1024х1024 без анимации). Конечно процедурные модели экономят место, но в этом случае создание игры займет слишком много времени.

Читать дальше

Короткие url (mysql + php)

В интернете, множество сайтов, где используются короткие ссылки. Например youtube, tinyurl и подобные. Ссылка вида: http://www.youtube.com/watch?v=N98cpA5hdI0 куда приятнее чем было бы http://www.youtube.com/watch?v=23450928230945820532. Так же использование коротких ссылок необходимо если мы не хотим чтобы наш сайт легко парсили.
Очень часто начинающие программисты пытаются создать ссылки подобного вида на своих сайтах. Но делают это совсем странным способом, обычно создают строку со случайной последовательностью, проверяют есть ли уже подобная в базе данных, если есть создают новую и опять проверяют. Это очень дорогой подход и в базе данных у нас каша из набора символов. Не спорю, это тоже решение, очень даже верное, но не оптимальное. Обычно приходят к такому решению начитавшись форумов, сайтов с ответами или через поиск в том же гугл.
Оптимальное решение: использовать mysql в привычном виде, создать поле id типа int \ bigint, и использовать auto_increment для данного поля. Многие думают, что вдруг индекс будет огромным и выйдет за пределы, это напрасные опасения. Если логика программы верная, просто не получится дойти до границ int/bigint.

Но как же появятся короткие ссылки?
Использовать base62 с небольшим изменением, например мы хотим ссылку вида XXXXX, для этого достаточно прибавить произвольное значение к вашему id из базы данных.

class BaseConv {
  private static $base = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  public static function Base10($value, $b = 62) {
    if (!preg_match("/^[a-zA-Z0-9]+$/", $value)) return -1;
    $limit = strlen($value);
    $result = strpos(static::$base, $value[0]);
    for($i = 1; $i < $limit; $i++) {
      $result = $b * $result + strpos(static::$base, $value[$i]);
    }
    return $result;
  }
  public static function BaseX($value, $b = 62) {
    $r = $value  % $b;
    $result = static::$base[$r];
    $q = floor($value / $b);
    while ($q) {
      $r = $q % $b;
      $q = floor($q / $b);
      $result = static::$base[$r].$result;
    }
    return $result;
  }
}

function idToUrl($id) {
  return BaseConv::BaseX(100000000000 + $id);
}

function idFromUrl($id) {
  return BaseConv::Base10($id)-100000000000;
}

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

1 3 4 5 6 7 11