{"id":3824,"url":"\/distributions\/3824\/click?bit=1&hash=a0d33ab5520cacbcd921c07a49fc8ac5b78623b57936b992ce15c804b99210d4","title":"\u041a\u0430\u043a\u0443\u044e \u0440\u0435\u043a\u043b\u0430\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0434\u0430\u0442\u044c \u043d\u0430 DTF \u0438 \u043a\u0442\u043e \u0435\u0451 \u0443\u0432\u0438\u0434\u0438\u0442","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"75ec9ef4-cad0-549d-bbed-1482dc44e8ee","isPaidAndBannersEnabled":false}
Gamedev
perfect_genius

Идея интуитивного способа программирования — Visual Maker

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

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

Это нейросети? Нет, пока нет. Я не смог понять как они работают, поэтому делая Visual Maker попытаюсь к ним подступиться, приоткрыть чёрный ящик.

Вот как выглядит создание простой игры типа Space Invaders:

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

В этой демонстрации прототипа идеи очень многое не реализовано - планирую добавить цвет, загрузку своих изображений и звука, поддержку устройств ввода (сейчас только стрелки клавиатуры), хекс-редактор, текст, а в будущем дойти и до 3D.

Если хотите попробовать прототип, то знайте, что багов в нём больше, чем в играх Bethesda. Самый мешающий - при перемещении объекта мышкой и одновременно с нажатой клавишей-стрелкой - не задерживайте движение в начале и не отпускайте клавишу сразу. Также на видеокартах от Intel курсор может быть смещён по оси Y.

Мои параметры: NVIDIA, экран 1366 х 768 (диагональ 15.5), вертикальная синхронизация под частоту экрана (60 кадров в секунду), поэтому элементы могут выглядеть мелкими (есть масштабирование колёсиком), а анимации ускорены (нажмите на корпусе вашей ПК кнопку Turbo). Если что-то пошло не так, то пока лучшее решение - перезапустить программу и повторить свои действия.

Задуманный интерфейс на данный момент:

-F1 - управляет временем: остановка, перемотка, редактор застывшего момента...

В редакторе момента задействуются кнопки мыши:

-левая - создание и удаление объекта (точка, линия, круг, квадрат...), его свойства.

-правая - перемещение, размер, поворот...

-средняя с колёсиком - управляют видом самого редактора: масштаб, положение, 2D/3D...

Функции каждой кнопки зависят от одиночного нажатия, двойного нажатия, нажатия и задержании, нажатия и перемещения курсора.

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

Какую 2D-игру хотели бы попробовать создать в ВизМейкере?
Pong
Arcanoid
Жизнь
Тетрис
Змейка
Lode Runner
Сапёр
Asteroids
Танчики
Это какая-то хрень, иди лучше убейся.
Марио
Показать результаты
Переголосовать
Проголосовать
0
98 комментариев
Написать комментарий...
Demian

Полезно разве что в качестве интересного упражнения для разработчика

для создания презентаций, прототипирования

Есть более удобные инструменты

при начальном обучении программированию

Оно не может научить программированию, т.к. идея была сделать инструмент, не требующий программирования

Ответить
Развернуть ветку
perfect_genius
Автор
Есть более удобные инструменты

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

идея была сделать инструмент, не требующий программирования

Может, автор лучше знает какую идею он хотел? :D
Идея была сделать безтекстовое программирование. Алгоритм - это просто определённая последовательность действий. В демонстрации это:
-Переместить пульку туда, где находится пулялка, когда пулька заканчивает движение.
-Перемещать пульку туда же когда перемещается пулялка.
-Не перемещать пульку, если уже пущена (на данный момент не реализована перемотка времени назад, поэтому это первый логичный баг - она перемещается к пулялке даже пущенной, а также анимация не останавливается, т.к. не сделал ещё остановку)

Ответить
Развернуть ветку
Элис Ловердрайв
Алгоритм - это просто определённая последовательность действий.

А программированние -- это не алгоритмы :)

Ответить
Развернуть ветку
perfect_genius
Автор

Есть декомпозиция задачи.

Ответить
Развернуть ветку
Demian

Ну идея конечно интересная, но я вижу это разве что как вспомогательный инструмент для не очень широкого спектра задач, т.к. элементарные операции для этого способа "программирования" не определены
Без Тьюринг-полноты сделать инструмент широкого назначения представляется мне крайне маловероятным

Ответить
Развернуть ветку
perfect_genius
Автор

Элементарные операции - создание/уничтожение, перемещение, поворот и масштаб. Вам этого мало? :D

Ответить
Развернуть ветку
Читать все 98 комментариев
null