RPC для игры
От: Аноним  
Дата: 14.12.03 17:43
Оценка:
Здравствуй, сетевой All!

Честно говоря не знаю этот вопрос лучше в игры или сюда, ну да ладно — поближе к делу...
Пишем игру: крестики-нолики, в которых надо поставить 5 оных в ряд для победы... всё б хорошо, но нужно сделать сетевой мультиплэйер! Хотелось бы использовать RPC, но возникает вопрос: кто из 2х игроков клиент, а кто сервер? они ведь равноправны по сути... неужели нужно сделать обоих игроков клиентами, и ои все посылают данные о своём ходе серверу, а сервер обрабатывая всё, посылает данные клиентам... ОП! но если сервер посылает данные клиентам, т.е. используя РПС, он вызывает некую функцию клиента, то он клиент, а клиент на самом деле сервер... и ничего не понятно как что делать...
можете ли помочь с нерахберихой?
советы типа: "поспал бы ты, сынок", "иди домой" или "пить надо меньше" — принимаются (чую без них не обойдётся)...
Re: RPC для игры
От: SpecialForSupport  
Дата: 14.12.03 19:53
Оценка:
Все просто. Игра пытается сначала получить запрос на бродкастовый пакет на предмет наличия в сети сервера. Если его нет — сама становится сервером и ждет 1 коннекта. Все. После коннекта естественно отвечать на бродкаст игре не надо.
Re[2]: RPC для игры
От: Аноним  
Дата: 15.12.03 07:13
Оценка:
Здравствуйте, SpecialForSupport, Вы писали:

SFS>Все просто. Игра пытается сначала получить запрос на бродкастовый пакет на предмет наличия в сети сервера. Если его нет — сама становится сервером и ждет 1 коннекта. Все. После коннекта естественно отвечать на бродкаст игре не надо.


Но смотри, если я правильно понял, всё интересное начинается сейчас:

Игрок1 сделал ход, поставив крест в точке (х,у). Об этом нужно сообщить Игроку2. Если Игрок2 сервер, то удалённо (через RPC) вызываем функцию: MakeMove(x,y); Всё хорошо, Игрок2 получит информацию...
Но! теперь ход за Игроком2. он поставил нолик на (p,q) об этом надо сообщить Игроку1.
Варианты:
* Этот ход происходит пока ещё функция MakeMove(x,y); не вернула какое-либо значение клиенту, и как раз этим возврашаемым значением и будет ход сервера (p,q); И так далее: клиент ходит, сервер принимает ход и отвечает, клиент принимает ход сервера и опять ходит...
* Оба игрока серверы, и каждый из них вызывает удалённые процедуры у другого (MakeMove(int,int)). Такое возможно?
Re: RPC для игры
От: Аноним  
Дата: 15.12.03 15:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуй, сетевой All!


А>Честно говоря не знаю этот вопрос лучше в игры или сюда, ну да ладно — поближе к делу...

А>Пишем игру: крестики-нолики, в которых надо поставить 5 оных в ряд для победы... всё б хорошо, но нужно сделать сетевой мультиплэйер! Хотелось бы использовать RPC, но
а разве так получиться? т.е. если одна прога может быть и клиентом и сервером, то как вызывать RPC функции?


я точно такое делал сокетами неблокирующими.
Re[2]: RPC для игры
От: Аноним  
Дата: 16.12.03 11:26
Оценка:
Здравствуйте, Аноним, Вы писали:

А>а разве так получиться? т.е. если одна прога может быть и клиентом и сервером, то как вызывать RPC функции?


Получится! Вот нашел кое что:

взято с:
http://netbula.com/products/powerrpc/rpc_ref/node5.html#SECTION00440000000000000000
часть "A Talk Program"

In this example, we will write a talk program that allow two users to send messages to each other. 

... поскипано [примечание анонима]

Design of the interface

... поскипано [примечание анонима]

Our talk system will be just one program named talk2. One user starts talk2 first, and another user executes the same program to communicate with the first user, knowing he/she is there waiting. Talk2 must be both a server and a client of the same RPC interface, when sending message to the peer, it is a client, when receiving message, the role is reversed, and it becomes the server.


Щаз будем разбираться-с!!!
Re[3]: RPC для игры
От: Sinclair Россия https://github.com/evilguest/
Дата: 24.12.03 05:06
Оценка:
Здравствуйте, <Аноним>, Вы писали:
А>* Этот ход происходит пока ещё функция MakeMove(x,y); не вернула какое-либо значение клиенту, и как раз этим возврашаемым значением и будет ход сервера (p,q); И так далее: клиент ходит, сервер принимает ход и отвечает, клиент принимает ход сервера и опять ходит...
Вполне себе хорошая идея. Даже RPC не надо по хорошему — вполне хватит TCP.
... << RSDN@Home 1.1.2 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: RPC для игры
От: PK Sly http://www.vocord.ru/
Дата: 25.12.03 14:59
Оценка:
я бы RPC вообще не использовал. Ненадёжная это вещь.
Сделал бы всё по TCP
VAX/VMS rulez!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.