TGViewer
Kozlov Dev - Разработка игр Kozlov Dev - Разработка игр @kozlovdev · 4.11K subscribers
Post #1020 1.13K
🧠 Система выражений (Expressions) в Blockworld!
Была реализована новая крутая фича для проекта — собственный язык выражений.

Что это?
Это маленький скриптовый язык, который живёт прямо в JSON-конфигах и позволяет нам описывать поведение анимаций, частиц, рендер-контроллеров формулами:
"если игрок в воде — согни ему руки",
"поворачивай голову моба на угол между текущим и целевым по y" и т.д.

Зачем это нужно?
✔️ Системы нужна для нескольких важных вещей:
Быстрое создание контента и проверка его через нейронку — нейронки намного проще работать с таким форматом, по сути тут все строится на выражениях и математике, сам формат очень хорошо читаем и предсказуем, за счет чего нейронка может выдать крутые результаты (которые я покажу в следующих постах)
✔️ Моддинг — с помощью данной системы легко расширять функциноал, все описывается в файлах, не требует не единой строчки кода, это дает большие возможности для модификаций и подгрузки контента удаленно

Как устроен язык
В основе — неймспейсы (обращение к данным через точку):
1 - query.* (короткая форма q.*) — читает состояние игры/сущности: query.is_sprintingquery.is_walkquery.target_distance
2 - variable.* (короткая форма v.*) — переменные, которые можно менять и объявлять прямо в формулах: variable.zombie_pose = 0
3 - math.* — математика: math.sinmath.cosmath.clampmath.lerpmath.powmath.random_integer и т.д.
4 - this — ссылка на себя же в некоторых контекстах

дополнительно:
5 - арифметика: + - * /
6 - сравнения: == != < > <= >=
7 - логика: && || !
8 - тернарник: условие ? тогда : иначе

Где уже используется и будет использоваться
✔️ Анимации — вся система стейт-машин анимаций построена на выражениях: условия переходов между стейтами, присваивания переменных, блендинг между клипами
✔️ Частицы — планируем полностью формат частиц, где через выражения описывается всё: скорость, цвет со временем, форма эмиттера, коллизии с воксельным миром
✔️ Условия в behavior tree мобов — вместо жёстко захардкоженных C#-условий ("здоровье < 20%", "враг ближе 5 блоков") — гибкие выражения прямо в JSON дерева поведения

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

#blockworld #devlog #gamedev
  • 🔥 12
  • 🤯 4
  • ❤ 3
More from @kozlovdev
  1. Sep 19, 2026😎 Стартуем эвент SCREENSHOT SATURDAY! ❗️ Переходите в наш Game Dev чатик 🔜 ссылка, делит…
  2. Sep 16, 2026На прошлой недели созванивались с тестерами по поводу аналитики в Cloud. 👀 Кто не в курсе…
  3. Sep 12, 2026😎 Стартуем эвент SCREENSHOT SATURDAY! ❗️ Переходите в наш Game Dev чатик 🔜 ссылка, делит…
  4. Sep 9, 2026Post #1052
  5. Sep 5, 2026😎 Стартуем эвент SCREENSHOT SATURDAY! ❗️ Переходите в наш Game Dev чатик 🔜 ссылка, делит…
  6. Sep 2, 2026Новости по Blockworld. Пока я разгребаю свои дела, решили взять в работу переделку текстур…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →