Лечим бессонницу Mac OS X

No Comments

osx-sleep-mode-menu

После обновления до Mavericks, у моего мини-мака несколько раз приключались трудности с засыпанием.

Как обычно, нажимаю  → Режим сна. Экран гаснет. Но комп остаётся включенным — светодиод продолжает светиться, вместо того чтобы начать плавно мигать.

Решил починить. More

Нечто скрытое…

5 Comments

Один из проектов. 100% хит :-)

something hidden

something hidden

Кто угадает, что это?

Покупка на amazon.com: как я сэкономил 50% ноутбука. Часть 1

7 Comments

Или: “половина ноутбука в подарок”).HP EliteBook on amazon.com

Недавно получил опыт! Опыт покупки товаров за рубежом. Причём удачный.

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

Поиск

Три года назад купил Samsung R-560 BS-02, тогда это была машина-зверь.

Памяти 3Gb (оптимально для 32-битных систем на несерверной windows), процессор Core2-Duo (Centrino), мощная видеокарта и 15,6″ экран с разрешением 1680*1050 — замечательно для разработки.

Купил его за 30000 руб. А сейчас мощностей стало не хватать, решил обновить. Бюджет был тот же. Хотелось попробовать ноутбук поменьше, с металлическим корпусом, с матовым экраном, и чтоб памяти было 8Gb (сейчас бук уже у меня, очень рад 8Gb, никогда не кончается =) ). Мощную видеокарту на этот раз решил не брать, т.к. прошлая так и не пригодилась. More

Создаём Ваше первое webOS приложение

6 Comments

Разбирал webOS, решил перевести вводную статью с сайта developer.palm.com. Перевод местами вольный.

В данной статье будет показано, как создать Ваше первое приложение для HP webOS. Вместо показа традиционного “Hello, World!”, мы создадим простой счётчик, подсчитывающий число нажатий на кнопку. По завершении урока вы будете знакомы с такими понятиями, как сцены* (stages), экраны* (scenes), помощники* (assistants), и с другими важными понятиями webOS.

* С русской терминологией “пальмоводов” не знаком, так что переводил, как пришло в голову. Scene с третьей попытки перевёл как “экран”, вроде бы отражает суть и не конфликтует. Быть может в терминах театра лучше перевести: тут и сценарии (scripts), и помост (сцена), и сцены (“явления”), и ассистенты. More

Монстры 15-летней давности)

3 Comments

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

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

А с другой стороны тетрадного листа оказалось собственноручно нарисованное то-что-надо :) More

Пишем игру на HTML5 и JS. Часть 2.5

No Comments

Эта статья — продолжение части 2, код в которой получился незавершёным. Сегодня мы сделаем следующее:

  1. Добавим в ядро возможность загружать ресурсы для модулей.
  2. Проверим работоспособность модуля zx.Image.
  3. Разберём простую анимацию.

Загрузка ресурсов ядром.

MindDefGame

Прежде всего, перенесём в ядро некоторые свойства из game.js. Например, canvas и его context. Также вынесем их инициализацию в ядро. Таким образом метод MindDefGame.initialize() упростится до:

			initialize: function(cnv, w, h) {
				zx.go(cnv, w, h);
				this.x = 0;
			},

В методе MindDefGame.loop() исправим использование canvas и его контекста:

			loop: function() {
				zx.ctx.globalAlpha = .017;
				zx.ctx.fillStyle = "#000";
				zx.ctx.fillRect(0,0,zx.cnv.width,zx.cnv.height);
				zx.ctx.globalAlpha = 1;
				var clr = 'rgb(' + Math.round(Math.random()*255) + ',' + Math.round(Math.random()*255) + ',' + Math.round(Math.random()*255) + ')';
				zx.ctx.fillStyle = clr;
				zx.ctx.fillRect(this.x, 0, 1, zx.cnv.height);
				this.x++;
				this.x %= zx.cnv.width;

			},

Кроме того, счётчик this.x теперь сбрасывается при достижении значения, равного ширине canvas’а, что позволяет полностью заполнить его цветными полосками.

Ядро.

Теперь перейдём к ядру. More

Пишем игру на HTML5 и JS. Часть 2.

No Comments

Продолжаем написание HTML5 игры. Теперь, когда готова модульная система, можем опробовать все её преимущества на деле. Это первое, что мы сделаем в этой части. А второе — это напишем модуль для работы с изображениями-спрайтами. Пока что только с неподвижными, анимация будет позже.

Переходим на модули.

Для начала, адаптируем имеющийся код.

minddef.html

В html файле после описания стилей уберём подключение старого js-скрипта. Затем включим загрузку js-классов, ядра системы и опишем модуль-запускальщик:

<script type="text/javascript" src="core/class.js"></script>
<script type="text/javascript" src="core/zx.js"></script>
<script type="text/javascript">
    document.addEventListener("DOMContentLoaded", function() {
        zx.unit('main', {
            requires: ['minddef.game'],
            body: function() { MindDefGame.start('canvas', 320, 480); }
        });
    }, false);
 </script>

More

Реализация модульной системы в JavaScript

No Comments

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

Поэтому я и говорил ранее, что он хоть и более “человечен”, чем тот же ассемблер (хорошее сравнение:) ), часто удобнее всяких C, но сильно отличается от других ООП языков. Вообще, если копать глубже, то это один из самых запутанных языков, которые я видел :) Но это сказывается привычка к C++.
More

Создание игры на HTML5. Часть 1.

No Comments

В этой части расскажу немного теории об устройстве игр и покажу небольшой пример работы с canvas.

Алгоритм практически каждой игры состоит из стандартной последовательности действий. Сначала происходит подготовка, настройка параметров игры (уровня), затем запускается повторяющийся игровой цикл, ну а после выхода из него (game over/переход на след. уровень) освобождаются выделенные ресурсы.

Самое интересное находится внутри цикла. Тут у нас происходит следующее:

  1. Опрос клавиатуры/мыши/итд — управление.
  2. Глобальные события (например, перемещение камеры).
  3. Обновление состояния игровых объектов  (координаты, скорости, поведение: столкновение, умирание, появление, превращение и т.п.).
  4. Отрисовка игровых объектов и всего остального (задний фон, набранные очки и др.).

Вообще, слово “объект” слишком общее, им можно назвать что угодно. Но не придумал пока что ничего лучше (если есть идеи — сообщите ;) ). Поэтому уточню.

Игровым объектом будем считать элемент игры, обладающий своим поведением; с этим элементом игрок (или другие объекты) может взаимодействовать.

More

Создание игры на HTML5. Предисловие.

No Comments

бета-версия, будет отредактировано. Или вообще удалено. Тут в основном байки)

Давно посещает меня навязчивая идея – написать игру. Ещё со времён ZX-Spectrum. Но тогда перевесил интерес к DemoMaking.

Сейчас эта идея вернулась. Решил написать небольшую (но и не маленькую) игру с использованием HTML5-технологий. Да ещё и с поддержкой мобильных платформ. Да ещё и небольшой framework в процессе сделать. Да ещё и других научить :)

HTML5+JS были выбраны потому, что для разработки на под них не надо ничего, кроме текстового редактора и современного браузера. Пару раз html+js использовал для решения прикладных задач (например, оптимизации кода ARM ассемблера ;) ) — удобно то, что не надо заморачиваться с интерфейсом, на html его просто делать. Хотя именно с HTML5 и canvas дело иметь не приходилось.

Вторая причина выбора этой технологии: меня впечатлил Biolab Disaster, первая действительно хорошо сделанная HTML5 игра.
More