|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.02.2010, 19:33 | #81 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Да, пример чата, по второй части с передачей буфера типа Byte, легко приспосабливается под on-line игру, ...но нужно помнить, что сервер должен иметь "прямой" (белый, чистый, какой он там еще по сленгу...) IP-адрес, если провайдер затирает ваш Интернет-IP внешним, то через Интернет такой сервер найти будет невозможно, ...только по LAN будет работать всегда.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
23.02.2010, 19:37 | #82 |
Я еще только учусь
Форумчанин
Регистрация: 24.10.2009
Сообщений: 125
|
Ну до рабочего сервера еще как до Пекина ползком...
Сначала нужно сделать для локальной сети, ну а потом, наверное, можно найти такого провайдера, который позволяет получить нормальный IP. |
23.02.2010, 19:42 | #83 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Не скажи, ...LAN TCP/IP клиент-серверная структура, кто-то из участников игры обязательно будет сервером, как во всех играх по сети, и выполнить серверную часть нужно первым делом. Затем, по имеющемуся протоколу пытаться соединиться с сервером и отправлять ему запросы, ...т.е. вся сеть "растет с головы".
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
24.02.2010, 15:37 | #84 |
Я еще только учусь
Форумчанин
Регистрация: 24.10.2009
Сообщений: 125
|
Теперь можно уточнить, что должен делать игровой сервер?
Пока буду делать танчики многопользовательские. Будет 3 команды - 1 танк подвинулся, 2 - танк выстрелил, 3 - танк помер. Теперь организация игры: При нажатии кнопки клиент отсылает на сервер буффер из 5 переменных(№ игрока, комманда, № анимации, параметры). Сервер получает сообщение, проверяет возможно ли это действие, если возможно, то отсылает сообщение все пользователям(и тому который послал), что танк № такой-то начал действие такое-то с такими-то параметрами. Клиент получает сообщение и запускает соответствующую процедуру. Я все правильно написал? |
24.02.2010, 15:45 | #85 | ||
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
Цитата:
Цитата:
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
||
24.02.2010, 15:58 | #86 |
Я еще только учусь
Форумчанин
Регистрация: 24.10.2009
Сообщений: 125
|
Как же? о послать всем клиентам, что танк такой-то помер и прибавить очки к танку который победил?
Про анимацию, как локальный компьютер поймет, что этот игрок развернулся? Или например у именно этого игрока желтый танк? |
24.02.2010, 16:03 | #87 | |||
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
Цитата:
Цитата:
Цитата:
Код:
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
|||
25.02.2010, 16:00 | #88 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Стоп, стоп, стоп!
Во-первых, никаких битов, тип понятный - Byte, пакет числится как NetBuf: TByteArray, доступ к каждому байту через привычное обращение NetBuf[i]. Во-вторых, ВСЕ (!) математические вычисления и обновления игрового мира выполняются НА СЕРВЕРЕ (!), ...клиент шлет только запрос, что он хочет сделать (но не команду), сервер при этом не подчиняется на прямую, а проверяет запрос. Вначале на идентификацию клиента, затем на идентификацию команды, затем на соответствие координат действительности, затем на возможность маневра, ...и только после этого выполняет преобразование и рассылает уже управленческую команду всем, включая того, кто запросил свое изменение. Эта модель эффективна и для on-line. Запомните, ни один из клиентов не может и не должен получать управление сервером непосредственно, или жранить у себя системные переменные, от которых зависит его дальнейшее будущее в игре. В-третьих, где ваш собственный тип игрового объекта? ...если он есть, то в нем должны быть записи на счет типа и вида игрока, там же и принадлежность к стороне (красный, желтый, зеленый, синий и т.д.). Кроме того, должна быть запись в размере 1 байт, указывающая состояние игровых объектов, ...у вас 256 вариантов, что делает объект в каждый такт игры. Еще одна запись, также 1 байт, какой тип анимации применен, ...еще одна запись, 1 байт, какой текущий кадр, и т.д. У вас вне зависимости от сети, объект должен иметь исчерпывающий набор записей о своем состоянии, по которому в любой момент с объектом можно будет творить все, что позволяет игра. И в тот момент когда игра начнется, каждый игрок получит n-ое число пакетов, по числу игроков, в которых описаны все параметры объектов: какой тип, какой подтип, сторона, анимация, текущий кадр, где был, что делал и пр. пр. пр. Все это измеряется в пределах сотни байт, ...в начале игры - это сущие копейки даже для Интернета, ...затем в процессе игры будут бегать по сети пакеты размером до 2-х десятков байт (смотря как подойдет к оптимизации разработчик). Далее, номер команды, 1 байт - уже огромные возможности сулит, тут 256 вариантов запросов и ответов сервера на них.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
26.02.2010, 12:15 | #89 |
Я еще только учусь
Форумчанин
Регистрация: 24.10.2009
Сообщений: 125
|
Я в панике! Ничего не выходит!
Пока что решил отложить сервер на потом и занятся оптимизацией РПГ.
Но почему-то выходит не все хорошо. Как мне и посоветовали сделал банк текстур - одномерный массив (mapbit:array[0..246] of tbitmap (пока что у меня 246 текстур)). После чего заполняю его текстурами. Далее есть массивы (UInteger:array[1..30,1..40] of integer - текстуры, UMask и URoof - соответственно маски и крыши). Как все выводится на экран в цикле по промежутку где стоит герой Код:
Может это из-за тго что я в типизированный файл сохраняю integer? Но до этого же все работало=( Я совершенно в тупике... Жду помощи=) Последний раз редактировалось Ckomoroh; 26.02.2010 в 21:25. |
27.02.2010, 14:40 | #90 |
Пользователь
Регистрация: 18.12.2008
Сообщений: 47
|
Значение 100000 - предел для integer. Попробуй integer заменить на longint.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание 2d RPG игры | VTR | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 29 | 19.05.2009 16:34 |
RPG на Дельфи | Juffin | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 10 | 10.04.2009 21:37 |
Создание текстового RPG | KORN | Софт | 3 | 15.07.2008 09:21 |
3D-RPG | Кронос | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 25 | 12.05.2007 11:21 |