Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Популярная настольная игра

Длинные Нарды Турнир

Настольные, Мидкорные, Для двоих

Играть

Топ прошлой недели

  • cristall75 cristall75 6 постов
  • 1506DyDyKa 1506DyDyKa 2 поста
  • Animalrescueed Animalrescueed 35 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
3
Аноним
Аноним

Infected⁠⁠

2 года назад
Infected
Infected Nidus Warframe Game Art
0
49
Masafi
Masafi
Лига Разработчиков Видеоигр

Как школьник веб игру делает #1⁠⁠

7 лет назад

Успешно слив олимпиады, можно и проектом позаниматься


Привет!

Продолжаю рассказывать о своем школьном проекте по информатике - веб игре

Решил рассказать о том, как дошел до сегодняшнего момента.

Навыки

К началу создания игры у меня было общее представление о создании игр (делал простенький платформер), знание C++, SFML, поэтому хотелось найти похожие инструменты.

Изначально думал делать на unity, но погуглив о том, как другие люди делают так называемые .io игры, пришел к выводу, что на unity никто не делает .io-шки и следует писать на javascript


Структура

Тот же гугл рассказал мне, что для клиента обычно берут pixijs для графики и socket.io для общения с сервером.

Тогда я еще ничего не понимал и не знал, так что взял Node.js для сервера, так как "клиент на js - пусть и сервер на js", хотя можно было взять любой другой (что-нибудь на python, например, хотя я его тоже не знаю). Сейчас я понимаю, что есть web server, а есть игровой сервер, и последнее может быть написано на чем угодно, хоть на C++ с вводом-выводом в файлик, но тогда, по тому же принципу, я решил, что незачем городить огороды и писал все на Node


Если вы решитесь сделать что-то подобное, то выделяйте игровой сервер в отдельный модуль, и запускайте его параллельным процессом, так как в Node это единственный способ распараллеливания.

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

Получается, что пользователь нажимает клавиши, клиент отправляет запросы "%token% нажал клавишу %key%", это записывается нужному игроку на сервере, при очередном тике сервера он обрабатывает правильно это нажатие (в том числе проверку на то, что мог ли человек нажать вообще сюда - например, нажатие за пределы экрана мышкой), обрабатывает весь мир, и отправляет нужную информацию каждому игроку (например, сторона вируса не должна знать о местонахождении игроков до тех пор, пока они не появятся в зоне экрана игрока).


Библиотеки

Спустя мгновение, я уже накачал себе библиотек js и на клиент, и на сервер:

На клиенте, кроме вышеупомянутых pixijs и socket.io, добавились utility библиотеки: js.cookie для кук, jquery и bootstrap для дизайна.

На сервере появились: express для запуска http сервера двумя строчками кода, jsonwebtoken для защиты (по сути, я использую токены для идентификации пользователя, для любого игрового действия клиент должен передать токен, и именно по нему я нахожу игровой объект на сервере, а не по socket.id), taffydb для онлайн базы пользователей, csv для парсинга таблицы с игровыми константами и sanitize-html для обработки корректности никнейма.


Графика

Т.к. рисовать я никогда не умел, практически вся графика взята из открытых источников:

opengameart

game-icons

itch.io

GUI на сайте сделал мой одноклассник, большое ему за это спасибо.


Процесс

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

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

В итоге сделал эдакий клон террарии, в котором люди (мои одноклассники)... рисовали разные (чаще - неприличные) надписи

Ну, они хотя бы играли в нее, что уже неплохо.

Вот мы уже и почти пришли к тому, что есть сейчас. С момента первого нормального билда с игрой платформером добавилось не особо много "фич" (что не сказать о коде): комнаты, немного улучшений графики, шипы (пришлось почти переписать всю физику для того, чтобы сделать отбрасывание от них корректным), новый GUI


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

(ниже changelog, который я скинул своим одноклассникам)

Update 0.1.0

1) Сторона вируса:

вы - система блоков

можно перемещаться только так, чтобы в центре был блок вируса (wasd)

главный блок - ядро, начинаете только с него, при уничтожении - game over

можете ставить и ломать блоки только вокруг себя

2) Новый (вроде не лагающий) фон

3) Фикс зума - теперь игра должна быть одинакового размера везде (но это не точно)

4) Небольшая неуязвимость при получении урона за людей

5) В комнате 1 карта сохраняется между сессиями - все, что вы там наделали останется после перезапуска комнаты (в остальных как раньше - ресет)

6) Обновления GUI


Немного скриншотов:

Сторона вируса: (красным обведено ядро)

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

Но потыкать-поиграть вы все равно можете, но сервер может (и будет) падать и лагать, все ошибки я отслеживаю и стараюсь исправлять, так же вы можете писать о них мне в комментариях.


Ссылка на игру: infection.tk

Показать полностью 4
[моё] Компьютерные игры Gamedev Игры Разработка Веб-разработка Разработка игр Infected Длиннопост
19
39
Masafi
Masafi
Лига Разработчиков Видеоигр

Как школьник веб игру делает⁠⁠

8 лет назад

Привет, пикабу!

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

Решил запилить здесь мини-дневник разработчика

Идея очень странная: RTS платформер

Две стороны: люди и вирус - пытаются захватить планету, путем уничтожения друг друга с помощью различный строений.

Очень спорная идея - стороны кардинально различны. Играя за людей, вы играете за человека, который может бегать, прыгать, как в обычном платформере. Играя за вирус, вы играете за "строение" - совокупность блоков. Т.е. вы такая массивная фигня где то под землей, которая может "пускать корни" в разные стороны.

Пока лишь реализован эдакий "клон террарии" - можно лишь бегать человеком (за сторону людей) и ломать/ставить блоки

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


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

Показать полностью 1
[моё] Компьютерные игры Разработка Веб-разработка Gamedev Infected Гифка
19
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии