Создание игры "Battle City" (танчики) на BGE26.02.2015, 15:44. Показов 17726. Ответов 56
Метки нет (Все метки)
Привет!
Хочу написать танчики на BGE с целью лучше узнать API движка. До применения API и Python пока далеко. Проблема в самом начале: не могу придумать, как сделать анимацию движения танка на спрайтах. Могу наложить текстуру и двигать площадку, а вот как менять текстуры и организовать удобно всё это - ума не приложу. Хочу делать сначала на Logic Bricks, а потом писать на Python, но только то, что действительно проще на нём (или только эта возможность и есть) Я записал небольшое видео. Мне кажется, уже на этапе, показанном в видео, много ошибок. Посмотрите, пожалуйста: Battle City in BGE. Attempt number 1
0
|
|
| 26.02.2015, 15:44 | |
|
Ответы с готовыми решениями:
56
Как написать Battle city (танчики) Танчики (battle city) в windows forms Есть библиотеки для создания 2D игр? Таких как танчики (Battle City) или Марио? |
|
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
|
|
| 09.01.2017, 21:17 | |
|
Fulcrum_013, это тоже по сути не решает проблемы - тут две стороны при большом пинге : или более реальное положение обьектов и хуже сглаживание или хорошее сглаживание и больший промах в реальном положении игрока. там где недопустимо переезд игрока дальше реального положение, например на сервере игрок подошел к обрыву а на клиенте он упадет, там всегда будут рывки.
0
|
|
| 09.01.2017, 22:04 [ТС] | ||
|
Добавлено через 8 минут Я узнал, что она сделана на бесплатном html5 игровом движке PlayCanvas. А на сервере игра использует бесплатный игровой сервер на Node.js (с открытыми исходниками), который называется Colyseus
0
|
||
|
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
|
|
| 09.01.2017, 22:20 | |
|
8Observer8, если по самой игре - то все сделано на высоком уровне) по поводу синхронизации, иногда если присмотреться то вижу рывки даже на своем танке - это особенно если двигаться по прямой линии, то есть при команде на движение сервер вычисляет положение, присылает клиенту и только потом клиент двигается в эту точку.
1
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 09.01.2017, 22:32 | |||
|
Добавлено через 7 минут
0
|
|||
| 09.01.2017, 22:45 [ТС] | |||
|
Добавлено через 3 минуты Добавлено через 2 минуты А нет, вот исходники движка: https://github.com/playcanvas/engine Но всё равно, в таких движках физический движок описан только на уровне документации и обычно мало кто лезет. Вот тут в документации описано, что представляет физический движок: http://developer.playcanvas.co... l/physics/
0
|
|||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 09.01.2017, 23:39 | |||
|
Добавлено через 12 минут
1
|
|||
| 17.01.2017, 00:37 [ТС] | |
|
ASDFD12, я воспроизвёл дизайн вашей карты. Пока без мультиплеера, танк едет поверх блоков, можно только осмотреть карту: https://tanks2d.herokuapp.com/
Правда, там нескольких блоков не хватает, потому что пока я делал скриншоты кто-то заходил, портил, и мой танк пытался взорвать ![]() Заодно познакомился, как использовать совместно Tiled Map Editor, Phaser+TypeScript, Texture Packer. Для Unity пришлось активировать триал версию на 7 дней для Texture Packer Pro. Из Tiled экспортировал в csv формат, а по нему уже раставляю префабы в Unity. А так очень удобные инструменты. Позволяют быстро создавать карты и отделить работу Левел Дизайнера и программиста. Хочу купить Texture Packer Pro + есть бесплатный экспортёр в Unity на Asset Store. Texture Packer Pro стоит в районе 2000 рублей. Очень удобный и эффективный инструмент для Unity. Я больше сосредоточусь на Unity + UNet, так как в Phaser уйдёт больше времени и UNet мне понравился. Он больше подходит для такого типа игр и в нём как раз можно делать комнаты на небольшое кол-во человек, не больше 20.
0
|
|
|
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
|
|
| 17.01.2017, 10:35 | |
|
8Observer8, жду тогда мультиплееп) неплохой подход для редизайна. Texture Packer Pro можно спокойно заменить стандартным юнитивским sprite editor, он также прекрасно делает атласы. А UNet фри лицензия только 20 коннектов.
0
|
|
| 17.01.2017, 12:25 [ТС] | ||||
|
Я пробовал тестить UNet. Меня удивило, что даже с моим пингом в 150 мс движения довольно плавные. Причём, я пробовал ставить в настройках отправку синхронизирующих сообщений с частотой 9 и 16 пакетов в секунду, всё равно работает одинаково замечательно.
0
|
||||
|
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
|
|||
| 17.01.2017, 12:36 | |||
|
Добавлено через 4 минуты
0
|
|||
| 18.01.2017, 14:35 [ТС] | ||
Да, в Unity ещё есть свой встроенный упаковщик (Window->Sprite Packer). Но есть проблема блидинга (просвет и засветка между тайлами), её можно решить только если добавить обводку в хотя бы один пиксель вокруг каждого тайла. Раньше я это делал с помощью плагина GIMP (перед тем как нашёл этот плагин - написал свой на Python), а Texture Packer Pro добавляет их сам:
0
|
||
| 17.12.2020, 12:20 [ТС] | |||||||||||
|
После большого перерыва возвращаюсь к написанию клона Battle City по сети. Многие вещи глобально переосмыслил. Одно время была мысль, что выгодно взять Unity и C#, а ещё также реализовать версию на C# и OpenGL, чтобы за одно тренироваться с C# и практиковаться с шейдерами на чистом OpenGL. Но всегда зудела мысль, что C++ быстрее. Чистый C++ не так удобен, как C#, но зато есть такой же удобный Qt C++. Qt C++ гораздо более удобный для OpenGL, чем C#, потому что на C# нужно использовать отдельную библиотеку OpenTK от группы энтузиастов, а Qt включает в себя поддержку OpenGL на официальном уровне. Qt включает в себя: парсеры Json/Xml, загрузку текстур, матрицы, сеть, базы данных и многое другое. По Qt много вакансий и поэтому на него выгодно тратить время в отличие от других библиотек для окон: GLFW, SDL2 и т.д. Это сугубо моя точка зрения. На Qt можно легко собирать в APK и под Android и iOS. Второй важный момент - это версии игр для веб на WebGL, чтобы была возможность запустить игру в один клик прямов в браузере, без скачиваний, проверок на вирус, распаковок и т.д. Если кто-то захочет начать изучать шейдерный OpenGL и WebGL, то советую начать с этой книги: WebGL. Программирование трехмерной графики | Мацуда Коичи, Ли Роджер. Здесь примеры: Небольшие примеры на WebGL Игра должна быть в трёх версиях: Desktop, Mobile и Web.
В Qt встроена поддержка вебсокетов. Сервер я буду писать на Node.js с хостингом на бесплатном Heroku. Для сервера я использую пакет для вебсокетов: https://www.npmjs.com/package/ws Этот пакет очень популярен - за неделю более 35 млн. установок. Для упаковки спрайтов в текстурный атлас я использую Texture Packer Pro. Я купил эту программу несколько лет назад. Это программа упаковывает спрайты на атлас и генерирует два файла: атлас (png) и данные о спрайтах (.json). В JSON хранятся характеристики спрайтов: координаты на атласе, ширина, высота и т.д. Парсер JSON встроен в Qt и в JavaScript. Оставлю здесь полезный пример парсинга JSON на Qt из консольного приложения: Входной файл: Person.js
main.cpp
"John" "Smith" "212 555-1234"
0
|
|||||||||||
| 17.12.2020, 15:41 [ТС] | ||||||
|
TexturePacker оказывается написан на Qt:
Я создал Sprite Sheet следующим образом. Нашёл в интернете набор тайлов игры (Tile Set). Нарезал в GIMP спрайты: Эти спрайты перенёс мышкой в TexturePacker: TexturePacker упаковал спрайты в один Sprite Sheet. Я нажал кнопку "Publish sprite sheet" и было сгенерировано два файла: сам Sprite Sheet, в виде png-файла, и файл json, по которому можно узнать текстурные координаты и размеры спрайтов:
0
|
||||||
| 17.12.2020, 16:05 [ТС] | |||||||
|
Пример кода, как из JSON-файла выше (то есть из файла описания Sprite Sheet, который хранит описания фреймов и другую информацию) извлечь размеры Sprite Sheet. Эти размеры нужны, чтобы пересчитать текстурные координаты. OpenGL будет воспринимать текстуру, как квадрат 1x1 юнитов.
0
|
|||||||
| 19.12.2020, 00:54 [ТС] | |||||||||||||||||
|
Когда из JSON загружаются танчик игрока, как в примере выше, то нужно подключить библиотеки:
Тоже самое, что и сообщением выше, но загрузка Sprite Sheet из XML. Комментарии в XML не я писал, они сами генерируются в TexturePacker. За одно у меня в коде происходит перевод пиксельных координат спрайта в текстурные координаты:
0
|
|||||||||||||||||
| 19.12.2020, 01:10 [ТС] | |
|
Перед тем, как я забросил эту игру, в мае 2017, у меня были наброски на WebGL-движке Phaser, где я реализовал механику движения танчика. Демку можно запустить в браузере по ссылке: https://8observer8.bitbucket.i... City/dist/
0
|
|
| 28.12.2020, 02:31 [ТС] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Самый простой (из известных мне) и бесплатный способ соединиться с удалённым сервером - это писать сервер с использованием Node.js/Express/WebSocket и использовать хостинг на Heroku или OpenShift. Официальная пошаговая инструкция для развёртывания на Heroku: Getting Started on Heroku with Node.js
Пример, в котором после соединения клиента с сервером - клиент и сервер выводят сообщения о соединении на экран. Используется бесплатный тариф, поэтому сервер засыпает если им не пользуются 30 минут, а чтобы разбудить, нужно подождать 10-15 секунд.
Содержимое архива desktop-клиента, собранного в релиз для Windows на Qt C++: Результат работы desktop-клиента на Qt C++: Для отладки и релиз нужно на web-клиенте и на desktop-клиенте раскомментировать и закомментировать соответствующие строки: На веб-клиенте:
Исходники web-клиента и сервера
src/client/main.js
Исходники desktop-клиента на Qt C++
main.cpp
0
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 28.12.2020, 02:31 | |
|
Игра Battle City Аналог Battle City Иерархия объектов для battle city Игра Battle City libGDX на двоих (передача данных) Создание клона игры city bloxx Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
|
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
|
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения.
https:/ / habr. com/ ru/ sandbox/ 295048/
начало и оглавление
-
Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|