Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Покритикуйте реализацию игры на Node js... (https://javascript.ru/forum/node-js-io-js/76250-pokritikujjte-realizaciyu-igry-na-node-js.html)

yinfo 17.12.2018 23:40

Покритикуйте реализацию игры на Node js...
 
Всем привет!

До этого занимался другим программированием...
В node js работаю 3 месяца - за тарелку супа - пошел с нуля писать игру...

Инструменты мне предложили на выбор. Я выбрал:
1. node js
2. Mongo Db
3. native socket ( не socket io)

Если кому это вообще интересно - могу рассказать подробнее, как я реализовал это новое (для меня) дело и каких советов жду...

SuperZen 18.12.2018 13:08

где игра-то?)

j0hnik 18.12.2018 14:29

alert(decodeURIComponent('%D0%98%D0%B3%D1%80%D0%B0%20%D0%B2%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B5!!!'))

yinfo 22.12.2018 00:27

Извиняюсь, я много написал, но телефонный звонок прервал нажатие кнопки ...

Используя Mongoose создал коллекцию users с полями login, password, sessionId и last_time. last_time - время последнего обращения. Если больше некоторого значения - то новый sessionId.

Это sessionId проверяется при коннекте через websocket в url при подключении в строке URI, примерно так 'ws://host:8080?sessionId= 333444' в событии wss.on('connection') , если sessionId неактуален,то socket.close().

Дальше пока не пишу - наверное уже и тут косяки у меня есть...

Роман Андреевич 24.12.2018 05:46

yinfo, если игра простая, то пойдет, а если игра сложная, там рпг какой-нибудь или много действий, ну ты понял. То монго замени на postgresql, они шустрее. А в остальном норм. Я сам делаю игру в такой связке + сюда еще nginx как прокси.

Ну а там дальше смотри сам. итог все равно в том, что все манипуляции и игровой цикл будут на клиенте))))) Сервер тут нужен только для i/o данные игроков, рендер каких то данных

yinfo 29.12.2018 02:50

Спасибо, коллега, за внимание) Удачи в разработке игры в новом году !)

У меня вроде проще - сервер кэширует "правила игры" - заклинания, волшебства и т.п. А при старте боя между игроками один раз отдает объект char (персонаж) и они как-то там бьются заклинаниями и в БД записывается только результат боя + новые фишки/заклинания.
По сути во время игры все висит в оперативке. Если кто отвалился по дисконнекту - другой выиграл.


Часовой пояс GMT +3, время: 05:10.