Разработка на коленке

"тут должна быть красивая цитата о программировании"

Deathworld на phaser3

2018-08-11 23:30

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

Тут я просто хотел сделать маленький шутер. Простой и несложный. Просто стрелялка на Phaser третьей версии.

Чтобы получать удовольствие от разработки (возможно и от большинства практических занятий), нужно соблюдение пары условий:

  1. это должно нравиться;
  2. со временем навык должен совершенствоваться, чтобы получалось всё лучше и быстрее.

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

phaser3-deathworld-preview

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

Игра

deathworld game

Ресурсы

Исходный код там - Исходники

Punch-builder и новый конфиг для phaser3+webpack

2018-08-05 15:10
punch-builder

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

Цель написания этой игрушки состояла в создании конфига, которй позволит писать игры на phaser3, используя в качестве сервера что-то яваскриптовое, что будет быстро собирать и обновлять страницу. До этого я запускал сборку webpack'ом, а файлы хостил питоном - python -m SimpleHTTPServer.

В итоге наткнулся на статью A Modern Web Development Setup For Phaser 3, откуда взял всё необходимое.

В результатет получилась такая игра.

Исходники

Match3Cat - игрушка про котиков на Reactjs

2017-10-17 23:35
cat

На работе у меня стало очень много ReactJS, и мне стало интересно, как будет выглядеть разработка игры на этом фреймворке.

История

Это просто результат любопытства из категории "а что будет, если...". В итоге получилась вот такая штука.

Сперва в игре список котов был сделан одномерным массивом, который было очень удобно обновлять в Redux (где каждый раз нужно создавать новую копию данных, чтобы внести изменения). А разбиение на таблицу добился простой эмуляцией двумерного массива на одномерном списке (операция деления по модулю очень помогает). Не то чтобы это было нужно, просто было интересно писать алгоритм. И было всё довольно неплохо до того момента, пока мне не понадобилась анимация в момент совпадения котиков. Тут мне нужно было знать, где находился котик в момент совпадения по цветам, а значит нужно было хранить позицию. Чтобы не возиться с дополнительным хранилищем, котики были переделаны в словарь, а вместо одномерного списка - двумерный массив. Ну а ещё каждому котику присваивался уникальный номер, чтобы генерировать уникальный же key

const createCat = (() => {
    let nextCatNumber = 0;

    return ((x, y) => {
        return {
            num: nextCatNumber++,
            kind: Math.floor(Math.random() * CATS_NUMBER),
            x: x,
            y: y,
        };
    })
})();

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

Теперь настал черёд воинственных прямоугольных попрыгунчиков .

Ссылка на игру

match3cat game

Ресурсы

Исходный код там - https://github.com/grigoriytretyakov/react-match3-game

Игра там - http://tinycode.ru/games/match3cat/

Lightbox - игрушка про квадратик (Phaser, ECMAScript6)

2017-03-26 17:20
beast

Написал небольшую игру про прыгающий кубик, который платит за свои прыжки небольшим количеством своей энергии.

Основная цель - попробовать ECMAScript6 в работе, а ещё собрать в итоге игру в один файл.

История

Первоначальная идея была сделать кубик, состоящий из света, а жить он должен был в тёмном мире, где всё хочет его убить. Выживать он должен был подпитываясь энергией от пролетающих мимо "энергетических заправок". Но TN-матрица на моём ноутбуке скорректировала планы, потому что тёмная игра смотрелась ужасно, играть было неудобно. Поэтому фон стал светлым, а кубик тёмным. Тут бы впору переименовать его в "Dark energy box", но я решил оставить всё как есть.

Ссылка на игру

lightbox game

Ресурсы

Исходный код там - https://bitbucket.org/grigoriytretyakov/lightbox-game

Звуковые эффекты делал там http://www.bfxr.net/

Музыку для игры взял там http://opengameart.org/content/game-game

Игра там - http://tinycode.ru/games/lightboxgame/

Поменял (обратно) работу

2017-02-05 19:00
beast

Недавно я поменял работу. С 16 января 2017 снова работаю в Positive Technologies. Казалось бы, можно много интересного написать по этому поводу или по поводу того, что я делал работая в Osmino (RIWW), но меня всё время останавливает возможность ляпнуть что-то, что является тайной за семью печатями. Так что я ограничусь небольшим перечислением.

В Osmino, считай, за четыре года я принял участие в разработке, примерно, десятка проектов, где-то в составе команды, а где-то писал всё в одни руки. Самым примечательным моментом можно считать, что проекты были доведены до релиза. Какие-то из них были закрыты уже за ненадобностью, но всё, что я намечал в разработку, было доделано до конца. Последний проект (wadamarket.com и его мега-админку) будут доводить уже без моего участия.

В Positive я буду заниматься чем-то нужным и, возможно, важным. Примечательно, что немало из того, что я сделал в Позитиве 4 года назад, работает до сих пор.

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