Pull to refresh
180
1.8
Алексей Гришин @GRaAL

Разработчик широкого профиля

How to make a destructible landscape in Godot 4

Level of difficulty Easy
Reading time 2 min
Views 984

In my just released game “Protolife: Other Side” I have the destructible landscape. Creatures that we control can make new ways through the walls. Also, some enemies are able to modify the landscape as well.

Let me describe how it may be done on the Godot engine.

Read more
Total votes 4: ↑3 and ↓1 +2
Comments 0

Любовь, смерть и разработка игр

Level of difficulty Easy
Reading time 4 min
Views 2.7K

Я открываю чат команды и пишу "как же вы меня достали"

Кажется, ранее я отправил какое-то предложение по игре, а они разнесли его в пух и прах.

Я злюсь. Потому что мне важно мнение этих людей.

Как это назвать правильно? Когда вы ночевали вместе в одном офисе, когда не спали ночами, и создавали что-то из ничего?

git pull — это волшебное заклинание, означающее "покажи мне ещё больше красоты, сделанной ими". git push — это волшебное заклинание, означающее "зацените красоту, которую сделал я".

— "Эй, у нас проект теперь не билдится" — "Зато красиво!" — "Это да"

Я открываю чат команды и пишу
Total votes 17: ↑12 and ↓5 +7
Comments 6

Сказка о типизации

Level of difficulty Medium
Reading time 7 min
Views 7.7K

В некотором царстве, в некотором государстве жил был царь. Как-то раз объявил царь всему народу - "Кто решит три моих задачки, тот сам сможет царём стать". И даже контракт метода опубликовал, всё честь по чести.

Это только присказка, сказка будет впереди
Total votes 60: ↑57 and ↓3 +54
Comments 21

It is Wednesday, my java dudes, или насколько сложно сделать свою JVM

Reading time 11 min
Views 11K

Что делать, если накануне переезда повысилась тревожность, а привычные методы не приносят успокоения?

Конечно же вырабатывать дофамин через решение упоротых инженерных задач!

Мне стало интересно - насколько тяжко было бы сделать свой интерпретатор байт-кода Java? И насколько сложно было бы научить его “новым трюкам”?

Писать я буду на Rust, поэтому и проект, не мудрствуя лукаво, назвал Rjava.

Читать далее
Total votes 67: ↑66 and ↓1 +65
Comments 26

Прокачиваем kotlin: используем AST лямбд в рантайме

Reading time 18 min
Views 3.3K

История о том, как сделать свой LINQ для kotlin, и как сделать так, чтобы кода вида

data.filter { it.age > 30}.map { it.name }.toList()

мог и выполняться для данных в памяти, и превращаться в SQL запрос для базы данных.

Читать далее
Total votes 17: ↑17 and ↓0 +17
Comments 4

Как хранить данные в png, не привлекая внимания санитаров

Reading time 13 min
Views 69K

Всё началось с мема, который вы видите выше.

Сначала я посмеялся. А потом задумался: может ли быть так, что скриншот базы равноценен её снэпшоту?

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

Или... графическое представление и должно быть базой!

Это как?
Total votes 255: ↑254 and ↓1 +253
Comments 88

Internet of Things: четыре рассказа около технологий

Reading time 39 min
Views 5.7K


Иллюстрация Анатолия Сазанова

Решил поделиться с вами четырьмя рассказами с «интригующими» названиями:

  • Augmented Reality
  • Умный дом
  • A.I.
  • Блокчейн

Объединяет их (как вы уже заметили) упоминание разных модных IT-слов. Их и так все пихают куда ни попадя, так почему и мне нельзя?

Немного нетвердой (и не всегда научной) и безрадостной фантастики под катом.
Читать дальше →
Total votes 18: ↑15 and ↓3 +12
Comments 19

Очередное незавоевание теней в Phaser, или польза велосипедов

Reading time 9 min
Views 3.9K
Два года назад я уже экспериментировал с веществами тенями в Phaser 2D. На последнем Ludum Dare мы внезапно решили сделать хоррор, а какой же хоррор без теней и света! Хрустнул я костяшками пальцев…

… и ни черта не успел за LD. В игре конечно есть немного света и теней, но это жалкое подобие того, что должно было быть на самом деле.

Вернувшись домой уже после отправки игры на конкурс, я решил все-таки “закрыть гештальт” и доделать эти несчастные тени. Что получилось — можно пощупать в игре, поиграться в демке, посмотреть на картинке, и почитать в статье.

Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Comments 7

Трагикомедия в NaN актах: как мы cделали игру на JS и выпустили ее в Steam

Reading time 13 min
Views 28K
“Эка невидаль”, — скажете вы, — “В топ-100 вашей игры нет, так что нещитово”. Тоже правда. Зато за год разработки Protolife мы поднакопили какой-никакой опыт, которым можем поделиться с потенциальными будущими игроделами. Ветераны индустрии, боюсь, ничего интересного для себя не найдут. Но, может быть, хоть повеселитесь от души.


Что за игра-то? И кто “мы”?


Мы — это команда из трех человек (GRaAL, A333, icxon), волею судеб названная Volcanic Giraffe без какого либо умысла. Работали долгое время вместе, несколько раз втроем участвовали в Ludum Dare (соревнования по написанию игр за выходные), и однажды решившие довести до релиза одну из наших поделок под названием Protolife.

Если коротко: это необычная tower defense, где надо бегать героем-курсором и выстраивать оборону из блоков против постоянно растущей красной биомассы.
Остальное под катом - осторожно, тяжелые пиксельартные картинки
Total votes 95: ↑91 and ↓4 +87
Comments 51

Как я попробовал сделать статический анализатор GLSL (и что пошло не так)

Reading time 10 min
Views 6.3K

Однажды я готовился к Ludum Dare и сделал простую игру, где использовал пиксельные шейдеры (других в движок Phaser не завезли).


Что такое шейдеры?

Шейдеры — это программы на си-подобном языке GLSL, которые выполняются на видеокарте. Есть два вида шейдеров, в этой статье речь идет про пиксельные (они же “фрагментные”, fragment shaders), которые очень грубо можно представить в таком виде:


color = pixelShader(x, y, ...other attributes)

Т.е. шейдер выполняется для каждого пикселя выводимого изображения, определяя или уточняя его цвет.
Вводную можно почитать на другой статье на хабре — https://habr.com/post/333002/


Потестировав, кинул ссылку другу, и получил от него вот такой скриншот с вопросом "а это нормально?"



Нет, это было ненормально. Посмотрев внимательно код шейдера, я обнаружил ошибку в вычислениях:


if (t < M) {
    realColor = mix(color1,color2, pow(1. - t / R1, 0.5));
}

Т.к. константа R1 была меньше чем M, то в некоторых случаях в первом аргументе pow получалось число меньше нуля. Квадратный корень из отрицательного числа — штука загадочная, по крайней мере для стандарта GLSL. Мою видеокарту ничего не смутило, и она как-то выпуталась из этого положения (похоже, вернув из pow 0), а вот у друга она оказалась более разборчивой.


И тут я задумался: а могу ли я избежать таких проблем в будущем? От ошибок никто не застрахован, особенно таких, которые не воспроизводятся локально. Юнит-тесты на GLSL не напишешь. В то же время преобразования внутри шейдера довольно простые — умножения, деления, синусы, косинусы… Неужели нельзя отследить значения каждой переменной и убедиться, что ни при каких условиях не происходит выхода за допустимые границы значений?


Так я решил попробовать сделать статический анализ для GLSL. Что из этого получилось — можно прочитать под катом.


Сразу предупрежу: какого-то законченного продукта получить не удалось, только учебный прототип.

Читать дальше →
Total votes 41: ↑41 and ↓0 +41
Comments 20

«Худой мир». Финал

Reading time 23 min
Views 11K
Финал фантастической повести. Спасибо всем, кто ждал и поддерживал!

Марина и Лиза достигли заповедного озера. К нему же стягиваются другие участники событий — люди, и не только.



Много фантастики под катом
Total votes 33: ↑30 and ↓3 +27
Comments 45

«Худой мир». Глава 10

Reading time 13 min
Views 6K
Продолжение фантастической повести. Предпоследняя глава перед большим финалом.



Немного фантастики под катом
Total votes 23: ↑18 and ↓5 +13
Comments 18

«Худой мир». Глава 9

Reading time 13 min
Views 7.9K
Продолжение фантастической повести. Осталось совсем немного — еще два поста, и история будет завершена.

Марина получает неожиданное предложение…



Немного фантастики под катом
Total votes 22: ↑15 and ↓7 +8
Comments 6

«Худой мир». Глава 8

Reading time 17 min
Views 7.1K
Продолжение фантастической повести. Для тех, кто забыл (или не знал), что там было раньше — ссылки на предыдущие части ниже.


Немного фантастики под катом
Total votes 22: ↑17 and ↓5 +12
Comments 11

«Худой мир». Глава 7

Reading time 13 min
Views 8.7K
Продолжение фантастической повести. И все, простоев больше не будет. Мы выходим на финишную прямую.



Немного фантастики под катом
Total votes 17: ↑13 and ↓4 +9
Comments 8

Тень на плетень, или 25 елок для Адама Дженсена

Reading time 10 min
Views 10K
Рассказ о том, как я попробовал построить красивые трехмерные тени не выходя за рамки уютного двухмерного гейм-девелопмента, и что из этого получилось.


Читать дальше →
Total votes 35: ↑34 and ↓1 +33
Comments 29

«Худой мир». Глава 6

Reading time 13 min
Views 12K
Продолжение фантастической повести. Для тех, кто забыл (или не знал), что там было раньше — ссылки на предыдущие части ниже.


Немного фантастики под катом
Total votes 12: ↑10 and ↓2 +8
Comments 8

«Худой мир». Глава 5

Reading time 12 min
Views 17K
Продолжение фантастической повести. Для тех, кто забыл (или не знал), что там было раньше — ссылки на предыдущие части ниже.
Предыдущие части


Немного фантастики под катом
Total votes 25: ↑21 and ↓4 +17
Comments 20

«Худой мир». Глава 4

Reading time 10 min
Views 13K
Немного запоздалое продолжение фантастической повести. Для тех кто забыл (или не знал) что там было раньше — ссылки на предыдущие части ниже.
Предыдущие части


Немного фантастики под катом
Total votes 12: ↑12 and ↓0 +12
Comments 14

«Худой мир». Глава 3

Reading time 12 min
Views 12K
Продолжаем повествование. И на случай, если кто наткнулся на этот пост впервые, это третья глава повести. Первые две можно найти по ссылкам ниже.
Предыдущие части

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


Немного фантастики под катом
Total votes 20: ↑15 and ↓5 +10
Comments 7
1

Information

Rating
1,057-th
Location
Алматы (Алма-Ата), Алма-Атинская обл., Казахстан
Registered
Activity

Specialization

Backend Developer, Software Architect
Lead
From 5,000 $