Разработка игр на языке 1С с использованием Active-X компоненты (собственная разработка)

Написанная Active-X компонента встраивается на форму обработки 1С (тестировалось на 1С 8.0, 8.1, 8.2, 8.3 не управляемые формы, 1С 7.7.).
Компонента предназначена для моделирования игрового поля (вывод, движение спрайтов — фреймов, обработка коллизий, управление спрайтами-фреймами и т.д.) при разработки логики игры на встроенном языке 1С. Приложен пример обработки в которой реализована игра «Бита».

На внутреннем языке 1С (платформы 8/7, или на любой платформе поддерживающей работу с COM-объектом) производится разработка алгоритма работы игры. Также подготавливаются фреймы (изображения в формате bmp (24 битное)) для вывода на карту локаций. Вся работа по выводу фреймов на экран, обработка коллизий (столкновений) объектов (типа пуля попала в объект), уничтожение фреймов и т.д. производится обращением к методам и свойствам компоненты. Также компонента позволяет выводить видео на форму с web-камеры, IP-камеры, делать снимок с экрана в файл. Список методов Active-X — компоненты прилагается.
Компонента будет активно развиваться, вступайте в мою группу разработки игр на 1С.
Приложен архив (обработка и фреймы) с примером разработки игры "Бита" (стрелка влево — движение биты влево; стрелка вправо — движение биты вправо; пробел — стрельба шариком и пулями).
В архиве также сама компонента.
Также приложен в архиве видео процесса разработки.
Также видео можно просмотреть по ссылке: https://youtu.be/uxyHRx3LQaM

Реализованы методы (описаны в отдельном файле):

— подключения и снятия данных с web-камеры, IP-камеры (http-запросом к камере)

— вывод примитивов на форму компоненты — пиксель, линия, прямоугольник, овал. Вывод текста.

— создание фреймов (фрейм — это, например, изображение машины или биты и пр.), вывод на экран, изменение положения фреймов в экране, работа с теневым экраном атрибутов, уничтожение фреймов и т.д.

— считывание, установка координат фреймов по ID фрейма

— анализ коллизий объектов между собой (удар объектов друг по другу)

— задание фрейму режимов неведимости, типа фрейма и т.д.

— другие функции

————————

В разработке — разработка интерфейса для работы с OpenGL, работа с шейдерами, разработка функций вывода видео на форму компоненты в заданных местах через DirectShow, вращение фрейма, масштабирование фрейма, разработка функции Goto — идти фрейму по вектору.

ВНИМАНИЕ !!! Перед регистрацией компоненты необходимо отключить UAC в винде и перезагрузить комп. Потом можно включить.

33 Comments

  1. BigB

    Не понимаю — для чего на 1С писать игры?

    Reply
  2. protexprotex

    (1)Этот проект — это малая часть другого проекта. Через месяц буду выкладывать проект с помощью которого можно будет распознавать номера автомашин, потом лиц людей и т.д. Вот эта компонента отвечать будет за пересылку данных на сервер + принимать ответ от сервера по распознанным номерам и + отображать на форме распознанный номер (видео будет предварительно браться с web или IP камеры — т.е. номер распознанный будет накладываться на реальное видео — вот как тут: https://infostart.ru/video/w630732/) — ну и за выходные дописал чтобы и игры можно было писать под эту компоненту — так — для интереса :-).

    Более того, эта компонента может использоваться не только для 1С, но и встраиваться в любые другие программы по COM — технологии.

    Reply
  3. protexprotex

    _

    Reply
  4. protexprotex

    (1) Тем более, из под 1С COM — портами управлять можем, под Arduino писать тоже могем, так почему же игры не писать? 🙂

    Reply
  5. acanta

    Можно тетрис сделать? Мышкой кубики разной формы передвигать?

    Reply
  6. for_sale

    (3) По-моему, на 1С писать игры — это всё равно, что на Unity делать приложение для учёта деятельности предприятия — теоретически возможно, но зачем?

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

    Reply
  7. protexprotex

    (6) Ну, не хотите — не скачивайте и не используйте. Я же Вам насильно не рекомендую это использовать. Кому надо — могут придумать как в своей деятельности это использовать. А разговоры надо или не надо нужно или не нужно — так это из серии — что круче — ассемблер или 1С? — каждому свое. Можно ведь написать граф. интерфейс в обработке по управлению, например, графами — куча всего где можно это использовать. А игры — так это одна из областей.

    Reply
  8. protexprotex

    (5) Да, можно. Можно получать координаты мыши, признак нажатия на кнопку мыши, координаты и передвигать спрайты — кубики.

    Reply
  9. for_sale

    (7) не надо так агрессивно воспринимать критику, тем более, что и критики как таковой не было.

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

    Напишите об этих областях — и будет вам низкий поклон. Данная статья называется «Разработка игр на языке 1С…». Об этом я и писал, что, во-первых, для разработки игр есть куча специальных инструментов, во-вторых, к языку 1С эта «разработка игр» имеет такое же отношение как грузчик к экономическому развитию — очень уж посредственное.

    так это из серии — что круче — ассемблер или 1С?

    Нет, не из серии. Из этой серии был бы абстрактный вопрос — что круче, Юнити или 1С. Но вопрос задан в конкретном контексте — разработка игр. Вы на ассемблере тоже игры пишете?

    Reply
  10. acanta

    Диаграмма Ганта, подвижная, перемещения блоков которой можно обработать?

    Reply
  11. protexprotex

    (9) Да нет, агрессии нет. Если что не так — простите. Наверно, не тот слоган выбрал для ответа. Я в том смысле, что каждая разработка должна оцениваться не с позиции надобности / не надобности, а с позиции возможности применения.

    По поводу ассемблера — да, писал игры (долго, но работали игры очень быстро — это просто было ради урока).

    По поводу областей — например:

    1) для моделирования связей сущностей (на экране) моделирование по принципу взял и бросил (типа IDEF0, FDF, IDEF3 — опять же обращаю Ваше внимание, я не пишу что надо тут же делать IDEF на 1С — просто как пример).

    2) для разработки интерактивного алгоритма взаимодействия пользователя и программы 1С. Например — на форму компоненты вывести кнопки(другие элементы), при нажатии производится смена расположения кнопок, вывод интерактивных помощников на экран (боты?) их состав, вид, какие — то элементы могут быть подсвечены, другие картинки выведены, и т.д.

    3) при обработке раскроя можно интерактивно выводить процесс раскроя листа, интерактивно дать пользователю управлять ходом раскроя

    Дальше можно еще придумать много чего

    Reply
  12. protexprotex

    (9) Ну вот — уже пишут ( ann guskova (acanta) ) — про диаграмму Ганта, у которой можно перемещать блоки, и обрабатывать события перемещения — начала/окончания. Также из своей практики вспомнил — состояния исполнения заказов — графически представлять, и при нажатии/щелчке мыши обрабатывать события для отображения информации. Сами из своей практики можете далее накидать…

    Reply
  13. protexprotex

    (10) Да, можно с помощью компоненты отрисовывать диаграмму, и при щелчке мыши пепемещать блоки и отлавливать эти события

    Reply
  14. Steelvan

    ActiveX тупиковая ветка развития. Тем более для 1С, которая почти полностью переходит в веб. Вы опоздали лет на 10 🙂

    ActiveX это круто, кроссплатформенная технология будущего !

    Молодцы, продолжайте в том же духе !

    Reply
  15. Perfolenta

    (14) сомнительно, что 1С откажется от поддержки COM до перехода на какую-нибудь 1С 9.0… от Windows тоже клиенты вряд ли откажутся, если глобальный форс-мажор не случится… а значит ни куда ни кто не опоздал…. кроссплатформенность это не более, чем плюшка… есть, хорошо, а нет, то и так сойдет… к ней надо стремиться, но без нее пока можно обойтись…

    Reply
  16. Steelvan

    ActiveX работает только в толстом.

    Соответственно, про тонкий и веб можно забыть.

    Reply
  17. Steelvan

    http://www.optimasoft.info/

    Наше решение тоже базировалось на ActiveX собственной разработки для моделирования.

    В итоге клиенты начали требовать работу через веб и эту ветку разработки пришлось бросить.

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

    Итого

    Вся графика должна быть реализована через JS + HTML + CSS на поле HTML документа, а все компоненты для системного взаимодействия должны быть реализованы через NativeDLL библиотеки. Сейчас IE10 предоставляет достаточно хороший функционал для решения задач.

    Писать коммерческие приложения в расчете на COM это тупик. Любой конкурент вас задавит одной возможностью работать через веб.

    Reply
  18. protexprotex

    (16) Добрый день. Ну, это ведь обходится. Можно написать программу которая будет транслировать изображение из 1С в оконный интерфейс удаленного клиента + все реакции на нажатие и пр. Если интересно — можем на эту тему пообщаться.

    Reply
  19. protexprotex

    (17) А я и не предлагаю это как коммерческое решение. Кому интересно — пусть пользуется. А кому нет — пусть не пользуется :-). Да и конкурентов я не боюсь — т.к. конкурировать этой AX я ни с кем не хочу 🙂

    Reply
  20. Steelvan

    Все понял 🙂

    Я просто посмотрел на это со своей колокольни разработчика коммерческих решений 🙂

    Reply
  21. Steelvan

    (18) Проходили.

    Сейчас все конфигурации разрабатываются в тонком клиенте.

    Использование ActiveX в толстом заставляет пользователя переключаться между режимами тонкий/толстый.

    Хочешь это = запускай так, а хочешь другое = запускай это же, но уже по другому.

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

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

    Reply
  22. protexprotex

    (20) Ничего страшного. По поводу коммерческих решений — если интересно, то можем посотрудничать — есть запускные (готовые) стартапы — распознавание по удаленному запросу номеров автомашин, рукописной текстовой информации, сейчас идет разработка детектирования лиц в потоковом видео + определение что это за человек, определение текстовых меток на видео + отслеживания перемещения объекта (трекинг объекта) на видео и пр.

    Reply
  23. protexprotex

    (21) Да я не об этом — знаете программу Ammy — Admin? вот так же и сделать можно — у клиента запускается программа — окно — и в этом окне отображается окно из удаленного сервера — и вся работа идет, фактически, на удаленном сервере — а клиент и сервер обменивается событиями нажатия кнопок и сжатой видеоинформацией. А на сервере также стоит планировщик — который раздает контекст окон и принимает события от клиентов.

    Reply
  24. Steelvan

    (23) Может RDP (терминальный сервер) более прямой путь ?

    Reply
  25. pvlunegov

    (17) Выводы едины (по ГРАФИКЕ в 1с) для любого 1с-ника который желает сделать кросс-платформенный интернет ориентированный, многопользовательский проект:

    — Реализация графики на HTML5 Canvas + Js. = ПОЛНЕЙШАЯ кросс-платформерменность, кросс-браузерность, не зависимость от конкретного оборудования.

    — В рамках 1с Конфигуратора реализация в 1с Тонком Клиенте

    — В рамках форм — Управляемая форма, поле с типом = ПолеHTMLДокумента

    — Обмен информацией между окном формы и HTML js кодом через события ПолеHTMLДокумента

    — Возможность горячей замены js кода внутри окна 1с во время выполнения игрового цикла, который обновляет графику в ПолеHTMLДокумента

    — Возможность программного изменения поведения, спрайтов, реакций и т.п. внутри кода 1с

    — Полное управление js кодом из 1с и его обратная реакция = обмен информацией (нажатия на игровые объекты внутри HTML5 Canvas)

    Я данные принципы выстрадал потом и кровью целый год.

    Прошел те-же тернии, как и автор данного поста.

    Я понял что Active-x это ТУПИК.

    Для интернет-ориентированных проектов, которые запросто запускаются как обычные приложения ГДЕ УГОДНО (телефон, компьютер, планшет)

    НУЖНО ОСВАИВАТЬ HTML5 + JavaScript

    Что касается ЛОГИКИ интернет-игры в рамках 1с-Предприятия:

    — МОЩНЕЙШАЯ структурированная логика многопланового развития проекта позволяет в кратчайшие сроки сделать из заготовки игры полноценный Интернет-проект

    — Расширение до мощнейшего интернет-портала

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

    — Возможность сделать кросс-платформенный много-пользователький проект, развить его из заготовки.

    — Мощнейшая возможность реализовать многоуровневую мощную и быструю логику с поддержкой сервера для расчета критически важных вычислений, поддержка множества видов Баз ДАнных (MS SQL, MySQL, SQLLite и т.п.)

    Все это позволяет для ТЕХ КТО МЫСЛИТ МАСШАТАБНО

    создать собственный интернет-проект.

    Я уже создал собственный проект и на данный момент основная сложность для меня — реализация HTML5 + js графики.

    Приходиться осваивать.

    Остальное уже умею.

    Reply
  26. protexprotex

    (26) И?

    Reply
  27. pvlunegov

    (27) В новой версии 1с 8.3.7.1759. (анонс http://v8.1c.ru/o7/201505layout/index.htm)

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

    на Управляемых формах.

    Пример готовой реализации — https://infostart.ru/public/585020/

    Данный релиз позволяет сделать простую спрайтовую графику на Управляемых формах.

    Для простых в графическом плане игр без особых изысков этого достаточно.

    Для конкуренции с графическими монстрами игродела в рамках 1с можно создавать проекты

    — С минимальной спрайтовой графикой, без лишнего кода, все в рамках кода 1с.

    — С большим и мощным функционалом.

    — Кросс-платформенность в рамках Windows, Linux, Android (1с платформы)

    — Безграничное и быстрое развертывание логики в глубину и ширину.

    — Оптимизация производительности в рамках Клиент-Серверной реализации

    — Возможность создавать большие и сложные интернет-проекты

    Все это говорит о чем?

    о том, что:

    — Использование Active-X компонент ограничивает кросс-платформенность реализацией лишь в рамках толстого НЕУПРАВЛЯЕМОГО режима.

    — Интернет-реализация = 0

    Таким образом, развитие в сторону Active-X компонент ограничивает развитие проекта и заводит его в тупик.

    Ежели при начале проектирования ориентироваться на вышеобозначенные принципы это позволит:

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

    Reply
  28. protexprotex

    (28) Вы, наверное, плохо читаете посты (или не внимательно). Данная Active-X компонента используется мной в проектах для разработки на c++ builder. К 1С она не имеет никакого отношения. К 1С я ее «прикрутил» в праздники — за день написал на ней игру (на языке 1С — просто для примера). Дальнейшего прямого развития к 1С не будет. Но кому хочется — пусть качают и пользуются. Но развиваться КОМПОНЕНТА будет (для моих проектов на c++ — обработка изображения). Как говорится, кому надо пусть качают. Кому не надо — пусть не качают.

    Reply
  29. protexprotex

    (28) И коммерческого использования для разработки игр я не преследовал.

    Reply
  30. Steelvan

    (26)

    хе-хе, мы сейчас грызем

    https://webref.ru/

    https://learn.javascript.ru/

    Reply
  31. Dzenn

    Reply
  32. Иваныч

    (32) Картинка понравилась, иногда по достижению результата бывает такое настроение

    Reply
  33. protexprotex

    (33)

    (32)

    Вот зачем — Русский человек не ищет легкий путей. И поэтому у нас лучшая военная техника. И прочий люд умстенного труда сколько за бугор не уезжает — все равно у нас их полно

    🙂

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *