Java-Gaming.org Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (523)
Games in Android Showcase (127)
games submitted by our members
Games in WIP (592)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  2 player, turn based game communications  (Read 2387 times)
0 Members and 1 Guest are viewing this topic.
Offline patito

Innocent Bystander





« Posted 2012-07-03 10:57:26 »

Hi,

I have a 2 player, turn based game which uses DataInputStream and DataOutputStream to send and receive String and int messages to and from the server. I was looking for a way to receive the messages and paint the resulting changes while respecting the rule that all Swing jobs should only be done on the EDT, while receiving data should never be done on the EDT. I have found something that seems to work, but my question is really if it is the most efficient way and if there are other "standard" ways of doing this. This is what I am doing at the moment:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
public void processMessage(String message){// Process messages sent by server
    if(message.equals("do something")){
        a = myReadInt();
        b = myReadUTF();
    }
 
Thank you in advance.
    else if(message.equals("do something else")){
        a = myReadInt();
        b = myReadUTF();
    }
 
    String m = message;
    try{
        javax.swing.SwingUtilities.invokeLater(new Runnable(){
            public void run(){
                processMessageEDT(m, a, b);
            }
        });
    }catch(Exception e){System.err.println("error");}
 
}
Offline Summit

Senior Newbie


Medals: 1



« Reply #1 - Posted 2012-07-06 16:22:17 »

I favor using a producer-consumer design pattern for problems such as these.

The networking thread reads incoming packets/data/whathaveyou, deserializes them appropriately, and stores them in a queue. This is the 'producer'. Each game loop, the game logic empties this queue and performs the appropriate game logic. This is the 'consumer'. The two threads never interact directly.
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

SHC (22 views)
2014-11-25 12:00:59

SHC (20 views)
2014-11-25 11:53:45

Norakomi (18 views)
2014-11-25 11:26:43

Gibbo3771 (22 views)
2014-11-24 19:59:16

trollwarrior1 (36 views)
2014-11-22 12:13:56

xFryIx (74 views)
2014-11-13 12:34:49

digdugdiggy (52 views)
2014-11-12 21:11:50

digdugdiggy (46 views)
2014-11-12 21:10:15

digdugdiggy (41 views)
2014-11-12 21:09:33

kovacsa (67 views)
2014-11-07 19:57:14
Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-09 22:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-02 22:36:02

List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!