Блин! Как же не хотел создавать тему!
Но вынужден...
В общем дело обстоит так... Делаю я маленькую игрушку. Рабочее название Fights Of Dragons (если что - в аттаче пару скринов). Как понятно из названия - это бои драконов. Игра по локальной сети и интернету. Сделал загрузку уровня (уровень пока взят из семплов), управление, кое-какую модель дракона (не доделанную, без текстур и анимации), сделал стрельбу файерболами, дыхание огнём, ускорение с моушн блуром, прикол аля хвост за самолётом (просто так... в финальной версии планировалось убрать), конфиг, в котором можно произвести некоторые настройки и другое... После этого занятся мультиплеером. Сделал по схеме коротая в аттаче. Реализовал список серверов. Делал через DirectPlay. Тестировал с айпи 127.0.0.1 - всё отлично. Дал людям потестировать - сказали что игра пошла - 2 человека играли вместе по нету (как оказалось пожже у них присутствовала локальная сеть
) Потом тестировал сам. Тестировал в клубе. По локальной сети всё отлично работает. Никаких глюков. Но по интернету игра вообще не идёт
Просто не конектится. Что бы не было разговоров о правильности/не правильности кода, вот написал мелкий пример - по такому принцыпу делал в игре (а какой там может быть другой принцып - в DirectPlay
)
Для сервера:
GameName$ = Input$("Имя сервера: ")
Type PlayerType
Field Name$, ID
End Type
HostNetGame(GameName$)
CreatePlayer()
Print "Сервер запущен"
While Not KeyDown(1)
While RecvNetMsg()
MsgType = NetMsgType()
If MsgType = 100 Then
CreateEnemy()
End If
Wend
Wend
Function CreateEnemy.PlayerType()
Player.PlayerType = New PlayerType
Player\ID = NetMsgFrom()
Player\Name = NetPlayerName(Player\ID)
End Function
Function CreatePlayer.PlayerType()
Player.PlayerType = New PlayerType
Player\Name = GameName$ + " сервак"
Player\ID = CreateNetPlayer(Name$)
End Function
Для клиента:
GameName$ = Trim(Input$("Название игры: "))
ServerIP$ = Trim(Input$("IP адрес сервера: "))
Type PlayerType
Field Name$, ID
End Type
Global MyID, MyName$
Global Player.PlayerType
jng=JoinNetGame(GameName$,ServerIP$)
If jng= False Then RuntimeError "Connecting Failed"
Name$ = Input$("Ваше имя: ")
CreatePlayer()
MyID = Player\ID
MyName = Name$
Print "Подключение к серверу прошло успешно"
While Not KeyDown(1)
While RecvNetMsg()
MsgType = NetMsgType()
If MsgType = 100 Then
Createenemy()
End If
Wend
Wend
Function CreatePlayer.PlayerType()
Player.PlayerType = New PlayerType
Player\Name = Name$
Player\ID = CreateNetPlayer(Name$)
End Function
Function CreateEnemy.PlayerType()
Player.PlayerType = New PlayerType
Player\ID = NetMsgFrom()
Player\Name = NetPlayerName(Player\ID)
End Function
После нескольких дней извините *ботни с DirectPlay, по совету Tormoz' а, который сказал
попытался заюзать K-NetLib... Результата никакого... Опять по*бался с либой и попробовал по совету Моки (MoKa) TCPStream... Разобрался вродь в нём. Попробовал сделать соединение - опять никакого результата.. При 127.0.0.1 - конектитсо, а если пытаюсь с кем-то по интернету - никак
Короче уже неделю парюсь с этой проблемой
Мне не нужно ничего, кроме того что бы хоть как-то установить соединение между двумя разными компами по интернету. Дальше я уже сам... Конечно очень стыдно об этом просить и на форуме я хотел о своем проекте рассказать только после "выхода" хоть какой-то работоспособной демо-версии ''((
... Но люди добрые помогите мне несчастному!
Пытался даже забить на проект, что бы не просить сдесь помощи, но не могу! Я очень-очень-очень хочу довести его до конца!
Даже не знаю почему, но это так...