Я создаю 2D-игру в Qt, и я хочу разрешить другим пользователям подключаться к размещенным играм. Я бы просто сделал «сервер» в игре и разрешил другим подключиться к нему?Qt create game host
ответ
Если это всего лишь небольшой проект, и вы не собираетесь массово распространять его по сети (это не похоже на вас), вы можете создать простой сервер сокетов. Вам нужно будет изменить свой существующий игровой код, чтобы отправить «ходы» в виде сообщения на сервер. Это, вероятно, будет проще всего, если вы составите простой сетевой протокол для передачи данных перемещения (если вы амбициозны, вы можете попробовать сериализацию).
псевдо-код примера для простой игры Tic-Tac-Toe:
move1 = "Move X:1:1" //placed an 'X' in square at row 1, column 1
move2 = "Move O:1:2" //placed an 'O' in square at row 1, column 2
reset = "Reset" //clear the board for a new game
...etc...
Ваш код игры нужно будет генерировать эти сообщения. Каждый игрок будет запускать вашу игру на своей машине, и это будет действовать как клиент.
Между тем, вернувшись в код сервера, вам необходимо будет прослушать сообщения перемещения, отправленные клиентами. Когда вы получаете сообщение о переносе, вам нужно передать сообщение всем другим клиентам, чтобы можно было обновить доски. Я бы рекомендовал переместить код сервера за пределы игрового кода; это позволит вам настроить выделенный сервер, который будет обрабатывать все сокеты, а затем все, кто хочет играть, просто подключат свой клиент к серверу.
Основная идея заключается в том, что вашему клиенту необходимо передать информацию о том, что делает игрок на сервере, а также прослушивать данные с сервера, чтобы обновить информацию о другом игроке.
Вы можете найти хорошее обсуждение алгоритмов высокого уровня простой игры клиент-сервер в этом вопросе, а также: Algorithm for Client-Server Games
Надеюсь, этого достаточно, чтобы вы начали! Я использовал этот подход для некоторых простых игр (Tetris, Pong и т. Д.) С использованием C++/Qt, и они неплохо справились.
PS. Не позволяйте идее писать свой собственный сервер отпугивать вас. Это звучит пугающе, но на самом деле это не очень сложно (~ 100 строк кода или меньше) и большой опыт обучения.
Если бы я был вами, я бы сделал сервер отделенным от, но в комплекте с «клиентом». Поверьте мне или нет, многие игры там используют подобный подход.
Как правило, нужно немного вещей, чтобы получить что-то подобное.
А именно, сервер каталогов. Возможно, все подключаются к другим игрокам, которые играют в игры, но вам нужно запустить каталог для игр, которые будут перечислены для того, чтобы люди могли подключиться.
Либо это, либо вам нужно запустить сервер и разместить там их. Выбор за вами, первый вариант, вероятно, самый легкий из вас.
+1 Настоятельно рекомендуется публично доступный сервер каталогов. – shinkou
Mine просто будет, и несколько друзей играют в основном lan и некоторые через Интернет, просто вводя IP. – BlakeWilliams
- 1. create game loop thread
- 2. Host/Create two IRCd Servers
- 3. Qt create executable
- 4. Create Board Game-like Grid в Python
- 5. SQLite Запрос CREATE в QT
- 6. create qt thread event loop
- 7. Qt create Link между папками
- 8. Qt Game Editor - Создайте игру для исполнения?
- 9. my php code can not create directory in host
- 10. PHP/Vagrant - Host Accessing Host Host
- 11. Android Host Host Communication
- 12. QSharedPointer :: Create()
- 13. Qt 5.4 Ошибка Windows Host Android при создании/развертывании проекта
- 14. Game of Life от Conway - C++ и Qt
- 15. Java Game Game Program
- 16. PowerShell script Hangman game
- 17. Chaining java methods game
- 18. Powershell Read-host после Write-host
- 19. Android Host Host API отнимает файл ttyACM
- 20. Java Eclipse game - restart game
- 21. Java Game Game Controller Library
- 22. Qt create pdf example - не может заставить его работать
- 23. Form_tag 'create' vs '/ create'
- 24. Parse.Cloud.HttpRequest host
- 25. openGL game game way for osx
- 26. $ db = new PDO ("mysql: host = $ host; db_name = $ db_name", $ user, $ pass);
- 27. Python Game Server
- 28. SOCKETS (Networking) - TicTacToe Game
- 29. Host couchdb on heroku
- 30. Game GUI framework
Большое вам спасибо. Эта информация очень помогает. Я написал код сокета до, но не слишком много кода сервера, это будет отличный опыт. – BlakeWilliams