Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > BlitzMax

Ответ
 
Опции темы
Старый 29.09.2008, 14:34   #1
snikers
Нуждающийся
 
Аватар для snikers
 
Регистрация: 23.08.2008
Сообщений: 55
Написано 4 полезных сообщений
(для 4 пользователей)
GNet(сервер-клиент)

Обясните на пальцах общую структуру построения кода.

Нашел на http://blitzmax.com/ старый пример, но там есть команды которых нет в новом блице, у кого есть старая справка чтоб посмотреть что они значили и заменить их новыми или может кто конвертнет код.

Сервер:
Strict
' GNET simple dedicated server

' Create a new host. We call it listen because that's what it does
Local listen:TGNetHost = CreateGNetHost()

' Make it listen to the connection. 8086 is the port we want to use but you can change this to whatever
' you want between 1024 and 65535 (if i remember correctly.)
If Not GNetListen( listen, 8086 ) Then
	Print "Unable to listen on port."
	End
EndIf


Print "Server started."
Local quit_server = False
While Not quit_server

	GNetSync(listen) ' Sync all created objects

	Local newpeer:TGNetPeer = GNetAccept( listen ) ' Is someone knocking on our port?
	
	If newpeer Then
		' A new player wants to join us.
		Print "New player"
		Print "Players onnected at the moment:"
		Local peerlist:TList = GNetPeers( listen )
		
		For Local p:TGNetPeer = EachIn peerlist
			Print "  - "+DottedIP( SocketRemoteIP(GNetPeerTCPSocket( p )) )
		Next
		
	EndIf
	

	' The stuff below isn't needed in this short tutorial. It just prints some debug information so we can see
	' that the server is actually working. :)	

	Local olist:TList = GNetObjects( listen ) ' Get all created objects in the game
	
	For Local o:TGnetObject = EachIn olist
		
		Local state = GNetObjectState( o ) ' Get the state of the object
			
		Select state
			Case GNET_CREATED 'Object has been created
				print "New object created"
			Case GNET_SYNCED 'Object is in sync
				' do something here if it is needed
				' But the object is in sync and everything is just fine.
			Case GNET_MODIFIED 'Object has been modified
				' The object is modified! But no worries. It will be synced automagically.
			Case GNET_CLOSED 'Object has been closed
				Print "Connection closed to a peer"
				' The object is no longer valid. The player left the game
			Case GNET_MESSAGE 'Object is a message Object
				' I haven't played around with this yet. So you need to read the manual
				' yourself about this. ;)
		
		EndSelect
		
	Next

Wend
Клиент:
strict
' Simple GNet client

Local server:TGNetHost = CreateGNetHost() ' Create a "host"

Local serverpeer:TGNetPeer = GNetConnect( server,"127.0.0.1",8086 ) ' Connect to the server

If Not serverpeer Then ' Aaaw crap! Start the server first! And check the ip and port!
	Print "Unable to connect to server."
	End
EndIf

Print "Sever contacted!" ' Yaaaay

' Now, create our player. Only needs to create a local one...
' NetObject is our own type. You can find it after the main loop.
Local localplayer:NetObject = NetObject.create(server,"DaBomb!",320,240)



' Some graphics...
Graphics 640,480,0


' The main loop
While Not KeyDown( KEY_ESCAPE )

	' --------- Logic

		GNetSync(server) ' Sync objects

		' Get objects
		Local olist:TList = GNetObjects( server )

		' We use this later when we draw players
		Local plist:TList = CreateList() ' Active players
		
		For Local o:TGnetObject = EachIn olist
		
			' The state the object is in
			Local state = GNetObjectState( o )
			
			Select state
				Case GNET_CREATED 'Object has been created
					If GetGNetInt( o, 0 ) = O_AVATAR Then
						plist.addlast( o ) ' we want to draw this later
						Print "Joined: "+GetGNetString(o,1)
						' Spawn some particles or something to show that
						' The player has arrived...
					EndIf
				Case GNET_SYNCED 'Object is in sync
					If GetGNetInt( o, 0 ) = O_AVATAR Then
						plist.addlast( o ) ' Draw it.
					endif
				Case GNET_MODIFIED 'Object has been modified
					If GetGNetInt( o, 0 ) = O_AVATAR Then
						plist.addlast( o ) ' Draw it anyway
					endif
				Case GNET_CLOSED 'Object has been closed
					' Spawn some particles or a sound effect or something.
					' This player is no more...
			
			EndSelect
		
		Next

		' We want to controll our local player
		If KeyDown( KEY_LEFT ) Then LocalPlayer.move(-1,0)
		If KeyDown( KEY_RIGHT ) Then LocalPlayer.move(1,0)
		If KeyDown( KEY_UP ) Then LocalPlayer.move(0,-1)
		If KeyDown( KEY_DOWN ) Then LocalPlayer.move(0,1)


	' --------- GFX
	
	Cls ' nice and clean

		' Draw connected players	
		Local y = 10
		For Local dp:TGnetObject = EachIn plist
			' Player list at top left
			Local tmp:String = GetGNetString( dp,1 ) ' Nickname
			DrawText tmp, 10,y
			y:+17
			
			' Draw a rectangle to show where the player is
			Local xpos = GetGNetInt(dp,2) ' get position
			Local ypos = GetGNetInt(dp,3)
			DrawRect xpos-3,ypos-12,7,12
			drawtext tmp, xpos,ypos-30
			
		Next
		
		' How many players are there?		
		DrawText "Players: "+plist.count(), 5,y
	
		
		' Some GNet statistics		
		DrawText "In/out: "+GNetTotalBytesIn()+"/"+GNetTotalBytesOut(),  0,465
	
	Flip ; FlushMem

Wend

End ' bye bye



' ----- our player TYPE

' So we know what type an object is...
Const O_AVATAR = 0

' Our type
Type NetObject

	Field nobj:TGNetObject ' The actual GNet object
	Field xpos:Int ' Position on the screen
	Field ypos:Int


	Function create:NetObject( connection:TGNetHost, name:String, x:Int, y:Int )
	
		Local no:NetObject = New NetObject
	
		no.nobj = CreateGNetObject( connection ) ' Create the GNet object
		
		SetGNetInt( no.nobj, 0, O_AVATAR ) ' We use slot 0 as an object type ID
		no.place(x,y) ' Place the object
		no.rename(name) ' rename it
	
		Return no ' Return it
	EndFunction


	

	Method place( x:Int, y:Int )
		xpos = x ' Save the position internally
		ypos = y
		SetGNetInt( nobj,2,x ) ' slot 2 and 3 are used for x and y position.
		SetGNetInt( nobj,3,y )	
	EndMethod

	Method Move( xoff:Int, yoff:Int )
		xpos:+xoff
		ypos:+yoff
		SetGNetInt( nobj,2,xpos )
		SetGNetInt( nobj,3,ypos )	
	EndMethod
	
	Method rename( name:String )
		SetGNetString( nobj,1,name ) ' slot 1 is used for the nickname
	EndMethod

EndType
Спасиб!
__________________
мои игры


требуется художник, за подробностями в асю - 428078069
(Offline)
 
Ответить с цитированием
Старый 29.09.2008, 19:35   #2
snikers
Нуждающийся
 
Аватар для snikers
 
Регистрация: 23.08.2008
Сообщений: 55
Написано 4 полезных сообщений
(для 4 пользователей)
Ответ: GNet(сервер-клиент)

а_УУ! подскажите а то запарился, нет внятного примера, тот что в семплах не катит, так как там нет сервера(отдельно).
__________________
мои игры


требуется художник, за подробностями в асю - 428078069
(Offline)
 
Ответить с цитированием
Старый 30.09.2008, 09:51   #3
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Ответ: GNet(сервер-клиент)

надо сторонние либы подключать
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
snikers (30.09.2008)
Старый 30.09.2008, 19:13   #4
snikers
Нуждающийся
 
Аватар для snikers
 
Регистрация: 23.08.2008
Сообщений: 55
Написано 4 полезных сообщений
(для 4 пользователей)
Ответ: GNet(сервер-клиент)

надо сторонние либы подключать
а не подскажеж какая рулит, всмысле какую стор. либу использовать?
и еще напиши что ты используеш в добавку к БМ? кроме ХМЛ и ЛУА
__________________
мои игры


требуется художник, за подробностями в асю - 428078069
(Offline)
 
Ответить с цитированием
Старый 30.09.2008, 19:20   #5
jimon
 
Сообщений: n/a
Ответ: GNet(сервер-клиент)

RakNet довольно хорошая
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
snikers (01.10.2008)
Старый 30.09.2008, 21:20   #6
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: GNet(сервер-клиент)

jimon, дорого сцуко. :'(

Последний раз редактировалось jimon, 30.09.2008 в 22:22.
(Offline)
 
Ответить с цитированием
Старый 30.09.2008, 22:09   #7
jimon
 
Сообщений: n/a
Ответ: GNet(сервер-клиент)

HolyDel
не в деньгах счастье
 
Ответить с цитированием
Старый 01.10.2008, 09:21   #8
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Ответ: GNet(сервер-клиент)

кстати, где-то jimon выкладывал приложение клиент-сервер на какой-то либе, надо только поискать.
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
snikers (01.10.2008)
Старый 01.10.2008, 14:59   #9
jimon
 
Сообщений: n/a
Ответ: GNet(сервер-клиент)

dimanche13
на raknet'е было
 
Ответить с цитированием
Старый 04.10.2008, 05:35   #10
Siarzhuk Piatrouski
Нуждающийся
 
Регистрация: 23.11.2007
Сообщений: 63
Написано 8 полезных сообщений
(для 7 пользователей)
Ответ: GNet(сервер-клиент)

Вполне неплохая либа... Правда лучше юзать нечто более толковое, возможно RakNet.
http://www.truplo.com/TNet/
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
snikers (04.10.2008)
Старый 06.11.2009, 18:44   #11
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Ответ: GNet(сервер-клиент)

подниму тему, потому что с TNetом какие-то проблемы, бмакс в упор не хочет видеть это, а других либ больше не видел.

Все-таки, что посоветуете? GNet, говорят, вообще параша, так:?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клиент ICQ Randomize Болтовня 16 04.07.2010 13:52
j2me-клиент для общения в форуме abcdef Основной форум 13 21.01.2009 02:42
Клиент Сервер Conan Fedr 2D-программирование 4 05.11.2008 15:59
Структура Клиент-Сервер Delta_Q Алгоритмика 2 20.10.2007 14:24
Сервер. AnRee Болтовня 2 13.11.2006 18:52


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com