| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Программирование игр, графики и искусственного интеллекта > Серверная часть |
| Автор: DenWPF 30.11.2009, 14:27 |
| Вообщем пишу серверную игрушку, для начала буду её тестить на localhost через denver. так вот как делать запросы и то что будет хи обрабатывать. к примеру я хотел для начала сделать так: 1 - игрок - 1 файл в файле хранятся данные. каждый игрок считывает эти файлы и знает к примеру место положение другого игрока. и понятно игрок сам переписывает свой файл, что бы при изменении его кординат другие игроки погли это видеть. |
| Автор: Exai1e 30.11.2009, 14:58 |
| DenWPF, потом все это будет не очень удобно переносить, если захочешь сделать "игра по сети / интернет" используй Socket, WCF, их тоже можно тестировать по сети. как делать запросы, зависит от твоей реализации и вообще от подхода =) на сокетах хоть строчку отправляй "Номер игрока, x, y" и на клиенте парси ее, хоть структуру, хоть сериализованный класс) на твое усмотрение |
| Автор: DenWPF 30.11.2009, 15:24 |
| блин, я пока не хочу сильно парится с изучением все тонеостей, работа курсовая у меня, надо сдать... надо передовать до 5 переменных, пользователей не больше 10. сокеты хорошо....но я не капельки не знаю что это, есть реализация какая то?=) |
| Автор: Exai1e 30.11.2009, 15:43 |
| DenWPF, http://msdn.microsoft.com/ru-ru/library/system.net.sockets.socket.aspx + поиск по форуму в разделе .net - Распределённые приложения и сеть,по слову Socket Добавлено через 2 минуты и 59 секунд также можно на http://www.techdays.ru/ пасматреть информацию по WCF, если надо передавать простые данные - то сделай класс с нужными данными, и используя сериализацию + сокеты / wcf передавай его) |
| Автор: DenWPF 30.11.2009, 15:59 |
| во-во класс мне как раз и подойдет, а что исходника нету?=0 реально, надо что бы по запросу приходила информация о корднатах и ещё одна переменая ИНТ. вообщем 3 числа. |
| Автор: Exai1e 30.11.2009, 16:13 | ||
Исходника чего ? класса, так твой класс должен быть. Например тебе надо передавать номер клиента, координаты, хп, имя игрока, и т.д., к примеру, делаешь класс:
Пихаешь его в ClassLibrary, (которую потом подключишь к серверному приложению (сервер пусть хоть консольный будет)) и к клиенту Потом заполняешь нужной информацией, и т.д., сериализуеш (например с использованием BinaryFormatter) и передаешь его на сервер к примеру используя сокеты. На сервере, принял класс и раздал его всем пользователям (или определенным пользователям, но тогда у тебя должен быть список пользователей на сервере (например экземпляры подключенных сокетов, както индифицированных)). На клиенте, когда клиенты приняли данные через сокет, десериализуют его обратно из потока в класс и читают необходимые данные. Это простое решение, если брать сокеты. |
| Автор: DenWPF 30.11.2009, 16:21 |
| эм, та нет, как раз нужен пример всего того что ты описал ниже=))) не надо много. надо только - человек отправляет на сервер один класс. и он там сохраняется. и так же запросить данные тоже из определеного класса. а лучше из List<t> Добавлено через 17 секунд или я тяжелую тему прошу? |
| Автор: Exai1e 30.11.2009, 16:24 |
| DenWPF, для начала разберись с сокетами (как это все работает) и сделай обычный HelloWorld, сервер + клиент(ы), чтоб передавали строчки там клиент серверу шлет "привет я клиент", сервер отвечает "привет я сервер", а к нему уже подключить работу с передачей классов не составит труда =) |
| Автор: DenWPF 30.11.2009, 16:35 |
| сложно конечно... ну хотя бы основу. я использую домен в denvere к примеру test.ru какой его порт ? и что все таки является сервером ? это ехе файл? |
| Автор: Exai1e 30.11.2009, 16:52 |
это приложение которые ты напишеш с использованием класса System.Net.Socket и к примеру TcpListener. Прочитай для начала вообще что такое сокеты, и найди любой рабочий пример HelloWorld и такие вопросы сразу отпадут Добавлено через 1 минуту и 57 секунд к примеру http://rsdn.ru/article/dotnet/dotnetchat.xml |
| Автор: DenWPF 30.11.2009, 17:28 |
| http://download.microsoft.com/download/6/4/7/6474467e-b2b7-40ea-a478-1d3296e78adf/CSharp.msi вот там есть Advanced .NET Framework (Networking) - Use Sockets ток чот оно не работает=(( |
| Автор: Exai1e 30.11.2009, 18:04 | ||||||||
| DenWPF, вот, набросал простейший пример, а дальше статьи, документацию в руки и вперед) Сервер:
клиент
|
| Автор: DenWPF 30.11.2009, 19:26 |
| оо спасибо=) Сервер - его скомпилить и бросить в денвер Клиент- ну это более понятно Добавлено @ 19:33 а уже понял, просто запустить. попробую из твоего и сдлеать=) эх=( не получится из твоего примера переделать=((( |
| Автор: Exai1e 30.11.2009, 21:25 |
| DenWPF, ну переделать под что ? под передачу данных ? (класса) отправляй в поток не стринг(и) зы. про сериализацию не забывай это раз) а второе сериализуемый класс должен быть в исходном виде доступен обеим сторонам (тултип использовать для этого можно клас либ) или сериализовать в xml и парсить на клиенте / сервере |
| Автор: DenWPF 30.11.2009, 21:53 |
| эм, проблема из первых это второй клиент запустить нельзя. |
| Автор: Exai1e 30.11.2009, 22:09 |
| это проблема в данном примере, потому что данная реализация не расчитанна на более двух клиентов =) думайте, думайте (создавайте по потоку на клиента, и обрабатывай каждое подключение отдельно, храни клиентов(подключения) в списке п котом бегай в зависимости от сообщения ( от клиента который доставил сообщение). информации в интернете более чем достаточно по написанию много пользовательских "чатов" на основе сокетов. Я лишь дал пищу для размышлений =) ведь так интереснее ? на то оно и программирование) а не копи паст наука) (хотя бы информацию надо уметь искать, а она есть) сам буквально пол года назад задавался тем же вопросом, сокеты, С# бла бла)) или пасмари в сторону WCF очень удобная технология работы с данными. |
| Автор: DenWPF 30.11.2009, 23:30 |
| та просто в том то и дело, времени сейчас мало, а вот игру надо написать... без онлайна писать тоже лень..а тут если будет сервер, то самого юнита в игре можно напичкать всякой хренью, не люблю мучатся с АИ |
| Автор: Exai1e 1.12.2009, 10:08 | ||||||||
| DenWPF, Зарядку для мозга с утра по раньше устроил себе вот, набросал кое че, доработаешь напильником думаю сам =) основную задачу выполняет, сервер принимает сообщения от нескольких клиентов Сервер:
Клиент, сообщения не принимает, допишешь сам на примере что давал вчера, у меня сейчас особо нет времени: мне лень)
|
| Автор: Exai1e 1.12.2009, 22:06 |
| http://www.gotdotnet.ru/files/314/ |