Giter VIP home page Giter VIP logo

tanks-battle-server's People

Contributors

werryxgames avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

tanks-battle-server's Issues

[Feature] Camera rotation by only one axis

Describe Tanks Battle without this idea as a problem
Camera looks ugly, when tank rotates by 180 degrees, unlike other games.

What is the best problem solution?
Make camera rotate only by 1-2 axis

Добавить ещё один уровень логгеру

Этот уровень будет между debug и info

Он нужен, чтобы разделить пакеты матчей и все остальные пакеты уровня debug

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

Исправить остановку сервера из-за ошибки

При входе игрока на сервер, иногда возникает эта ошибка и сервер останавливается

Traceback (most recent call last):
  File "/storage/emulated/0/Tanks Battle Server/player.py", line 117, in receive
    self.handle_messages()
  File "/storage/emulated/0/Tanks Battle Server/player.py", line 80, in handle_messages
    if msg[1][0] != self.bp.nick:
AttributeError: 'NoneType' object has no attribute 'nick'

[Предложение] Защита от брутфорса

Опишите отсутствие вашей идеи как проблему
В данный момент можно выполнять брутфорс пароля мультипоточно

Лучшее решение проблемы
Не принимать пакеты с логином (и возможно регистрацией) если указанный в нём логин уже регестрирует/входит в аккаунт

Альтернативные решения
Отправлять пакет ["login/register_queued"] вместо непринятия пакета

[Предложение] Хеширование пароля

Опишите отсутствие вашей идеи как проблему
Пароль сохраняется в чистом виде.

Лучшее решение проблемы
Добавить 2 типа хеширования с солью: медленный (crypt) и быстрый (md5, sha и т. д.).

Альтернативные решения
Добавить 1 тип хеширования, желательно с солью.

Дополнительная информация
Соль можно брать из логина, ID пользователя, или просто хранить там же, где и пароль

[Предложение] Выводить на экран локальный IP сервера

Опишите отсутствие вашей идеи как проблему
Для подключения к серверу требуется знать его IP адрес. Как и локальный так и глобальный

Лучшее решение проблемы
Обнаруживать IP первым способ из Stack Overflow по запросу "Python detect local IP"

Альтернативные решения
Рандомно символы натыкать пока не получится

Дополнительная информация
Отсутствует

Ошибка при запуске сервера и смене вкладок

При запуске сервера и смене вкладок (на консоль, конфигурацию или лог), сервер всё ещё запущен, но уже вместо Остановить написано Запустить. Нажатие кнопки ничего не делает

Версия: 1.2.0
ОС: Windows
Python: 3.10.4

[Предложение] Добавить больше тестов

Опишите отсутствие вашей идеи как проблему
Недостаточное количество тестов может привести к различным ошибкам.

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

Альтернативные решения
Добавить тесты на все модули. Если функция модуля изменяет файл, то пропустить её.

Дополнительная информация
Тесты в папке tests

[Предложение] Шифрование и уменьшение размера данных

Опишите отсутствие вашей идеи как проблему
Передача данных занимает больше времени, чем могла бы + данные можно перехватить.

Лучшее решение проблемы
Использовать прописанный в программе ключ (не из окружения из-за клиента), а также при первом сообщении клиента (также исправить проверку в NetworkedClient) передавать ему случайно сгенерированный ключ и хранить его для последующей расшифровки сообщений. Для шифрования/дешифрования использовать любой надёжный алгоритм. А также вместо JSON данных передавать байты (см. следующий раздел)

Байты
0000-ffff - Тип сообщения (первый аргумент в текущем JSON списке), а дальше минимальное количество байт, например статус логина/регистрации аккаунта вряд ли будут >256 состояний, поэтому можно использовать один байт

То есть ["register_fail", 2] (20) превратится например в зашифрованное \x00\x03\x02 (3)

[Issue] No colors

Describe a problem
Game without colors look ugly.

Steps to reproduce

  1. Go to match.

Expected behavior
Colorful world.

Extra information
Colors gone after update to Godot 4.

[Feature] Make WZ-Kj. 90 rotate on tower rotation

Describe Tanks Battle without this idea as a problem
Player can't rotate tower, while playing with WZ-Kj. 90, but other players (playing different tanks) can.

What is the best problem solution?
Make WZ-Kj. 90 rotate on tower rotation.

[Feature] Decrease size of packets

Describe Tanks Battle without this idea as a problem
JSON data is very huge, unlike binary. Server can process less requests and send responses slower.

What is the best problem solution?
Change all JSON to binary data.

What about alternative solutions?
None.

[Feature] Teams

Describe Tanks Battle without this idea as a problem
Battle Royal is not so funny, when you can't play in team with your friends.

What is the best problem solution?
Add separation by teams, probably friendly fire, and also team changer.

What about alternative solutions?
No friendly fire, no team changer.

Улучшить README.md

Необходимо добавить данные, о том, как установить и обновить сервер

[Issue] Nmap scan crashes server

Describe a problem
Nmap scan on UDP port 7490 crashes server

Steps to reproduce

  1. Open terminal
  2. Run server
  3. Open another terminal
  4. Write sudo nmap -sU -p 7490 127.0.0.1 (7490 is port of server, 127.0.0.1 is address)
  5. Focus terminal window with server
  6. See traceback

Expected behavior
Server process continues

Screenshots / Videos
Здымак экрана ад 2023-08-12 09-24-00
выява

Environment:

  • Device [for example laptop]: laptop
  • OS [for example Windows 11]: Ubuntu 23.04
  • Version of client [for example 2.0]: unrelated
  • Version of server (tag or commit) [for example 2.0]: 2.1dev2

[Feature] Change health system

Describe Tanks Battle without this idea as a problem
Current health system (durability) is unrealistic.

What is the best problem solution?
Place people (at least their hitboxes) inside the tank.
To destroy tank, player can explode it by hitting to some critical for tank place, or kill all people inside.

What about alternative solutions?
At least, do, that not all places of tank will decrease durability.

[Issue] Unrealistic movement

Describe a problem
Tanks move unrealistic: they can go even if they turned upside down, on absolutely straight plane they make small jumps

Steps to reproduce

  1. Go to any match
  2. Here is the error

Expected behavior
At least 2 described earlier problems should be fixed

[Предложение] Изменить тип хранения данных

Опишите отсутствие вашей идеи как проблему
Данные хранятся не там, где желательно. При создании автообновления (#20) будет желательно не трогать файл с данными (аккаунты игроков и т. д.), а заменить только корпуса, башни, комплекты, карты.

Лучшее решение проблемы
config.json - Оставить содержиое как есть, data.json - вынести только корпуса, пушки, комплекты и карты, *.db (SQLite) - поместить аккаунты пользователей

Альтернативные решения
Можно SQLite заменить на что-нибудь, а также *.json файлы тоже перенести в *.db

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.