http://qs1969.pair.com?node_id=793743

AI Cowboy has asked for the wisdom of the Perl Monks concerning the following question:

I am making a Star Trek game for Linux in Perl, however the server telling the client it got shot seems to lag. It carries out the info, like decreasing hull integrity, but it does not tell the user all it should. please help!
$Server_connection10=new IO::Socket::INET->new(LocalPort=>2010,Proto=> +"udp"); $battle_accept = threads->new( sub{ while($Server_connection10->recv($text2,10000)){ ($attacked,$attacker,$damage,$nothing) = split("----", $text2); if($attacked =~ m/phasers/i){ if($shields eq "on"){ print"\nWe have been attacked by the $attacker!!"; $shield -= ($damage / 10); $shield10 = $shield * 10; print"Shields are at $shield10!"; if($shield <= 0){ print"\nShields are down!!"; $shields = "off"; } }else{ print"\nWe have been attacked by the $attacker!!"; $hull -= $damage; print"Hull integrity is at $hull!"; if($hull <= 0){ print"YOU HAVE BEEN DESTROYED BY THE $attacker."; $again = 1; $dead = 1; } } }else{ if($shields eq "on"){ print"\nWe have been attacked by the $attacker!!"; $shield -= ($damage / 50); $shield10 = $shield * 10; print"Shields are at $shield10!"; if($shield <= 0){ print"\nShields are down!!"; $shields = "off"; } }else{ print"\nWe have been attacked by the $attacker!!"; $hull -= int($damage * 1.5); print"Hull integrity is at $hull!"; if($hull <= 0){ print"YOU HAVE BEEN DESTROYED BY THE $attacker."; $again = 1; $dead = 1; } } } } } );
This is the thread used for recieving battle commands from the server. I don't want an overhaul of the programming idea, such as a different way to do it instead of a server, I just want to figure out why it is doing this. Thanks in advance, guys!

Replies are listed 'Best First'.
Re: My game has problems
by james2vegas (Chaplain) on Sep 06, 2009 at 07:44 UTC
Re: My game has problems
by roboticus (Chancellor) on Sep 06, 2009 at 21:49 UTC