Java-Gaming.org
Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
Featured games (78)
games approved by the League of Dukes
Games in Showcase (406)
games submitted by our members
Games in WIP (289)
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  
  Gameserver makes computer sweat  (Read 373 times)
0 Members and 1 Guest are viewing this topic.
Offline Reck

Senior Newbie





« Posted 2012-12-05 08:34:08 »

I've coded a gameserver which works very well. However, whenever it's running, my computers fan goes crazy.
I've been looking through the code, and i can't really figure out why.

The code is attached below, i hope someone can see what causes this! :-)

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
69  
70  
71  
72  
73  
74  
75  
76  
77  
78  
79  
80  
81  
82  
83  
84  
85  
86  
87  
88  
89  
90  
91  
92  
93  
94  
95  
96  
97  
98  
99  
100  
101  
102  
103  
104  
105  
106  
107  
108  
109  
110  
111  
112  
113  
114  
115  
116  
117  
118  
119  
120  
121  
122  
123  
124  
125  
126  
127  
128  
129  
130  
131  
132  
133  
134  
135  
public class NFTServer {

    long timeNow = System.currentTimeMillis();
    Server server;
    //mySQL database;
   Board board;
    HashSet<Character> loggedIn = new HashSet();
    ArrayList<Player> playerList;

    public NFTServer() throws IOException {
        playerList = new ArrayList<Player>();
       
        board = new Board();
       
        server = new Server() {
            protected Connection newConnection() {
                return new CharacterConnection();
            }
        };

        Network.register(server);

        server.addListener(new Listener() {
            public void received(Connection c, Object object) {
                CharacterConnection connection = (CharacterConnection) c;

                if (object instanceof Login) {
                   
                    String name = ((Login) object).name;
                    int playerId = ((Login) object).playerId;

                    Message message = new Message();
                    message.message = "Welcome " + name + " id: " + playerId;
                    connection.sendTCP(message);
                   
                    LoginAnswer answer = new LoginAnswer();
                    answer.playerId = playerId;
                    connection.sendTCP(answer);
                   
                    Position randomPosition = board.getRandomPosition();
                    playerList.add(new Player(name, randomPosition.getPositionX(), randomPosition.getPositionY(), playerId));
                    connection.playerId = playerId;
                    connection.name = name;
                }
               
                if (object instanceof RequestMove) {
                    for (int i = 0; i < playerList.size(); i++) {
                        Player currentPlayer = playerList.get(i);
                        if (currentPlayer.getId() == connection.playerId) {
                            int positionX = ((RequestMove) object).positionX;
                            int positionY = ((RequestMove) object).positionY;
                            Position position = new Position(positionX, positionY);
                            currentPlayer.setPosition(board.convertCoord(position).getPositionX(), board.convertCoord(position).getPositionY());
                        }
                    }
                }
               
                if (object instanceof ChatMessage) {
                    String message = ((ChatMessage) object).message;
                    int playerId = connection.playerId;
                    for (int i = 0; i < playerList.size(); i++) {
                        Player currentPlayer = playerList.get(i);
                        if (currentPlayer.getId() == connection.playerId) {
                            BroadMessage broadMessage = new BroadMessage();
                            broadMessage.message = message;
                            broadMessage.playerId = playerId;
                            server.sendToAllTCP(broadMessage);
                        }
                    }
                }

            }

            public void disconnected(Connection c) {
                CharacterConnection connection = (CharacterConnection) c;
                if (connection.name != null) {
                    for (int i = 0; i < playerList.size(); i++) {
                        Player currentPlayer = playerList.get(i);
                        if (currentPlayer.getId() == connection.playerId) {
                            playerList.remove(i);
                        }
                    }
                }
            }
        });
        server.bind(Network.port);
        server.start();

        JFrame frame = new JFrame("NFTServer");
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosed(WindowEvent evt) {
                server.stop();
            }
        });
        frame.getContentPane().add(new JLabel(" Servervindue"));
        frame.setSize(320, 200);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

       
        while (true) {
            if (timeNow + 100 < System.currentTimeMillis()) {
               
                PlayerList toClient = new PlayerList();
                toClient.persons = new ArrayList<Map<String, String>>();
               
                for (int i = 0; i < playerList.size(); i++) {
                    Player currentPlayer = playerList.get(i);
                    Map<String, String> person = new HashMap<String, String>();
                    person.put("name", currentPlayer.getName());
                    person.put("playerId", "" + currentPlayer.getId());                    
                    person.put("posX", "" + currentPlayer.getX());
                    person.put("posY", "" + currentPlayer.getY());
                    toClient.persons.add(person);
                }
               
                server.sendToAllTCP(toClient);

                timeNow = System.currentTimeMillis();
            }
        }
    }

    static class CharacterConnection extends Connection {

        public String name;
        public int playerId;
    }

    public static void main(String[] args) throws IOException {
        Log.set(Log.LEVEL_DEBUG);
        new NFTServer();
    }
}
Offline 65K
« Reply #1 - Posted 2012-12-05 08:59:39 »

Let the server thread sleep a bit in the while loop.

Offline Reck

Senior Newbie





« Reply #2 - Posted 2012-12-05 09:01:54 »

I'm very new at Java.
How would i implement this? (Code examples please)! :-)
Games published by our own members! Check 'em out!
Try the Free Demo of Revenge of the Titans
Offline Joshua Waring

Senior Member


Medals: 4
Projects: 2



« Reply #3 - Posted 2012-12-05 15:13:54 »

Thread.sleep(/* time in milliseconds */ 500); // sleep for 0.5 Seconds

It is ms right?

The world is big, so learn it in small bytes.
Offline matheus23

JGO Wizard


Medals: 72
Projects: 3


You think about my Avatar right now!


« Reply #4 - Posted 2012-12-05 15:14:41 »

Thread.sleep(/* time in microseconds */ 500);

It is ms right?

Yes. It's milliseconds.

Take a look at my development Blog: http://matheusdev.tumblr.com
Also look at my RPG Ruins of Revenge
Pages: [1]
  ignore  |  Print  
 
 

Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
 
Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars and Titan!

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

The first screenshot will be displayed as a thumbnail.

The invasion has landed! On Mars! And you're there to beat 'em!
cubemaster21 (60 views)
2013-05-17 21:29:12

alaslipknot (69 views)
2013-05-16 21:24:48

gouessej (99 views)
2013-05-16 00:53:38

gouessej (98 views)
2013-05-16 00:17:58

theagentd (107 views)
2013-05-15 15:01:13

theagentd (98 views)
2013-05-15 15:00:54

StreetDoggy (144 views)
2013-05-14 15:56:26

kutucuk (167 views)
2013-05-12 17:10:36

kutucuk (166 views)
2013-05-12 15:36:09

UnluckyDevil (175 views)
2013-05-12 05:09:57
Complex number cookbook
by Roquen
2013-04-24 12:47:31

2D Dynamic Lighting
by Oskuro
2013-04-17 16:46:12

2D Dynamic Lighting
by Oskuro
2013-04-17 16:45:57

2D Dynamic Lighting
by Oskuro
2013-04-17 16:23:20

Noise (bandpassed white)
by Roquen
2013-04-05 17:36:01

Noise (bandpassed white)
by Roquen
2013-04-03 16:17:38

Java Data structures
by Roquen
2013-03-29 13:21:12

Topic Request
by kutucuk
2013-03-22 21:42:01
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!
Page created in 0.41 seconds with 21 queries.