![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#81 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Да, пример чата, по второй части с передачей буфера типа Byte, легко приспосабливается под on-line игру, ...но нужно помнить, что сервер должен иметь "прямой" (белый, чистый, какой он там еще по сленгу...) IP-адрес, если провайдер затирает ваш Интернет-IP внешним, то через Интернет такой сервер найти будет невозможно, ...только по LAN будет работать всегда.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#82 |
Я еще только учусь
Форумчанин
Регистрация: 24.10.2009
Сообщений: 125
|
![]()
Ну до рабочего сервера еще как до Пекина ползком...
Сначала нужно сделать для локальной сети, ну а потом, наверное, можно найти такого провайдера, который позволяет получить нормальный IP. |
![]() |
![]() |
![]() |
#83 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Не скажи, ...LAN TCP/IP клиент-серверная структура, кто-то из участников игры обязательно будет сервером, как во всех играх по сети, и выполнить серверную часть нужно первым делом. Затем, по имеющемуся протоколу пытаться соединиться с сервером и отправлять ему запросы, ...т.е. вся сеть "растет с головы".
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#84 |
Я еще только учусь
Форумчанин
Регистрация: 24.10.2009
Сообщений: 125
|
![]()
Теперь можно уточнить, что должен делать игровой сервер?
Пока буду делать танчики многопользовательские. Будет 3 команды - 1 танк подвинулся, 2 - танк выстрелил, 3 - танк помер. Теперь организация игры: При нажатии кнопки клиент отсылает на сервер буффер из 5 переменных(№ игрока, комманда, № анимации, параметры). Сервер получает сообщение, проверяет возможно ли это действие, если возможно, то отсылает сообщение все пользователям(и тому который послал), что танк № такой-то начал действие такое-то с такими-то параметрами. Клиент получает сообщение и запускает соответствующую процедуру. Я все правильно написал? |
![]() |
![]() |
![]() |
#85 | ||
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
![]() Цитата:
Цитата:
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
||
![]() |
![]() |
![]() |
#86 |
Я еще только учусь
Форумчанин
Регистрация: 24.10.2009
Сообщений: 125
|
![]()
Как же? о послать всем клиентам, что танк такой-то помер и прибавить очки к танку который победил?
Про анимацию, как локальный компьютер поймет, что этот игрок развернулся? Или например у именно этого игрока желтый танк? |
![]() |
![]() |
![]() |
#87 | |||
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
![]() Цитата:
Цитата:
Цитата:
Код:
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
|||
![]() |
![]() |
![]() |
#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) Мир духу его
|
![]() |
![]() |
![]() |
#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. |
![]() |
![]() |
![]() |
#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 |