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

Программирование - Внешние компоненты

Игры Игра Active-X

8
Написанная 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 в винде и перезагрузить комп. Потом можно включить.

8

Скачать файлы

Наименование Файл Версия Размер
Разработка игр на языке 1С с использованием Active-X компоненты (собственная разработка):
.rar 30,55Mb
04.01.18
2
.rar 30,55Mb 2 Скачать

См. также

Комментарии
Избранное Подписка Сортировка: Древо
1. BigB 172 04.01.18 21:44 Сейчас в теме
Не понимаю - для чего на 1С писать игры?
3. protexprotex 155 04.01.18 22:40 Сейчас в теме
(1)Этот проект - это малая часть другого проекта. Через месяц буду выкладывать проект с помощью которого можно будет распознавать номера автомашин, потом лиц людей и т.д. Вот эта компонента отвечать будет за пересылку данных на сервер + принимать ответ от сервера по распознанным номерам и + отображать на форме распознанный номер (видео будет предварительно браться с web или IP камеры - т.е. номер распознанный будет накладываться на реальное видео - вот как тут: https://infostart.ru/video/w630732/) - ну и за выходные дописал чтобы и игры можно было писать под эту компоненту - так - для интереса :-).
Более того, эта компонента может использоваться не только для 1С, но и встраиваться в любые другие программы по COM - технологии.
Serj1C; jan-pechka; +2 Ответить
6. for_sale 290 05.01.18 15:23 Сейчас в теме
(3) По-моему, на 1С писать игры - это всё равно, что на Unity делать приложение для учёта деятельности предприятия - теоретически возможно, но зачем?

К тому же 1С тут вообще не при чём - всё в компоненте отдельной сделано, из 1С только команды подаются.
7. protexprotex 155 05.01.18 16:02 Сейчас в теме
(6) Ну, не хотите - не скачивайте и не используйте. Я же Вам насильно не рекомендую это использовать. Кому надо - могут придумать как в своей деятельности это использовать. А разговоры надо или не надо нужно или не нужно - так это из серии - что круче - ассемблер или 1С? - каждому свое. Можно ведь написать граф. интерфейс в обработке по управлению, например, графами - куча всего где можно это использовать. А игры - так это одна из областей.
9. for_sale 290 05.01.18 16:52 Сейчас в теме
(7) не надо так агрессивно воспринимать критику, тем более, что и критики как таковой не было.

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


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

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

Нет, не из серии. Из этой серии был бы абстрактный вопрос - что круче, Юнити или 1С. Но вопрос задан в конкретном контексте - разработка игр. Вы на ассемблере тоже игры пишете?
11. protexprotex 155 05.01.18 17:06 Сейчас в теме
(9) Да нет, агрессии нет. Если что не так - простите. Наверно, не тот слоган выбрал для ответа. Я в том смысле, что каждая разработка должна оцениваться не с позиции надобности / не надобности, а с позиции возможности применения.
По поводу ассемблера - да, писал игры (долго, но работали игры очень быстро - это просто было ради урока).
По поводу областей - например:
1) для моделирования связей сущностей (на экране) моделирование по принципу взял и бросил (типа IDEF0, FDF, IDEF3 - опять же обращаю Ваше внимание, я не пишу что надо тут же делать IDEF на 1С - просто как пример).
2) для разработки интерактивного алгоритма взаимодействия пользователя и программы 1С. Например - на форму компоненты вывести кнопки(другие элементы), при нажатии производится смена расположения кнопок, вывод интерактивных помощников на экран (боты?) их состав, вид, какие - то элементы могут быть подсвечены, другие картинки выведены, и т.д.
3) при обработке раскроя можно интерактивно выводить процесс раскроя листа, интерактивно дать пользователю управлять ходом раскроя
Дальше можно еще придумать много чего
12. protexprotex 155 05.01.18 17:15 Сейчас в теме
(9) Ну вот - уже пишут ( ann guskova (acanta) ) - про диаграмму Ганта, у которой можно перемещать блоки, и обрабатывать события перемещения - начала/окончания. Также из своей практики вспомнил - состояния исполнения заказов - графически представлять, и при нажатии/щелчке мыши обрабатывать события для отображения информации. Сами из своей практики можете далее накидать...
4. protexprotex 155 04.01.18 22:42 Сейчас в теме
(1) Тем более, из под 1С COM - портами управлять можем, под Arduino писать тоже могем, так почему же игры не писать? :-)
2. protexprotex 155 04.01.18 22:40 Сейчас в теме
5. acanta 44 05.01.18 11:41 Сейчас в теме
Можно тетрис сделать? Мышкой кубики разной формы передвигать?
8. protexprotex 155 05.01.18 16:03 Сейчас в теме
(5) Да, можно. Можно получать координаты мыши, признак нажатия на кнопку мыши, координаты и передвигать спрайты - кубики.
10. acanta 44 05.01.18 17:03 Сейчас в теме
Диаграмма Ганта, подвижная, перемещения блоков которой можно обработать?
13. protexprotex 155 05.01.18 17:17 Сейчас в теме
(10) Да, можно с помощью компоненты отрисовывать диаграмму, и при щелчке мыши пепемещать блоки и отлавливать эти события
14. Steelvan 06.01.18 15:33 Сейчас в теме
ActiveX тупиковая ветка развития. Тем более для 1С, которая почти полностью переходит в веб. Вы опоздали лет на 10 :)

ActiveX это круто, кроссплатформенная технология будущего !
Молодцы, продолжайте в том же духе !
15. Peleng 19 10.01.18 16:33 Сейчас в теме
(14) сомнительно, что 1С откажется от поддержки COM до перехода на какую-нибудь 1С 9.0... от Windows тоже клиенты вряд ли откажутся, если глобальный форс-мажор не случится... а значит ни куда ни кто не опоздал.... кроссплатформенность это не более, чем плюшка... есть, хорошо, а нет, то и так сойдет... к ней надо стремиться, но без нее пока можно обойтись...
protexprotex; +1 Ответить
16. Steelvan 16.01.18 09:58 Сейчас в теме
ActiveX работает только в толстом.

Соответственно, про тонкий и веб можно забыть.
18. protexprotex 155 16.01.18 10:21 Сейчас в теме
(16) Добрый день. Ну, это ведь обходится. Можно написать программу которая будет транслировать изображение из 1С в оконный интерфейс удаленного клиента + все реакции на нажатие и пр. Если интересно - можем на эту тему пообщаться.
21. Steelvan 16.01.18 11:39 Сейчас в теме
(18) Проходили.

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

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

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

Тем более, повторяюсь, я рассматриваю в контексте разработки коммерческих решений, которые будут оцениваться на костыльность потенциальными покупателями.
23. protexprotex 155 16.01.18 11:43 Сейчас в теме
(21) Да я не об этом - знаете программу Ammy - Admin? вот так же и сделать можно - у клиента запускается программа - окно - и в этом окне отображается окно из удаленного сервера - и вся работа идет, фактически, на удаленном сервере - а клиент и сервер обменивается событиями нажатия кнопок и сжатой видеоинформацией. А на сервере также стоит планировщик - который раздает контекст окон и принимает события от клиентов.
Восьмой; +1 Ответить
25. Steelvan 16.01.18 11:46 Сейчас в теме
(23) Может RDP (терминальный сервер) более прямой путь ?
17. Steelvan 16.01.18 10:07 Сейчас в теме
http://www.optimasoft.info/

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

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

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

Писать коммерческие приложения в расчете на COM это тупик. Любой конкурент вас задавит одной возможностью работать через веб.
pvlunegov; +1 Ответить
19. protexprotex 155 16.01.18 10:24 Сейчас в теме
(17) А я и не предлагаю это как коммерческое решение. Кому интересно - пусть пользуется. А кому нет - пусть не пользуется :-). Да и конкурентов я не боюсь - т.к. конкурировать этой AX я ни с кем не хочу :-)
26. pvlunegov 127 20.01.18 08:00 Сейчас в теме
(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 графики.
Приходиться осваивать.
Остальное уже умею.
27. protexprotex 155 20.01.18 08:51 Сейчас в теме
28. pvlunegov 127 20.01.18 09:05 Сейчас в теме
(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 компонент ограничивает развитие проекта и заводит его в тупик.

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

- После создания заготовки годами развивать проект и даже создать команду разработчиков и получать прибыль от него
29. protexprotex 155 20.01.18 09:24 Сейчас в теме
(28) Вы, наверное, плохо читаете посты (или не внимательно). Данная Active-X компонента используется мной в проектах для разработки на c++ builder. К 1С она не имеет никакого отношения. К 1С я ее "прикрутил" в праздники - за день написал на ней игру (на языке 1С - просто для примера). Дальнейшего прямого развития к 1С не будет. Но кому хочется - пусть качают и пользуются. Но развиваться КОМПОНЕНТА будет (для моих проектов на c++ - обработка изображения). Как говорится, кому надо пусть качают. Кому не надо - пусть не качают.
30. protexprotex 155 20.01.18 09:26 Сейчас в теме
(28) И коммерческого использования для разработки игр я не преследовал.
31. Steelvan 20.01.18 20:45 Сейчас в теме
20. Steelvan 16.01.18 11:32 Сейчас в теме
Все понял :)

Я просто посмотрел на это со своей колокольни разработчика коммерческих решений :)
22. protexprotex 155 16.01.18 11:40 Сейчас в теме
(20) Ничего страшного. По поводу коммерческих решений - если интересно, то можем посотрудничать - есть запускные (готовые) стартапы - распознавание по удаленному запросу номеров автомашин, рукописной текстовой информации, сейчас идет разработка детектирования лиц в потоковом видео + определение что это за человек, определение текстовых меток на видео + отслеживания перемещения объекта (трекинг объекта) на видео и пр.
24. Steelvan 16.01.18 11:45 Сейчас в теме
{ОбычноеСобачьеДерьмоДоСловаНо}, но у нас другой профиль. Мы занимаемся бизнес-процессами.

Свои проекты бы поднять :)
Оставьте свое сообщение