Придумал, как может выглядеть программирование будущего: показываем компьютеру что от него хотим и он пытается найти в этом закономерность. Если не находит сразу, то показываем повторно.
Конкретнее: простой графический редактор типа Paint, в нём можно создавать объекты (пиксельные, векторные, буквы-цифры) и удалять. Также перемещать, поворачивать, масштабировать с нужной скоростью. Увидев повтор в этих действиях, редактор предложит автоматизировать их повторение. Например, увидев создание объекта, потом его удаление и потом снова создание, редактор предложит повторять этот процесс, т.е. объект будет мерцать. В более сложных случаях, когда выявленную закономерность можно объяснить несколькими способами, редактор спросит напрямую или же исследует неоднозначности сам в фоновом режиме, не отвлекая человека.
Это нейросети? Нет, пока нет. Я не смог понять как они работают, поэтому делая Visual Maker попытаюсь к ним подступиться, приоткрыть чёрный ящик.
Вот как выглядит создание простой игры типа Space Invaders:
В этой демонстрации прототипа идеи очень многое не реализовано - планирую добавить цвет, загрузку своих изображений и звука, поддержку устройств ввода (сейчас только стрелки клавиатуры), хекс-редактор, текст, а в будущем дойти и до 3D.
Если хотите попробовать прототип, то знайте, что багов в нём больше, чем в играх Bethesda. Самый мешающий - при перемещении объекта мышкой и одновременно с нажатой клавишей-стрелкой - не задерживайте движение в начале и не отпускайте клавишу сразу. Также на видеокартах от Intel курсор может быть смещён по оси Y.
Мои параметры: NVIDIA, экран 1366 х 768 (диагональ 15.5), вертикальная синхронизация под частоту экрана (60 кадров в секунду), поэтому элементы могут выглядеть мелкими (есть масштабирование колёсиком), а анимации ускорены (нажмите на корпусе вашей ПК кнопку Turbo). Если что-то пошло не так, то пока лучшее решение - перезапустить программу и повторить свои действия.
Задуманный интерфейс на данный момент:
-F1 - управляет временем: остановка, перемотка, редактор застывшего момента...
В редакторе момента задействуются кнопки мыши:
-левая - создание и удаление объекта (точка, линия, круг, квадрат...), его свойства.
-правая - перемещение, размер, поворот...
-средняя с колёсиком - управляют видом самого редактора: масштаб, положение, 2D/3D...
Функции каждой кнопки зависят от одиночного нажатия, двойного нажатия, нажатия и задержании, нажатия и перемещения курсора.
Даже если такой способ не станет полноценным программированием, то может оказаться полезным для создания презентаций, прототипирования и при начальном обучении программированию.
Комментарий недоступен
Это один первых вопросов, который задал себе и быстрый ответ не нашёл. Конечно, зная физику и формулы сделать физику в ВизМейкере должно быть чуть легче, чем на традиционных языках, потому что можно будет напрямую оперировать объектами, векторами и т.д. Но это всё равно слишком сложно и низкоуровнево для обычного человека, поэтому скорее всего придётся реально использовать нейросеть, чтобы обучать. Посмотрим, самого интересует.
Ладно с ней, с физикой. Что делать, если тебе нужно определить класс объекта, а потом настроить тысячу таких объектов чуть различающихся парой параметров? Каждый раз "показывать" компьютеру, как должен работать такой объект, чтобы он "понял", что он такой же как остальные?
Например?
Ок: у нас куча деревьев на игровой карте. Ближайшие к точке старта собираются в один клик и дают одну древесину. Дальние в 10 кликов и дают тоже 1 древесину. Между ними градиент этих чисел. Часть деревьев можно собрать только спец инструментом. Из тех, что требуют 5 и больше кликов с шансом 15% должны выпадать листочки. Всего у нас 10 видов деревьев по кликоёмкости, в каждом виде по 5 разных анимаций каждого дерева. На карте нужно разместить 1000 таких деревьев. В будущем я хочу добавить еще одну карту с теми же деревьями, но увеличить их кликоёмкость, поменять ресурс или шанс его выпадения. Кроме инструмента я хочу завязать возможность сбора на игровое время и добавить пару деревьев, которые тоже собираются, но потом вырастают в том же месте.
Итого уникальных 50 обычных деревьев + 10 спецдеревьев на первую карту (60). Столько же таких же (но немного других) на вторую карту + особые вырастающие.
В "классическом" случае у нас будет класс дерево с парой описанных типов поведения и десяток настроенных объектов, где будут настроены ноды отличающиеся от дефолтных.
Описывать абстрактные понятия с помощью визуального редактора - вери хард. Такая идея имеет смысл как небольшой узкоспециализированный инструмент в дополнение к классическому программированию.
Задача не выглядит невыполнимой, внесу её в список целей.
идея имеет смысл как небольшой узкоспециализированный инструмент в дополнение к классическому программированию.Даже если так, то тоже будет успех. В начале он подразумевался лишь как для прототипирования каркаса геймплея.
Навскидку пришла в голову куча персонажей в файтингах. Где может быть класс pawn для игрока и для AI отдельно, и вариации персонажей на основе этих классов.
Но ведь каждого персонажа всё равно вручную прорабатывать.