Разработка игр на языке 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 не будет опубликован. Обязательные поля помечены *