Wolfenstein на 1С

24.04.26

Задачи пользователя - Игры

Да, это Wolfenstein на 1С, без сторонних сервисов... Только 1С, только хардкор.

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

Наименование Скачано Бесплатно
Wolfenstein 1С
.epf 26,67Mb
117 Скачать бесплатно

Приветствую всех.

Итак, минутка бесполезной (или не очень) информации...

 

В общем, как мы знаем, 1С - это великий язык программирования, который регулярно одаряет нас прекрасными фичами, возможностями и... и да! Естественно, любители творить безумие не прошли мимо и не раз пробовали написать ту или иную игру на этом языке - Герои? Легко! Различные текстовые рпг? Да как нефиг делать!

Но лично я хотел опробовать реализовать именно 3Д (будь то реальное или псевдо 3Д). Множество попыток были опробованы мною (и изометрия, и иные подключения внешних инструментариев), чтобы получить идеальный итоговый результат и наконец-то оно удалось! Решением было использовать технологию древнего мира, забытую на годы, - Raycasting! Это "невероятная" технология, которая позволяет на основе 2D проекции получить полноценную (ну почти) 3D картинку используя принцип, связанный с пусканием лучей и получения расстояния (это прям если совсем кратко).

 

Собственно пример работы с Ray casting, взятая на просторах интернета

 

И как удачно, именно компания id software опробовали её в те самые бородатые годы и на свет появился великий и могучий Wolfenstein 3D. Именно он и стал моей музой.

 

Скриншот из оригинала игры

 

В общем, эту технологию и в целом проект от id software я и использовал как основу для своих коварных задумок.

По итогу, потратив некоторое время, мне удалось вывести на свет данное детище: Wolf 3D на 1С.

На текущий момент считаю этот проект завершенным в части поставленных целей - реализовать рабочий прототип (т.е. демо версию).

Если вернуться вообще к основам, зачем, какая цель? То все просто, мне хотелось продемонстрировать возможность сделать на 1С что-то от себя в 3D (или очень близкое к его истокам).

 

 

 

Что на текущий момент работает?

Для более удобного пользования я подготовил рабочий вариант обработки, которая позволяет визуально увидеть все стадии разработки, настроить (включить/отключить) различные "технические" фичи, которые позволили игре работать более-менее.

 

 

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

 

Если перечислять всё-таки, что сделано, то:

  • Рабочий генератор уровней. Каждый уровень генерируется случайным образом размером 1024*1024 ячейки (ширина прохода персонажа 32 ячейки). Всего получается от 30 до 80 различных вариантов движения. В целом для теста вполне достаточно;
  • Возможность "запекать" полученный результат для более быстрой работы. Проблема в том, что лучи и отрисовка картинки занимает очень много времени. Как итог я добавил болванчика, который пробегает по карте и сохраняет для вас весь результат;
  • Анимации. Да, плавность движения есть (но не такая);
  • Декорации и враги. Поведение постарался сделать близкое к реальному, но без построения кратчайших маршрутов. Это занимает слишком много времени. Построение маршрутов я сделал в иной игре (в следующий раз расскажу подробнее). 
  • Мультиплеер - Он рабочий, но требует небольшие доработки. В ближайшее время постараюсь обновить файл; 

 

Что пока не сделано или в процессе:

  • Текстуры карты - пока использую только один вариант. Заготовки есть и остальных, но для демо версии пока достаточно;
  • Текстуры врагов/объектов - либо не соответствуют оригиналу, либо частично изменены для адаптации под 1С;
  • Визуальные артефакты - неверное перекрытие текстур, видимость сквозь стены, некорректное соотношение размеров. Данные проблемы мне знакомы и я всячески стараюсь их поправить, но в рамках текущей реализации придется немного пострадать;
  • Нет смены уровней и логичного завершения после победы над всеми ботами - опять же, так как это демо "движка" игры, некоторые моменты я не реализовывал;
  • Неверное или частично неправильное наполнение интерфейса;
  • Частый баг самой 1С - картинки не всегда перерисовываются. Видимо из-за перегрузки табличного документа рисунками они подвисают. Достаточно сделать шаг, чтобы вызвать перерисовку, и всё становится на свои места;

 

 Если же рассказать о конкретно интересных моментах, то:

  • Отрисовка всех текстур на экране выполняются с учетом глубины (т.е. перекрытия). Что значит? Противники/предметы не будут находиться перед стеной, хотя физически расположены за ней. В процессе отрисовки все рисунки сортируются с учетом расстояния и выводятся в нужном порядке (спасибо 1С, что хоть так можно)
  • Вся игра работает исключительно на клиенте (лишь операция загрузки сохраненных файлов делается на сервере при старте). Я старался всячески исключать серверные вызовы (явные/не явные), чтобы избежать проседаний в работе.
  • Самые тяжелые моменты были отрисовка картинок на экране и быстрая загрузка сохраненных кадров для отрисовки. В первом случае было нереально сложно и непонятно, как срастить ячейки (и отрисовка на них) и экранное пространство, чтоб картинка была правдоподобной и соответствовала реальности. Ведь на тех же c++ и т.д. в этом плане гораздо проще, а тут мы имеем разные сущности, и не все формулы легко накладывались. Во втором случае сложность заключалась в том, что некоторые методы поиска сохраненных данных выполняли неявные серверные вызовы или были слишком медленные. Приходилось придумывать своего рода псевдо аналог индекса и т.д., чтобы ускорить поиск и не вызывать серверные походы.

 

Если показать на примерах... То проще накинуть несколько gif анимаций:

 

 

Повторюсь еще раз, все сделано только с использованием 1С и её функционала.

 

  • Управление:

Ходить W S A D, а также Q и E для того, чтобы шаг вбок сделать (стрейф), стрельба на F, смена оружия на 1 2 3 4.

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

 

Как работать с обработкой:

При открытии обработки необходимо указать путь до хранения временных файлов игры. Лучше выбирать сетевую папку или ту, к которой есть доступ у 1С (согласен, интересная реализация). Затем рядом с путем есть кнопка, куда вы по нажатию сохраните Демо вариант мира (он запихнут в двоичные данные внутри обработки, поэтому и вес такой большой).

После сохранения демо файлов у вас будет возможность воспользоваться сразу всеми "фичами". Если хотите генерировать свой мир, то просто нажимаете на Запустить генерацию мира, после чего в папке, которую вы указали выше, появятся файлы с именем вашего пользователя и будут запускаться уже они.

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

Вы также можете не сохранять демо файлы, но тогда у вас будут сильные просадки по скорости. Имейте в виду.

 

Работоспособность проверялась на версиях 8.3.23.1865 и 8.3.27.1786

Скачивайте, наслаждайтесь! Буду рад обратной связи и рекомендациям. Надеюсь, любителей творить дичь я также смог вдохновить)

Всем спасибо за внимание!

 

ЗЫ.

Отвечу сразу на самый частый вопрос - Зачем? Да собственно, потому, что могу и есть на это время))))

Вступайте в нашу телеграмм-группу Инфостарт

обработка игра Wonfenstein 3D хобби

См. также

Игры 1С 8.3 Россия Бесплатно (free)

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

07.04.2026    1222    40    chuprina_as    9    

13

Игры 1С 8.3 Россия Бесплатно (free)

Мастерам, проводящим настолки по Dangeons&Dragons, в помощь.

16.03.2026    1907    45    romba    0    

10

Игры 1С 8.3 1С:Библиотека стандартных подсистем Бесплатно (free)

Аналог тетриса на жёлтой платформе.

12.03.2026    1398    76    SerVer1C    6    

19

Игры 1С 8.3 Россия Бесплатно (free)

Классическая игра Три в ряд. При образовании комбинации из 3 и более фишек они исчезают, новые фишки падают сверху, а игрок получает очки. За длинные комбинации (4-5 фишек) начисляются бонусные очки.

05.03.2026    1384    126    user2163916    4    

11

Игры 1С:Предприятие 8 Россия Бесплатно (free)

Сокобан (Sokoban) — это классическая игра-головоломка, где игроку необходимо расставить ящики по целям, перемещая их по лабиринту.

20.02.2026    887    65    user2163916    3    

12

Игры 1С 8.3 Бесплатно (free)

Это расширение, практически к любой конфигурации 1С, идеально подойдёт не для того, чтобы парализовать работу организации, а для того, чтобы сформировать коллектив, объединённый общими целями, ценностями и интересами. И всё это достигается простым регулярно проводимым мероприятием по сплочению команды – шашечным турниром! В этом, не побоюсь этого слова, приложении, можно провести шашечную битву как с коллегой, так и самому с собой, если у вас раздвоение личности. А также к вашим услугам почти искусственный интеллект, то есть бот, который честно и по правилам играет с вами в поддавки, когда по правилам вы должны играть в обычные шашки.

28.12.2025    1809    126    Knyaz3d    6    

11

Игры 1С:Предприятие 8 Россия Бесплатно (free)

Преврати свой 1С с обычными формами в мощную игровую консоль! И пусть баланс подождет!

13.10.2025    8731    166    slava_1c    14    

44

Игры 1С:Предприятие 8 Россия Бесплатно (free)

Внешняя обработка, реализующая классическую игру "Крестики-нолики". Особенностью обработки является реализация противника, способного блокировать ходы пользователя и пытаться выиграть.

02.10.2025    1933    82    user2163916    2    

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 1092 24.04.26 10:17 Сейчас в теме
Вчера размышлял, что надо Doom на 1С написать с чтением уровней из WAD-файла. И вот я только подумал - уже реализовали )
3. starik-2005 3241 24.04.26 10:29 Сейчас в теме
(1)
И вот я только подумал - уже реализовали
Я вчера опубликовал на 1000% написанную ИИ (на моих видеокартах) игруху на русторе. Так что просто попроси ИИ адаптировать дум в 1С.
12. gybson 6 24.04.26 11:41 Сейчас в теме
13. starik-2005 3241 24.04.26 12:15 Сейчас в теме
(12) У меня многоходовочка на три сериала от амазона.
2. starik-2005 3241 24.04.26 10:26 Сейчас в теме
А правильно я понимаю, что фошисты не стреляют в ответ?
ЗЫ: в 90х еще покупал книжку про 3д, там как раз вольфенштейн рассматривался и все эти картинки с рэйтресингом. Технологии 40 лет, и вот она докатилась до 1С )))
ЗЫЗЫ: кто-то добрый делал на 1С регдеринг красивых картинок - типа шарики множественно отражающиеся друг в друге, так что да - ты не первый ))) Мы с этим на сях в начале 00-х активно игрались.
6. darkghostterran 44 24.04.26 10:43 Сейчас в теме
(2) Стрелять то стреляют, просто из-за перегрузки сцены артефачит и не всегда рисуется "как надо"((

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

Вообще 1С со своим "движком" прикольные вызовы бросает. Интересно было разобраться и подогнать одно под другое))
20. Mr.Rm 24.04.26 14:38 Сейчас в теме
(2) Re: ЗЫ
Делал для пробы raytracing под OneScript: https://github.com/Mr-Rm/tinyraytracer
Он работает и в 1С, но очень медленно из-за особенностей нецелых вычислений: в 1С это не плавающая точка.
4. DmitryKSL 186 24.04.26 10:30 Сейчас в теме
Интересно конечно. Но как на 1С сделать хоть что-то динамичное? Поле табличного документа теоретически обновляется 10 раз в секунду через ПодключитьОбработчикОжидания (пауза 0.1). Но по факту даже без обработки данных, если просто запускать обработчик, то пауза по факту 0.15 - 0.3 секунды. От чего зависит не понятно. Т.е. в среднем пять кадров в секунду.
Делал демку 8 бит https://infostart.ru/1c/reports/2646035/
Древний 8 битный комп 50 раз в секунду рисовал, 1С в 10 раз медленнее. Печалька...
5. darkghostterran 44 24.04.26 10:40 Сейчас в теме
(4) В какой-то из версий был прикольный баг, когда можно было запускать обработчик ожидания на 0.0...n и отработка реально была быстрая. Но там валились артефакты сильные.

По факту да, сделать что-то более динамичное без использования иных "инструментариев" пока нет(

Несколько попыток сделать стратегии различные типо StarCraft дали такой же результат.. все медленное и крайне плохо работает. Может однажды в 1С появится что-то любителей эксперементировать)))
Прикрепленные файлы:
starik-2005; DmitryKSL; +2 Ответить
7. starik-2005 3241 24.04.26 10:49 Сейчас в теме
(5)
Может однажды в 1С появится что-то любителей эксперементировать
Ага, обработчики внешнего события из внешней компоненты - ИИ за минут пятнадцать запилит и сможешь послать оповещения.
https://infostart.ru/1c/articles/2044928/ - вот скорми qwen
9. darkghostterran 44 24.04.26 10:55 Сейчас в теме
(7) Тут в целом был посыл, что только 1С без внешних решений (компоненты и тд). Такие варианты тоже пробовались, но я считал их читерским решением)))

Как вариант тоже неплохо)
10. starik-2005 3241 24.04.26 10:59 Сейчас в теме
(9)
читерским
Ну ты же про "что-то [для] любителей эксперементировать".
15. starik-2005 3241 24.04.26 12:39 Сейчас в теме
(9)
только 1С без внешних решений (компоненты и тд)
Ну вот я попросил ИИ мне написать на питоне вебсокет-сервис, который будет раз в N мс посылать после команды мессагу. В итоге с 1С подоткнулся и при 10 мс очень даже сработало:
&НаКлиенте
Процедура Соединить(Команда)
	Параметры1 = Новый ПараметрыWebSocketКлиентСоединения;
	Параметры1.Таймаут = 10;
	WebSocketКлиентСоединения.ОткрытьСоединение(
		"Тест соединения",
		Адрес,
		Новый ОбработчикиWebSocketКлиентСоединения(
			"ОткрытиеСоединения",
		    "ПолучениеСообщения",
			"ОбработкаОшибок",
			"ЗакрытиеСоединения",
			ЭтотОбъект),
			Параметры1);
КонецПроцедуры

&НаКлиенте
Процедура ОткрытиеСоединения(Соединение) Экспорт 
	Сообщить("Соединение открыто");
	Соединение.ОтправитьСообщение("START 10");
КонецПроцедуры

&НаКлиенте
Процедура ПолучениеСообщения(Соединение, Сообщение) Экспорт 
	ТабДок.Область(1,1).Текст = Сообщение; // <<< ---- вот тут рендер твоего кадра
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОшибок(Соединение, КодОшибки, Описание) Экспорт 
	Сообщить("Ошибка:");
	ТабДок.Область(2,1).Текст = КодОшибки;
	ТабДок.Область(3,1).Текст = Описание;
КонецПроцедуры

&НаКлиенте
Процедура ЗакрытиеСоединения(Соединение, КодЗакрытия) Экспорт 
	ТабДок.Область(4,1).Текст = "Соединение закрыто";
КонецПроцедуры
Показать
VyacheslavShilov; +1 Ответить
16. SlavaKron 24.04.26 12:49 Сейчас в теме
(9) А поле HTML c java-скриптами является внешним решением?
18. starik-2005 3241 24.04.26 14:16 Сейчас в теме
(16)
А поле HTML c java-скриптами
Ну это вообще не 1С. На нем-то любой дурак с ИИ напишет что угодно )))
8. starik-2005 3241 24.04.26 10:54 Сейчас в теме
(5) Мож так делать:
1. ВК с таймером вызова вызывает внешнее событие формы. Устанавливает флаг стопа.
2. 1С рисует кадр. Сбрасывает флаг в ВК.
3. ВК ждет по таймеру следующего кадра. Если флаг установлен - ждет дальше. Если сброшен - скидывает, сколько кадров пришлось пропустить, вызывая внешнее событие - т.е. к п.1.
11. DmitryKSL 186 24.04.26 11:39 Сейчас в теме
(8)
1С рисует кадр

Здесь тоже затык. Во-первых, медленно заполняет ячейки табдока, только готовый макет быстро выводит. Во-вторых, не факт что обновление табдока на форме вообще возможно быстрее 10 раз в секунду.
14. starik-2005 3241 24.04.26 12:17 Сейчас в теме
(11)
не факт
Ну так попробуй и расскажешь, что тут факт и на котором железе получилось. Ну и отладчик не забудь отрубить, а то знаю я этих меряющих.
19. DmitryKSL 186 24.04.26 14:34 Сейчас в теме
(14) При чем здесь отладчик? Я про визуальное обновление. Пробовал в цикле вызывать процедуру которая перерисовывает табдок. Видел только последнюю картинку. Работало динамическое обновление только если вызывать процедуру через ПодключитьОбработчикОжидания. Чтобы на форме обновился табдок, сама форма должна быть в состоянии покоя, т.е. ничем не нагружена. Вопрос в том, что там платформе зашито. Вероятно там есть некоторая пауза, по истечении которой начинается обновление. И у меня не получилось быстрее 10 раз в секунду... Ну как-то так.
21. starik-2005 3241 24.04.26 15:01 Сейчас в теме
(19)
При чем здесь отладчик?
При том, что код с включенной отладкой работает медленнее, чем с выключенной, иногда на порядок.

Я там выше код кинул с веб-сервисами - работает, т.е. 100 в секунду примерно кадров есть.
22. DmitryKSL 186 24.04.26 15:28 Сейчас в теме
(21)
ТабДок.Область(1,1).Текст = Сообщение

Т.е. ты увидел на форме в течение секунды 100 изменений содержимого поля?
23. starik-2005 3241 24.04.26 15:35 Сейчас в теме
(22) нет, я увидел мелькание цифр, и они замелькали за сотню за примерно секунду

ЗЫ: Я начинаю сомневаться, что ты вообще программист...
DmitryKSL; +1 Ответить
24. DmitryKSL 186 24.04.26 15:59 Сейчас в теме
(23) И тебя с пятницей)))
17. SlavaKron 24.04.26 12:51 Сейчас в теме
(11) Растр (Картинка) можно генерировать попиксельно на лету средствами 1С для работы с двоичными данными.
VyacheslavShilov; +1 Ответить
25. Alxby 1148 24.04.26 16:46 Сейчас в теме
(11) А еще можно поиграться с программным формированием кадров в SVG
27. SlavaKron 25.04.26 19:16 Сейчас в теме
(25) SVG - это читерство уровня HTML, тогда уж сразу (16).
28. Alxby 1148 25.04.26 19:26 Сейчас в теме
(27) Ничего подобного. XML у SVG по сути мало чем отличается от двоичных данных растра - для картинки это что тут, что там - источник данных. Я же предлагаю использовать не ПолеHTMLДокумента, а Картинку. А тут не важно, растровая она или векторная.
29. SlavaKron 25.04.26 19:38 Сейчас в теме
(28) А какой смысл – у ТабДока есть своя нативная векторная графика: https://infostart.ru/1c/tools/872775/
30. Alxby 1148 25.04.26 20:31 Сейчас в теме
(29) И так можно, да. Только у SVG возможностей побольше. К сожалению, платформа не все эти возможности поддерживает, например не поддерживает анимацию.
26. SlavaKron 25.04.26 19:13 Сейчас в теме
(5)
можно было запускать обработчик ожидания на 0.0...n
Это и сейчас работает, но обработчик останавливается, если пользователь ничего не делает, но если, например, двигает мышкой, то ок.
31. Pipapalamm 26.04.26 15:06 Сейчас в теме
"Рабочий мультиплеер" - при интенсивной одновременной стрельбе по врагам, не забудьте устанавливать управляемые блокировки!
dnikolaev; +1 Ответить
Для отправки сообщения требуется регистрация/авторизация