forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Сеть (http://forum.boolean.name/showthread.php?t=4532)

Fant 23.09.2007 14:29

Сеть
 
Делаю игру - бомберман.

Какой вариант сети лучше всего подойдет к бомберману?

Дело в том, что я ни разу не делал ничего сетевого, посему просьба к людям имеется!

Хотел бы я посмотреть на примерчик по сети:
2 камеры, 2 кубика

с Одного компа можно двигать 1 куб, а с другого другой!

Думаю, что это самый простой вариант. Через tcp ip конечно.

Если кто-то знает как это реализовать, приведите пожалуйста семпл! Я смотрел пример HolyDel'а о сети, но, как мне показалось - сложно. Много элементов...а начинать-то нужно с малого(. В том коде я увы терялся

Данил 23.09.2007 15:15

Re: Сеть
 
Я делал код. Но у мнея почему-то при пересылке данных тормозило сильно... вот и бросил делать дальше.. хз в чем проблема.. могу, кстати, дай исходник, если надо

Fant 23.09.2007 15:36

Re: Сеть
 
Цитата:

Сообщение от Данил
Я делал код. Но у мнея почему-то при пересылке данных тормозило сильно... вот и бросил делать дальше.. хз в чем проблема.. могу, кстати, дай исходник, если надо

Да нет, если сильно тормозит - ненадо! Я вот почтиаю симпл тот, может потом что-нить придумаю)

Данил 23.09.2007 15:50

Re: Сеть
 
Я просто делал это по туториалу тадиуса.. (

Тадеус 23.09.2007 19:06

Re: Сеть
 
Не знаю, мы в этот семпл 5-ом играли :) Я,АВТОМАТ и еще пару людей не с этого форума :) Причем, не тормозило. В чем проблема - не знаю.

Данил 23.09.2007 19:24

Re: Сеть
 
хехе, как я выячснил , тормозит сильно команда SendNetMsg .. хз в чем трабла (.. так, меня куда-то опять не туда понесло

ЛысыЙ_Чук-Иванчук 23.09.2007 19:29

Re: Сеть
 
Инет какой?

Fant 24.09.2007 13:45

Re: Сеть
 
Цитата:

Сообщение от Данил
хехе, как я выячснил , тормозит сильно команда SendNetMsg .. хз в чем трабла (.. так, меня куда-то опять не туда понесло


А можно ли как-то исправить траблу ? я тогда с рабостью заюзаю пример

Данил 24.09.2007 21:46

Re: Сеть
 
незнаю... гамал в Flyer , там вроде норм.. а почему-то у мну трабла... код
вот:

аццкий мегапроэкт.rar

Fant 25.09.2007 11:08

Re: Сеть
 
Цитата:

Сообщение от Данил
незнаю... гамал в Flyer , там вроде норм.. а почему-то у мну трабла... код
вот:

аццкий мегапроэкт.rar

Спасибо конечно, но мне не нужен супер-мега проект! Мне нужен ПРОСТЕЙШИЙ вариант сети

Данил 25.09.2007 15:30

Re: Сеть
 
Круто, канешь... но эт просто название.. там кубика управляешь... гг

И вот.. как в рпг.. управляешь кубиками. и ничего больше нет...

Fant 25.09.2007 16:06

Re: Сеть
 
Цитата:

Сообщение от Данил
Круто, канешь... но эт просто название.. там кубика управляешь... гг

И вот.. как в рпг.. управляешь кубиками. и ничего больше нет...

что-то я не уловил твою мысль! Что ты имел ввиду?

H@NON 25.09.2007 16:13

Re: Сеть
 
Скорей всего он имел ввиду то что это упрощенный вариант сети. Как ты и хотел...

Fant 25.09.2007 16:15

Re: Сеть
 
Цитата:

Сообщение от H@NON
Скорей всего он имел ввиду то что это упрощенный вариант сети. Как ты и хотел...

да нет. Мне говорили про этот проект и сказали, что там куча кода, хотя все пашет! А я в этой куче скорее всего утону...

Данил 25.09.2007 16:16

Re: Сеть
 
Да-да... научился пользоватся сетью по тутору тадеуса - сделал это... и ничего там особенного нет... чисто управление кубиками.. )))))

Йа хотел сделать проект - дубовую РПГ, но у меня не получилось из за тормозов.

Fant 25.09.2007 16:21

Re: Сеть
 
Цитата:

Сообщение от Данил
Да-да... научился пользоватся сетью по тутору тадеуса - сделал это... и ничего там особенного нет... чисто управление кубиками.. )))))

Йа хотел сделать проект - дубовую РПГ, но у меня не получилось из за тормозов.

Хорошо! Тогад и я, как будет время обязательно по его статье попробую сделатЬ!

Fant 29.09.2007 11:01

Re: Сеть
 
Пытался взять flyer (аццкий мегапроект), который мне тут любезно предоставили на скачивание, но не судьба - в коде много ошибок, так что не запускается.

Может конечно я где-то и был невнимателен, но...скопировал пример Тадеуса, "вставил" в блиц и так и не получилось у меня запустить даже хост. Ошибка там был, мол host уже запущен. Не знаю что мне с этой сетью делать(

allkhor 30.09.2007 16:46

Re: Сеть
 
Я тоже пробывал по статье, но уменя глючит DirectPlay ((, если бы кто библиотекой сетевой поделился или адаптировал какую-нибуть без директплЭя, многие были бы благодарны!!
PS На форуме всё-таки нашлась либа K-NetLib, с примерами!! ураа )
http://www.boolean.name/attachment.p...8&d=1185467149
Спасиб форумчанам )

Tadeus 30.09.2007 16:52

Re: Сеть
 
Странно, у меня все работает

Fant 30.09.2007 16:56

Re: Сеть
 
Цитата:

Сообщение от Tadeus
Странно, у меня все работает

тогда 100% я где-то что-то упустил по невнимательности! Приведи пожалуйста в FAQ полный код сети от начала и до конца (ну или прикрепи просто код)

Tadeus 30.09.2007 17:09

Re: Сеть
 
Код:

Type Player
 Field name$,id,ent
End Type

Global cam
Global myent
Global myid
Global myname$

Graphics3D 800,600,32,2
SetBuffer BackBuffer()

jng=JoinNetGame("World Arena","127.0.0.1")
If Not jng Then HostNetGame("World Arena")

p.Player=New Player
p\name=Input("Enter your name:")
p\id=CreateNetPlayer(p\name)
p\ent=CreateCube()
myname=p\name
myid=p\id
myent=p\ent

cam=CreateCamera()
PositionEntity cam,0,2,-5

While Not KeyHit(1)
 UpdatePlayer()
 UpdateNetwork()
 RenderWorld
 Flip
Wend

Function UpdatePlayer()
 If KeyDown(17) MoveEntity myent,0,0,.1
 If KeyDown(31) MoveEntity myent,0,0,-.1
 If KeyDown(30) TurnEntity myent,0,1,0
 If KeyDown(32) TurnEntity myent,0,-1,0
 SendNetMsg 2,PackMsg$(myent),myid,0
End Function

Function UpdateNetwork()
 While RecvNetMsg()
  Select NetMsgType()
  Case 100
    p.Player=New Player
    p\id=NetMsgFrom()
    p\name=NetPlayerName(p\id)
    p\ent=CreateCube()
  Case 101
    p.Player=FindPlayer(NetMsgFrom())
    FreeEntity p\ent
    Delete p
  Case 2
    p.Player=FindPlayer(NetMsgFrom())
    UnpackMsg(p\ent,NetMsgData$())
  End Select
 Wend
End Function

Function FindPlayer.Player( id )
 For p.Player=Each Player
  If p\id=id Then Return p
 Next
End Function

Function PackMsg$(ent)
 Return EntityX(ent)+"|"+EntityZ(ent)+"|"+EntityYaw(ent)
End Function

Function UnpackMsg(ent,dat$)
 xp=Instr(dat$,"|")
 x=Float(Left(dat$,xp))
 dat$=Right(dat$,Len(dat$)-xp)
 zp=Instr(dat$,"|")
 z=Float(Left(dat$,zp))
 dat$=Right(dat$,Len(dat$)-zp)
 yaw=Float(Left(dat$,Len(dat$)))
 PositionEntity ent,x,0,z
 RotateEntity ent,0,yaw,0
End Function

;)

JoKeR_13 01.10.2007 18:46

Re: Сеть
 
У меня тож в локалке тормозит (юзаю direct play).
при чем как-то странно:
создаю сервак без графички и подключаю 2-х клиентов
так вот первый бегает нормальноа (на екране второго), а вот второй клиен отображается малото того, что с тормозами, так еще и происходит некая ситуация при которой на экране клиента2 все нормально перемещается, а на экране клиента1 как игрок2 стоял на месте так и стоит. мож у кого такое было?
Ну раз уже пишу еще вопрос: как по сетми файл передать, если можно на direct play

Tadeus 01.10.2007 21:22

Re: Сеть
 
Через DirectPlay можно, но геморно ;)
Лучше через TCP через банк побайтово

Fant 01.10.2007 21:47

Re: Сеть
 
Так, а почему все безобразными рывками (я разумею если движется удаленный игрок, то на локальном компе он движется рывками)? И участок:

jng=JoinNetGame("World Arena","127.0.0.1")
If Not jng Then HostNetGame("World Arena")

По-моему нужно заменить на:
jng=StartNetGame () - теперь можно присоединяться к игре

MiXaeL 01.10.2007 22:14

Re: Сеть
 
Если писать через StartNetGame(), то заходить в игру придется через стандартный диалог блитца (кстати в полноэкранном режиме он показывается за основным экраном игры (!), а потому выбрать ничего не получится). Поэтому вариант от Tadeus лучше.

Fant 01.10.2007 22:19

Re: Сеть
 
Цитата:

Сообщение от Michael
Если писать через StartNetGame(), то заходить в игру придется через стандартный диалог блитца (кстати в полноэкранном режиме он показывается за основным экраном игры (!), а потому выбрать ничего не получится). Поэтому вариант от Tadeus лучше.

Да, но по его варианту вообще не получается подключиться(

Tadeus 01.10.2007 22:49

Re: Сеть
 
Мой вариант для тестирования ;) Внимательно читайте статью

Цитата:

Так, а почему все безобразными рывками (я разумею если движется удаленный игрок, то на локальном компе он движется рывками)? И участок:

Fant 01.10.2007 23:04

Re: Сеть
 
Цитата:

Сообщение от Tadeus
Мой вариант для тестирования ;) Внимательно читайте статью

Так, а почему все безобразными рывками (я разумею если движется удаленный игрок, то на локальном компе он движется рывками)?

Tadeus 01.10.2007 23:05

Re: Сеть
 
А это всегда так, если не применять средства, вроде кубических сплайнов. По последнему, вот что я советую посмотреть http://www.gamedev.ru/articles/?id=80102 а также стандартный блицевский семпл C:\Program Files\Blitz3D\Samples\Blitz 3D Samples\AGore\BirdDemo\KBSplines (если установленно в стандартную директорию), также вот тебе пример в помощь:

Код:

;-3d Cubic Spline Interpolation-;

;[Updated] - Recursive Math Added For fastest Spline Speed Ever

;[Updated] - 3rd dimension added and having a little fun with the Y axis of the beginning Y value.

;-by Chroma (edited by TogaMario)
;-based on a tutorial at www.gamedev.net

;The object starts at position S and is predicted ahead one second to be at 1.
;The object is then predicted to E and then time reversed one second to 2.
;The spline is then plotted from S to E based on the predicted points of 1 and 2
;and the starting And ending velocities. The object is then moved along the
;spline Until the Next packet arrives and then process starts over.

;S = starting point - time=0
;1 = predicted position after 1 sec
;2 = predicted position reversed from E after 1 sec
;E = ending point

AppTitle "Cubic Spline Interpolation"

Graphics3D 800,600,16,2
SetBuffer BackBuffer()

i = 50

;Main Loop
While Not KeyHit(1)
Cls

i = i - 1
;Cubic Spline Interpolation (I love those words!)
cspline(50,i,50,100,100,100,100,100,100,300,75,-20,-10,0,0)

Flip
Wend
End

;-=-=-=-=-=-=-=-=-=-=-=-=-=-=;
;=Cubic Spline Interpolation=;
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=;
Function cspline(Xold,Yold,Zold,Xvelold,Yvelold,Zvelold,XNew=0,YNew=0,ZNew=0,Xvelnew,Yvelnew,Zvelnew,XAccelNew,YAccelNew,ZAcccelNew,Time=3)

;Init Local Variables
Local x,y,z,x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3
Local a,b,c,d,e,f,g,h,i,j,k,l,t#

;Coord#1 is the current object's X,Y (or X,Z if using 3D)
Color 0,255,0
X0=Xold : Y0=Yold : Z0=Zold
Text X0-4,Y0-16,"S"
Rect X0,Y0,3,3,1

;Calc Coord#2
Color 255,255,0
X1 = X0 + XVelOld
Y1 = Y0 + YVelOld
Z1 = Z0 + ZVelOld
Text X1-4,Y1-16,"1"
Rect X1,Y1,3,3,1

;Calc Coord#3 (must calc after Coord#4)
Color 200,100,0
X2=XNew + XVelNew * Time + .5 * XAccelNew * Time^2
Y2=YNew + YVelNew * Time + .5 * YAccelNew * Time^2
Z2=ZNew + ZVelNew * Time + .5 * ZAccelNew * Time^2
Text X2-4,Y2-16,"2"
Rect X2,Y2,3,3,1

;Calc Coord#4
Color 255,0,0
X3=XNew
Y3=YNew
Z3=Znew
;X3=X2 - (XVelNew + XAccelNew * Time)
;Y3=Y2 - (YVelNew + YAccelNew * Time)
Text X3-4,Y3-16,"E"
Rect X3,Y3,3,3,1


;Calc Cubic Spline Points
RecursiveMathA=3*x2
RecursiveMathB=3*x1
RecursiveMathC=6*x1
RecursiveMathD=3*x0
RecursiveMathE=3*y2
RecursiveMathF=3*y1
RecursiveMathG=6*y1
RecursiveMathH=3*y0
RecursiveMathI=3*z2
RecursiveMathJ=3*z1
RecursiveMathK=6*z1
ResurciveMathL=3*z0


A = X3 - RecursiveMathA + RecursiveMathB - x0
B = RecursiveMathA - RecursiveMathC + RecursiveMathD
C = RecursiveMathB - RecursiveMathD
D = x0
E = y3 - RecursiveMathE + RecursiveMathF - y0
F = RecursiveMathE - RecursiveMathG + RecursiveMathH
G = RecursiveMathF - RecursiveMathH
H = y0
I = z3 - RecursiveMathI + RecursiveMathJ - z0
J = RecursiveMathI - RecursiveMathK + RecursiveMathL
K = RecursiveMathJ - RecursiveMathL
L = z0

;Draw the Spline
For t#=0 To 1 Step .001
    x = A*t^3 + B*t^2 + C*t + D
    y = E*t^3 + F*t^2 + G*t + H
Plot x,y
Next

End Function


Fant 01.10.2007 23:08

Re: Сеть
 
Ого! Спасибо за код! Честно говоря смотришь на пример и думаешь, а нужна ли эта сеть...?

Tadeus 01.10.2007 23:12

Re: Сеть
 
Цитата:

Как бы ни был умен бот, лучше играть с живыми людьми (с) HolyDel
;)

Fant 01.10.2007 23:29

Re: Сеть
 
Цитата:

Сообщение от Tadeus
;)

это точно, но блин...эти жестокие семплы(

Fant 01.10.2007 23:31

Re: Сеть
 
Цитата:

Сообщение от Fant
это точно, но блин...эти жестокие семплы(

А ты вообще насколько хорошо соображаешь в написании сети?

Tadeus 01.10.2007 23:38

Re: Сеть
 
Средне и чуть ниже :-)


Чет я все теорией, да теорией..Надо бы попробовать протоколы на практике блин. И все лень даже начать писать либу для работы с HTTP. А надо...

Fant 01.10.2007 23:41

Re: Сеть
 
Цитата:

Сообщение от Tadeus
Средне и чуть ниже :-)


Чет я все теорией, да теорией..Надо бы попробовать протоколы на практике блин. И все лень даже начать писать либу для работы с HTTP. А надо...

ПОнятно, а у тебя есть аська? Ты мне не поможешь с сетью?

Tadeus 02.10.2007 01:06

Re: Сеть
 
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 10 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

;)

Fant 03.10.2007 14:21

Re: Сеть
 
кто-нить может мне доступно по-русски, популярно объяснить что такое полеризация и как она юзается?

Tadeus 04.10.2007 22:37

Re: Сеть
 
Вот ща тестили пример с Фантом. Это жОстко :-D Проверили каждый в локалке - пашет. Пробуем в Интернете. Фант запустил сервак я подключаюсь. Не вижу сеансов и с дурости ввожу 1 и нажимаю "Создать Игру". И тут :lol: На экране только ОДИН кубик, которым управляет Фант. Я пацталом... :-D :-D :-D

Stabilitron 05.10.2007 02:22

Re: Сеть
 
Простите, а я чето не понял:а где мона взять эту статью от Тудеуса почитать? Ничего в сетях не понимаю, а понять хочу..)

Fant 05.10.2007 11:08

Re: Сеть
 
Цитата:

Сообщение от Nereis
Простите, а я чето не понял:а где мона взять эту статью от Тудеуса почитать? Ничего в сетях не понимаю, а понять хочу..)

В разделе FAQ

Tadeus 05.10.2007 12:33

Re: Сеть
 
Или на блицетк:

http://blitzetc.boolean.name/articles/directplay.htm

;)

JoKeR_13 05.10.2007 16:07

Re: Сеть
 
Пробую передать файл по сети, вроде все отрабатывает, но файл получается заполнен 0:''((

ниже код, может что подскажите?
Сервер
Код:

; Создаем сервер для передачи файла
FileServer = CreateTCPServer (1313)
If FileServer <>0 Then
n = CountHostIPs("")
ip = HostIP(1)
ipaddress$ = DottedIP$(ip)
Print "Сервер запущен удачно. IP: "+ ipaddress$
Else
Print "Ошибка создания сервера."
End
End If
;WaitKey
; ========================
While Not KeyHit(1)
    strStream=AcceptTCPStream(FileServer)   
    ; обработка команд
    If strStream Then
        s$=ReadString$(strStream)
        location = Instr( s$,"GET",1)
        If location <>0 Then
            f$ = Mid$(s$,location+4, Len (s$)-location+4)
            Print "Файл "+f$
            ; Работа с файлом
            fileOut = OpenFile (f$)
            If fileOut = 0 Then
                Print "Файл "+f$+" не найден!"
            Else
                flSize = FileSize (f$)
                bank = CreateBank (flSize)
                ; Передача файла
                WriteInt  StrStream, flSize
                ; Считать из файла в банк памяти
                ReadBytes bank,fileOut,0, flSize
                ; Закрыть файл
                CloseFile fileOut
                WriteBytes bank,  strStream, 0, flSize
            EndIf
        End If
    End If
Wend
End

Клиент
Код:

fileStrim = OpenTCPStream ("10.9.26.7",1313)
If fileStrim <> 0 Then
Print "Клиент соединился с сервером."
Else
Print "Сервер не отвечает."
WaitKey
End
End If

WriteString  fileStrim, "GET Test.exe"
size = ReadInt (fileStrim)
bank = CreateBank (size)
Print size
ReadBytes (bank, fileStrim,0,fileStrim)
fileout = WriteFile("Test1.exe")
WriteBytes (bank, fileout,0, BankSize (bank))
CloseFile (fileout)
Print "OK"
WaitKey
End


jimon 05.10.2007 16:31

Re: Сеть
 
передавай файл побайтово ... данные же не моментально пересылаются

JoKeR_13 05.10.2007 16:36

Re: Сеть
 
Цитата:

Сообщение от jimon
передавай файл побайтово ... данные же не моментально пересылаются

Получается блитц поток не может передать целеком?
какая разница между потоком файла и сетевым потоком.
Он же из файла читает?

Темболее работаю с TCP/IP там после передачи пакета идет проверка на прием, если не дошло - снова посылается.
А если побайтно передавать, то какой смысл использовать банк?

jimon 05.10.2007 17:48

Re: Сеть
 
блин, ReadBytes не будет ждать пока поток достигнет заданых размеров
и то что не доступно просто заполнит нулями

просто поток передается НЕ СРАЗУ


Часовой пояс GMT +4, время: 16:18.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot