我正在与Game Maker进行游戏并且在网络方面遇到一些麻烦:(我的服务器在Twisted Framework的帮助下以python编码。
Anywho,作为一个例子,当我点击我的Game Maker游戏中的一个按钮将我的登录信息发送到服务器时,它似乎只需单击一下鼠标即可发送多次,这是不对的。这是我的发送脚本代码......
var t_buffer = buffer_create(256, buffer_grow, 1)
buffer_seek( t_buffer, buffer_seek_start, 0)
buffer_write( t_buffer , buffer_string, chr(argument0) + string(argument1) )
network_send_packet(obj_Server.client, t_buffer, buffer_tell(t_buffer))
buffer_delete(t_buffer)
我的服务器端,现在,我只打印出发送的数据,并打印出五行相同的内容。这是我的python代码......
# Sends received data to the protocol handler
def dataReceived(self, data):
self.protocolHandler(data)
# Parses data sent from the client
def protocolHandler(self, data):
# Split our data
#values = data.split("\x01")
#eventTokens = values.pop(0)
#eventToken1, eventToken2 = eventTokens
print "Data Received:: " + str(data) + ": First Character: " + data[0]
为了便于解释,令牌只是帮助我确定我在游戏中需要做什么,例如,如果我收到\ x01 \ x03我知道它是一个登录数据包,并且应该附加登录数据。如果我得到\ x02 \ x03我知道其他东西就像我的客户玩家已经死了。
我应该如何处理数据发送,以便它不发送大量数据包?
答案 0 :(得分:0)
GM不应该多次发送数据。在代码中使用{{1}}查看实际执行的次数。
如果它正在多次执行,那么你需要仔细查看你是如何调用该代码的。
如果它只执行一次,那么必须要考虑到你如何处理服务器端,但我不熟悉Twisted Framework。