MegaGlest Forum
Archives (read only) => Vanilla Glest => Multiplayer => Topic started by: softcoder on 16 January 2010, 03:17:15
-
I've spend a little while looking at the performance problem behind the standard glest 3.2.1 codebase. After trying a lot of different things voila, I found out why the server slowed down gameplay for 4 player multiplayer. Thus far I have tested on Linux but I am using regular sockets so win32 shouldn't be a problem. I tested this evening with Elimnator, Tiger and an un-named other along with myself and the results were good.
At this point what should I do to get this code into svn for regular glest 3.2.1 (I had problems compiling gae so I reverted back to normal glest).
Thanks
update (by titi):
Its all in megaglest now: https://forum.megaglest.org/index.php?topic=4930.0
-
You should make a patch against svn trunk and post it. And also send the glest team a mail, see front page of glest.org for address.
If you had problems with gae we are happy to here about it. Please post any problems in our subforum or make a ticket at http://sourceforge.net/apps/trac/glestae/.
-
or you decide to go with this:
https://forum.megaglest.org/index.php?topic=4930.0
and send me a patch for it. I think I will setup my own svn soon.
-
Attached is an svn diff of some network improvements to make 4 player work better (no longer choppy).
seems like ioctlsocket (ioctl in linux) is evil as it creates a bug performance hit. I essentially made more use of select() on the server side of things BEFORE calling ioctl to see if there is anything to read before calling any other socket functions and it seems to have helped.
Thanks
P.S. Titi, I ported my network changes to your beta 3 code and created a tar with the name beta4
To get the diff file for glest 3.2.1 or to get the modified code for Titi's beta3 (called beta4) goto:
http://www.soft-haus.com/glest/code/ (http://www.soft-haus.com/glest/code/)
-
If I have some time over the next few weeks I'll be looking into adding the following features for glest:
1. Adding a check for clients that connect to a server to see if they have the selected map,tile and factions for a network game.
2. If clients do not match exactly what the server has (even if an xml file has a small change) then the client will be given the option to auto download the new contents from the server.
This should make sharing new factions, maps etc.. easier and less problems with crashing on installations with different data.
-
cool! :)
I try to create a final megaglest now which is based on the beta4. We start testing beta4 on all platforms now and if there are no big issues this will be version megaglest 3.2.3 . If there are still bugs I make a beta5, but this is definitly the feature freeze now for this version.
Some more ideas for multiplayer improvement:
- Playernames! In the connect menu you should be able to give a player name!
- Chat possibility inside the connect menu.
- Better error handling/messages when you get a conflict based on different platforms/builds which will get out of sync after a while.
-
Just for your info:
I will not put the multiplayer patch in megaglest 3.2.3 now but this multiplayer fix will be the main feature for 3.2.4.
I think version 3.2.3 is stable now and i want to release something stable and finished before we start something else.
I wait some days to see if someone has serious problems with 3.2.3_beta3 and if not it will be released.
3.2.4 with this fix will follow instantly after the release!
-
2. If clients do not match exactly what the server has (even if an xml file has a small change) then the client will be given the option to auto download the new contents from the server.
This could be quite difficult because you need write access to the data directory. You don't have this normally on linux. That's why i'am currently looking into integrating PhysFS in GAE which helps us handling more directories. It basically creates a new merged virtual directory. Can even read from compressed archives like zip and 7z.
Haven't uploaded anything yet. Will do till end of week.
-
Have a look at other games. They often download to their own directories in the homedir like
".glest/cache" for example. If you compress the data or not is another question but something you should
really think about especially for downloading. But one step after another....
-
Feedback for the Linux multiplayer fix:
Its much mcuh much better than before! We only played with 2 players today, but we had hunderts of units and huge battles with the new mega CPU and it was nearly not choppy! Thats very very good now, thanks a lot for this patch!
I must try this online soon, I hope this will increase multiplayer stability dramatically!
( for all those who read this, please test the megaglest 3.2.3 beta3 and give me feedback so we can create a stable release. If this is done we can go on with this feature! https://forum.megaglest.org/index.php?topic=4930.0)
-
Have a look at other games. They often download to their own directories in the homedir like
".glest/cache" for example. If you compress the data or not is another question but something you should
really think about especially for downloading. But one step after another....
That's more or less planned. We thought more about configs and mods in the homedir, not about autodownloading. But another directory can be easily added.
btw, the branch is up, called physfs. Be aware, this is still playground. Nevertheless i was able to play a game with a zipped megapack in ~/.glestadv/addons. Need to repack it, so that only maps, scenarios, techs and tilesets folders are in it at toplevel.
-
ah ok.
More feedback for the new multiplayer:
Its still very choppy in the game configuration on the server but when the game starts the game itself runs very smooth and without any problems!
Much better than before. We made a game with 4 players adn lots of units today, all worked fine and nothing was choppy ( all players in local LAN ).
-
Glad to hear that the multi-player fix is working well. The slowness on the server during game config is due to needing to handle new possible client connections. I may look at tweaking that a bit to make it less choppy at some point. On another note I have roughed in the main chunk of code to handle checking and downloading of missing content. Now I need to test and refine it (taking one step at a time).
Eventually I have a good solution in mind to separate the reliance of the network communication from the video rendering (this is the main cause of synch errors and choppy video play) but that will not come for a while (and someone else may beat me to it). For now this multiplayer fix makes it much more useful than it was in the past at least in a short period of time.
Thanks
-
Bad news :( . We have problems now with 4 players !
Our computers: 3 fast enough Desktop computers 1 slow Laptop.
We start gaming and everything looks fine, then suddenly the laptop player cannot give any more commands! He can select the units but they don't do what he say. I think no more commands are send ( or received) by the server.
The game continues on all 4 computers without any error messages but the user can't play. ( pressing n on the server told us the client is still connected )
After a while the laptop decided to leave the game. Back in the menu still everything is fine ( and he is still marked as connected on the server )
but when he closes glest completly suddenly everything crashes ( on all 3 other computers!! ).
The errormessages we saw in the logfile are the following:
on the 2 remaining clients which showed no problems before we had something like this:
#2 Error connecting socket for IP: 172.20.100.101 for Port: 61357 err = -1 errno = 115 [Operation now in progress]EINPROGRESS in connect() - selecting
Apparent recovery for connection sock = 15, err = 1, errno = 0
Valid recovery for connection sock = 15, err = 1, errno = 0
#2 Error connecting socket for IP: 172.20.100.101 for Port: 61357 err = -1 errno = 115 [Operation now in progress]EINPROGRESS in connect() - selecting
server logfile was lost, because my son started glest again ....
laptop logfile:
#2 Error connecting socket for IP: 172.20.100.103 for Port: 61357 err = -1 errno = 115 [Operation now in progress]EINPROGRESS in connect() - selecting
Apparent recovery for connection sock = 11, err = 1, errno = 0
Valid recovery for connection sock = 11, err = 1, errno = 0
This happened two times!
Last successful test with 4 players was made by only 2 players both playing on 2 computrs simultaniosly, but when we play with 4 real players we get these problems.
-
Ok I'll take a closer look at the code to see where the problem lies. I didn't really change the principle by which the network code was based on, so its likely there is a check missing somewhere that is causing this.
-
Ok I believe the problem is an existing oversight in the networking code (in otherwords there are cases where clients / servers would have major problems if the network connection was sluggish).
I will send another patch perhaps tonight where the socket code checks for EGAIN when sending / receiving socket data AND also checks for a disconnect. The existing code doesn't properly check to see if a socket has disconnected in some cases, so I'll add that in too. This update will ALSO include code for doing file synch checks and downloading content..BUT the file synch etc.. code won't be enabled since its not ready yet and I cannot back out those changes at this point since I have made lots of infrastructure changes.
Once I have sent the patch you will see in the console and/or log output info messages when/if the suspected EAGAIN socket state is detected and the code will try to cover by re-trying the socket send or receive action for a max of 5 seconds.
Thanks
-
No hurry!
Can you modify megaglest with this? I still didn't merged your changes in the official sourcecode yet, but I made no changes up to now in megaglest 3.2.3_beta3 code so everything will fit. The only thing I will change is the version number to make my release. From then its "your code" to do the network changes and make things stable, so we will have a stable 3.2.4 one day. I will work more game content related for a while :) and I will see if I can make a full release with installers for the first official megaglest release containing my megapack V5 as the only techtree.
If you need any help with testing or anything please contact me!
-
By the way when I said "existing oversight" I meant that the code in glest all along did not properly handle return codes from socket send and receive operations and thus that might explain some random weird behaviour within glest over the years (especially related to one or more slow clients or network congestion).
So hopefully we'll get things moving along shortly, and yes I'll patch both regular glest and mega glest.
Thanks
-
One more info for the error:
We tried it again today because I wanted to test something:
- this time one of the fast client computers got into trouble
- It looks like he couldn't send any more commands to the server, but he receives commands from the server! Another player was able to navigate through the map and it was shown on the client with the bug too!
-
titi, I do not think so the question of computer or network configuration problem, but is not a game to set the problem. Today, I and my brother and my two friends tested this game on-line Versus function. Their machine configurations very good. we have four individuals LAN Battle, found that the error message is indeed there, and we had 4 hours of the Battle.
The four of us take turns playing the role of the server computers, but also take turns playing the role of the client!
By the way: In this four hours in the game will suddenly quit, abruptly quit the game about five times the number reached about it makes us feel very unhappy, one of my friend said: "Why it is so, my God! "
titi, please solve this problem, please?
-
Ok, tightened up the network code, and also have added the ability to chat while waiting in the lobby (both server and clients).
As usual the patch for regular glest 3.2.X and the whole archive for megaglest are waiting at my website:
http://soft-haus.com/glest/code/ (http://soft-haus.com/glest/code/)
The patch for regular glest is called: glest_patch_2010_jan_23.diff.txt
The archive for mega glest is called: megaglest-source-3.2.3-beta4-2.7z
Let me know how this goes.
P.S. if you want loads of debug info in the console (which is helpful is we encounter issues) compile with:
bool Socket::enableDebugText = true;
in socket.cpp
Remember there is one socket.cpp for posix (linux) and another for windows.
-
Ok found a few glitches related to when you manually disconnect the server in the lobby, and choppiness when changing settings on the server in lobby mode, all have been fixed but I won't publish updates until we have done more thorough testing. In general game play seems fine though with multi-player.
-
Hi
please call next megaglest version 3.2.4_beta1 megaglest 3.2.3 is released now.
We didn't test anything yet because the kids should not play computer the whole day ;).
I hope tomorrow we can test it.
-
I'm looking forward to the next version of titi in version 3.2.4_beta1 able to solve the network connectivity issue, I am looking forward to the version without this error occurred!
Thanks!
-
Ok whoever is able to test, the updated glest patch and the mega-glest 3.2.4-beta1 are available at:
http://www.soft-haus.com/glest/code/ (http://www.soft-haus.com/glest/code/)
Glest patch is called: glest_patch_2010_jan_23-2.diff
Mega Glest update called: megaglest-source-3.2.4-beta1.7z
This update:
- improves network play stability and performance
- allows chatting once connected in the lobby when preparing to start a new game (once you are connected)
- sends a text message to all players if a player purposefully quits a game in the middle of play.
- Tells both server and clients whether or not the selected Map, Tile, Tech and FogOFWar settings all match
That is it. Please test and give feedback so that we can get a rock solid release of multiplayer.
I have stubbed in code for auto-download of mis-matched content, but that is currently disabled until some quality time can be spent getting feedback and coding it to be solid.
Thanks
-
Its realy fun now that we can play 4 players with out it geting choppy.
-
Run glest3.2.4-beta1 following error:
root@tom:/usr/local/games/glest# ./glest.bin
#2 Error connecting socket for IP: 192.168.1.3 for Port: 61357 err = -1 errno = 115 [Operation now in progress]EINPROGRESS in connect() - selecting
Please tell me how to solve this problem?? Thanks
By the way: I use the operating system is: ubuntu8.10
-
I tried to press "" join game button to join the Battle groups, but because the cable fault is not incorporated, and then I press "return" button, the game suddenly quit, followed by my mouse could not move, and I can only restart the computer . Is this why? Why is there such a serious problem then, I have no problem with the computer itself. Please Come help me, thank you!
By the way: It is a time of running glest3.2.4beta1 this problem!
-
@softcoder:
I downloaded your sourcepackage for megaglest 3.2.4_beta1.
Inside was a directory called 3.2.3_beta3, I hope this is ok.
I said:
./autogen.sh
./configure
./jam clean
./jam
Then we started testing with this binary. We didn't manage to start any game :( .
Try 1:
First thing we saw:
server started and opened 3 splots for network players. Network player connected and was put to the last slot ( not the first open slot ).
Next player connected and was set on the 3 slot. what happend next is not really clear, but noone starts a game ( I think one of us disconnected and reconnected again ) and his client was crashed.
Try 2:
- We opened a server with only one slot open
- client one connected successfully
- we opened next slot
- client 2 connected to
- we opened third slot
- client 3 connected
Now we launched the game and every client starts to load. When loading was done and the game should start all clients crashed!!
I think there are still some serios bugs in it.
One thing we saw too is that the menu got very choppy again with only 2 players connected!
And the binary has a version number of glest 3.2.3_beta3 which is shown in the menu under the logo.
-
parts of the server logfile:
....
In [glest_game/network/server_interface.cpp::addSlot] START
In [glest_game/network/server_interface.cpp::addSlot] END
In [glest_game/network/server_interface.cpp::broadcastMessageToConnectedClients] before sendMessage
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 19, bytesSent = 788
In [glest_game/network/server_interface.cpp::broadcastMessageToConnectedClients] before sendMessage
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 18, bytesSent = 788
In [shared_lib/sources/platform/posix/socket.cpp::hasDataToRead] select detected data imaxsocket = 19...
In [hasDataToRead] FD_ISSET true for socket 19...
In [shared_lib/sources/platform/posix/socket.cpp::hasDataToRead] socketTriggeredList->size() = 2
In [glest_game/network/server_interface.cpp::update] hasData == true
In [glest_game/network/server_interface.cpp::update] calling slots[i]->update() for slots[i]->getSocket()->getSocketId() = 19
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 20
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 9
In [glest_game/network/connection_slot.cpp::update] got nmtSynchNetworkGameDataStatus
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 20
In [glest_game/network/connection_slot.cpp::update] client data synch ok
In [glest_game/network/server_interface.cpp::update] calling connectionSlot->getNextMessageType() for slots[i]->getSocket()->getSocketId() = 19
In [shared_lib/sources/platform/posix/socket.cpp::hasDataToRead] select detected data imaxsocket = 19...
In [hasDataToRead] FD_ISSET true for socket 18...
In [shared_lib/sources/platform/posix/socket.cpp::hasDataToRead] socketTriggeredList->size() = 2
In [glest_game/network/server_interface.cpp::update] hasData == true
In [glest_game/network/server_interface.cpp::update] calling slots[i]->update() for slots[i]->getSocket()->getSocketId() = 18
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 20
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 9
In [glest_game/network/connection_slot.cpp::update] got nmtSynchNetworkGameDataStatus
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 20
In [glest_game/network/connection_slot.cpp::update] client data synch ok
In [glest_game/network/server_interface.cpp::update] calling connectionSlot->getNextMessageType() for slots[i]->getSocket()->getSocketId() = 18
In [glest_game/network/connection_slot.cpp::update] accepted new client connection
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 20, bytesSent = 84
In [shared_lib/sources/platform/posix/socket.cpp::hasDataToRead] select detected data imaxsocket = 20...
In [hasDataToRead] FD_ISSET true for socket 20...
In [shared_lib/sources/platform/posix/socket.cpp::hasDataToRead] socketTriggeredList->size() = 3
In [glest_game/network/server_interface.cpp::update] hasData == true
In [glest_game/network/server_interface.cpp::update] calling slots[i]->update() for slots[i]->getSocket()->getSocketId() = 20
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 84
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 1
In [glest_game/network/connection_slot.cpp::update] got nmtIntro
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 84
In [glest_game/network/connection_slot.cpp::update] got name [p60X2]
In [glest_game/network/connection_slot.cpp::update] sending NetworkMessageSynchNetworkGameData
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 20, bytesSent = 788
In [glest_game/network/server_interface.cpp::update] calling connectionSlot->getNextMessageType() for slots[i]->getSocket()->getSocketId() = 20
In [shared_lib/sources/platform/posix/socket.cpp::hasDataToRead] select detected data imaxsocket = 20...
In [hasDataToRead] FD_ISSET true for socket 20...
In [shared_lib/sources/platform/posix/socket.cpp::hasDataToRead] socketTriggeredList->size() = 3
In [glest_game/network/server_interface.cpp::update] hasData == true
In [glest_game/network/server_interface.cpp::update] calling slots[i]->update() for slots[i]->getSocket()->getSocketId() = 20
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 20
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 9
In [glest_game/network/connection_slot.cpp::update] got nmtSynchNetworkGameDataStatus
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 20
In [glest_game/network/connection_slot.cpp::update] client data synch ok
In [glest_game/network/server_interface.cpp::update] calling connectionSlot->getNextMessageType() for slots[i]->getSocket()->getSocketId() = 20
In [glest_game/network/server_interface.cpp::broadcastMessage] before sendMessage
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 20, bytesSent = 2066
In [glest_game/network/server_interface.cpp::broadcastMessage] before sendMessage
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 19, bytesSent = 2066
In [glest_game/network/server_interface.cpp::broadcastMessage] before sendMessage
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 18, bytesSent = 2066
In [waitUntilReady] START
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 8
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 3
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 8
In [waitUntilReady] networkMessageType==nmtReady
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 8
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 3
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 8
In [waitUntilReady] networkMessageType==nmtReady
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 8
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 3
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 8
In [waitUntilReady] networkMessageType==nmtReady
In [waitUntilReady] PART B (telling client we are ready!
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 20, bytesSent = 8
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 19, bytesSent = 8
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 18, bytesSent = 8
In [waitUntilReady] END
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 3
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 3
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 3
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 3
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 3
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 3
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 3
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 3
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 3
In [glest_game/network/server_interface.cpp::broadcastMessage] before sendMessage
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 20, bytesSent = 904
In [glest_game/network/server_interface.cpp::broadcastMessage] before sendMessage
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 19, bytesSent = 904
In [glest_game/network/server_interface.cpp::broadcastMessage] before sendMessage
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 18, bytesSent = 904
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 3
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 3
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 3
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 3
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 3
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 3
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 3
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 3
In [shared_lib/sources/platform/posix/socket.cpp::hasDataToRead] select detected data imaxsocket = 20...
In [hasDataToRead] FD_ISSET true for socket 20...
In [shared_lib/sources/platform/posix/socket.cpp::hasDataToRead] socketTriggeredList->size() = 3
In [glest_game/network/server_interface.cpp::update] hasData == true
In [glest_game/network/server_interface.cpp::update] hasData == true
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] START closing socket = 20...
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] END closing socket = -1...
[shared_lib/sources/platform/posix/socket.cpp::isConnected] DISCONNECTED SOCKET error while peeking isconnected socket data, err = -1, errno = 104 [Connection reset by peer]
In [glest_game/network/server_interface.cpp::update] socketTriggeredList[i] = 0
In [glest_game/network/server_interface.cpp::update] slots[i]->getSocket() == NULL
In [glest_game/network/connection_slot.cpp::update] calling close...
In [glest_game/network/connection_slot.cpp::close] START
In [shared_lib/sources/platform/posix/socket.cpp::~Socket] START closing socket = -1...
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] START closing socket = -1...
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] END closing socket = -1...
In [shared_lib/sources/platform/posix/socket.cpp::~Socket] END closing socket = -1...
In [glest_game/network/connection_slot.cpp::close] END
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 2
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 2
In [glest_game/network/server_interface.cpp::broadcastMessage] before removeSlot
In [glest_game/network/server_interface.cpp::removeSlot] START
In [glest_game/network/connection_slot.cpp::~ConnectionSlot] START
In [glest_game/network/connection_slot.cpp::close] START
In [glest_game/network/connection_slot.cpp::close] END
In [glest_game/network/connection_slot.cpp::~ConnectionSlot] END
In [glest_game/network/server_interface.cpp::removeSlot] END
In [glest_game/network/server_interface.cpp::broadcastMessage] before sendMessage
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 19, bytesSent = 904
In [glest_game/network/server_interface.cpp::broadcastMessage] before sendMessage
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 18, bytesSent = 904
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 2
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 2
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 2
In [shared_lib/sources/platform/posix/socket.cpp::hasDataToRead] select detected data imaxsocket = 19...
In [hasDataToRead] FD_ISSET true for socket 19...
In [shared_lib/sources/platform/posix/socket.cpp::hasDataToRead] socketTriggeredList->size() = 2
In [glest_game/network/server_interface.cpp::update] hasData == true
In [glest_game/network/server_interface.cpp::update] hasData == true
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] START closing socket = 19...
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] END closing socket = -1...
[shared_lib/sources/platform/posix/socket.cpp::isConnected] DISCONNECTED SOCKET error while peeking isconnected socket data, err = -1, errno = 104 [Connection reset by peer]
In [glest_game/network/server_interface.cpp::update] socketTriggeredList[i] = 0
In [glest_game/network/server_interface.cpp::update] slots[i]->getSocket() == NULL
In [glest_game/network/connection_slot.cpp::update] calling close...
In [glest_game/network/connection_slot.cpp::close] START
In [shared_lib/sources/platform/posix/socket.cpp::~Socket] START closing socket = -1...
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] START closing socket = -1...
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] END closing socket = -1...
In [shared_lib/sources/platform/posix/socket.cpp::~Socket] END closing socket = -1...
In [glest_game/network/connection_slot.cpp::close] END
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [shared_lib/sources/platform/posix/socket.cpp::hasDataToRead] select detected data imaxsocket = 18...
In [hasDataToRead] FD_ISSET true for socket 18...
In [shared_lib/sources/platform/posix/socket.cpp::hasDataToRead] socketTriggeredList->size() = 1
In [glest_game/network/server_interface.cpp::update] hasData == true
In [glest_game/network/server_interface.cpp::update] hasData == true
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] START closing socket = 18...
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] END closing socket = -1...
[shared_lib/sources/platform/posix/socket.cpp::isConnected] DISCONNECTED SOCKET error while peeking isconnected socket data, err = -1, errno = 104 [Connection reset by peer]
In [glest_game/network/server_interface.cpp::update] socketTriggeredList[i] = 0
In [glest_game/network/server_interface.cpp::update] slots[i]->getSocket() == NULL
In [glest_game/network/connection_slot.cpp::update] calling close...
In [glest_game/network/connection_slot.cpp::close] START
In [shared_lib/sources/platform/posix/socket.cpp::~Socket] START closing socket = -1...
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] START closing socket = -1...
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] END closing socket = -1...
In [shared_lib/sources/platform/posix/socket.cpp::~Socket] END closing socket = -1...
In [glest_game/network/connection_slot.cpp::close] END
In [glest_game/network/server_interface.cpp::broadcastMessage] before removeSlot
In [glest_game/network/server_interface.cpp::removeSlot] START
In [glest_game/network/connection_slot.cpp::~ConnectionSlot] START
In [glest_game/network/connection_slot.cpp::close] START
In [glest_game/network/connection_slot.cpp::close] END
In [glest_game/network/connection_slot.cpp::~ConnectionSlot] END
In [glest_game/network/server_interface.cpp::removeSlot] END
In [glest_game/network/server_interface.cpp::broadcastMessage] before removeSlot
In [glest_game/network/server_interface.cpp::removeSlot] START
In [glest_game/network/connection_slot.cpp::~ConnectionSlot] START
In [glest_game/network/connection_slot.cpp::close] START
In [glest_game/network/connection_slot.cpp::close] END
In [glest_game/network/connection_slot.cpp::~ConnectionSlot] END
In [glest_game/network/server_interface.cpp::removeSlot] END
-
These issues have not really been resolved. Glest3.2.4beta1 when will this release, we need a real glest3.2.4beta1, Thanks!
-
Ok I "think" I found the start crash issue (random crash just when client games are about to start.
Updates at:
mega glest - http://soft-haus.com/glest/code/megaglest-source-3.2.4-beta1.7z (http://soft-haus.com/glest/code/megaglest-source-3.2.4-beta1.7z)
regular glest patch - http://soft-haus.com/glest/code/glest_patch_2010_jan_24.diff (http://soft-haus.com/glest/code/glest_patch_2010_jan_24.diff)
-
glest 3.2.4beta1 error started to have:
In [shared_lib / sources / platform / posix / socket.cpp:: ~ Socket] START closing socket = 10 ...
In [shared_lib / sources / platform / posix / socket.cpp:: disconnectSocket] START closing socket = 10 ...
In [shared_lib / sources / platform / posix / socket.cpp:: disconnectSocket] END closing socket = -1 ...
In [shared_lib / sources / platform / posix / socket.cpp:: ~ Socket] END closing socket = -1 ...
# 2 Error connecting socket for IP: 192.168.1.102 for Port: 61357 err = -1 errno = 115 [Operation now in progress] EINPROGRESS in connect () - selecting
I click "join game" button to add the game to Versus, when to end a battle, press "return" button to return to the game main menu when the game came straight out, just this time could not move my mouse pointer , you can tell me why? Please answer me, thank you!
By the way: This is the latest version of the beta1 errors generated!
-
@softcoder: I can test it this evening ( currently at work ...).
One thing, can you try to keep the versions separated ( beta2/beta3 ..... ) and set it in the game too? This would be great and helps everyone to know what he tested exactly. You will get more version related error reports with this!
( ingame versions numbers are set in source/glest_game/facilities/game_util.cpp )
-
click "join game" button to add the game to Versus, when to end a battle, press "return" button to return to the game main menu when the game came straight out, just this time could not move my mouse pointer , you can tell me why? Please answer me, thank you!
By the way: This is the latest version of the beta1 errors generated!
-
Test result for the last beta:
Good!:
- We played a four player game without problems!!! Very stable, very fast. ( but we only played one 4 player game yet )
- We played another 2 player vs 1 CPU-Mega game without any problems
Problems we found:
- connection order is random, you never know which slot will be yours. ( first connect should be first open slot, 2 connect second slot .... Or much better but new server can configure the player/slots )
- server crashes when chatting with one player connected and one additional slot open.
- if clients connects and disconnects with one 2 open slots server crashes.
- This very good new counter (when a game starts and you have to wait for the slowest machine) only works on the server, clients always show 0.
I think errors are very clear so logfiles are not needed in this case.
-
We didn't test anything yet because the kids should not play computer the whole day ;).
Jeeze, and I thought you were a decent guy up till now... :D
-
;D ;D
-
All reported problems reproduced and patched:
Updates at:
mega glest - http://soft-haus.com/glest/code/megaglest-source-3.2.4-beta1.7z (http://soft-haus.com/glest/code/megaglest-source-3.2.4-beta1.7z)
regular glest patch - http://soft-haus.com/glest/code/glest_patch_2010_jan_25.diff (http://soft-haus.com/glest/code/glest_patch_2010_jan_25.diff)
I won't be looking at any new features until we get the networking stuff solid first, so everyone let me know how this version works out.
-
Test results:
The gaming itself was stable and non choppy again, chatting and so on worked fine.
But there is still trouble with the connect menu:
- connect to a non exsiting server ( any ip where no glest is running ) :
Game freezes for some seconds and comes back. If you now press the "return" button glest client crashes
- server opens with more than 1 open slot
client connects/disconnects several times -> server crash
- clients still connect to any open slot, not the first one ( top down order )
( Please give the clients new version numbers today we already get mixed up with the different glest3.2.4_beta1 versions .... )
-
Strange, I am not able to reproduce the following:
- connect to a non exsiting server ( any ip where no glest is running ) :
Game freezes for some seconds and comes back. If you now press the "return" button glest client crashes
- server opens with more than 1 open slot
client connects/disconnects several times -> server crash
- clients still connect to any open slot, not the first one ( top down order )
I will try (and get the boys to try)
Are you saying each change I make you want me to give the build a new name? If so would I call it 3.2.4 beta2, then beta 3 etc?
( Please give the clients new version numbers today we already get mixed up with the different glest3.2.4_beta1 versions .... )
Thanks
-
You don't get all these errors?
Strange, I am not able to reproduce the following:
- connect to a non exsiting server ( any ip where no glest is running ) :
Game freezes for some seconds and comes back. If you now press the "return" button glest client crashes
- server opens with more than 1 open slot
client connects/disconnects several times -> server crash
- clients still connect to any open slot, not the first one ( top down order )
I will try (and get the boys to try)
Maybe I used the wrong version?
Are you saying each change I make you want me to give the build a new name? If so would I call it 3.2.4 beta2, then beta 3 etc?
( Please give the clients new version numbers today we already get mixed up with the different glest3.2.4_beta1 versions .... )
Thanks
yes, every version a new number! Maybe the bugs i found are a result of this version trouble?
I download again and try it....
Update:
More infos for the the first error:
My server usually runs at 172.20.100.103 , but today he got the 172.20.100.104 from the DHCP server. So we tried to contact the 103.
after trying to connect the game feezes ( or is extremly slow ) and when you press the return button on the client after this, it crashes. Reproducable every time here.
the log of the client( first I successfully connected to 103 )
#2 Error connecting socket for IP: 172.20.100.103 for Port: 61357 err = -1 errno = 115 [Operation now in progress]EINPROGRESS in connect() - selec
ting
Apparent recovery for connection sock = 15, err = 1, errno = 0
Valid recovery for connection sock = 15, err = 1, errno = 0
#2 Error connecting socket for IP: 172.20.100.104 for Port: 61357 err = -1 errno = 115 [Operation now in progress]EINPROGRESS in connect() - selec
ting
In [glest_game/main/program.cpp::setState] START
In [glest_game/main/program.cpp::setState] A
In [glest_game/main/program.cpp::setState] B
In [glest_game/main/program.cpp::setState] C
In [glest_game/main/program.cpp::setState] END
In [glest_game/main/program.cpp::setState] START
In [glest_game/main/program.cpp::setState] A
In [glest_game/main/program.cpp::setState] B
In [glest_game/main/program.cpp::setState] C
In [glest_game/main/program.cpp::setState] END
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 84
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 1
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 84
In [glest_game/network/client_interface.cpp::updateLobby] got NetworkMessageIntro
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 15, bytesSent = 84
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 15, bytesSent = 130
In [glest_game/network/client_interface.cpp::close] START
In [shared_lib/sources/platform/posix/socket.cpp::~Socket] START closing socket = 15...
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] START closing socket = 15...
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] END closing socket = -1...
In [shared_lib/sources/platform/posix/socket.cpp::~Socket] END closing socket = -1...
Couldn't process event: Error in delayed connection() 113 - No route to host
(Error: Operation now in progress)
Restarting audio source because of buffer underrun.
Update2:
I forgot to mention, I used the megaglest package.
-
Concerning version numbering, I admit that I think that a new number should only be version, including minor, should only be used for at least one new or changed feature. I can't help but feel that bug fixes should either be a micro number (a forth one, like 3.2.2.x) or a letter (like how GAE did: 0.2.12b).
Of course, the choice is yours and its not too big of a deal. On the other hand, if a bug is major, or there was a lot of changes, perhaps a minor (or sub [2nd] number is needed).
This might be interesting: http://en.wikipedia.org/wiki/Software_versioning
-
Updates at:
mega glest - http://soft-haus.com/glest/code/megaglest-source-3.2.4-1-beta1.7z (http://soft-haus.com/glest/code/megaglest-source-3.2.4-1-beta1.7z)
regular glest patch - http://soft-haus.com/glest/code/glest_patch_2010_jan_27.diff (http://soft-haus.com/glest/code/glest_patch_2010_jan_27.diff)
Thanks
-
Looks good! I didn't find any more problems at the moment!
Now lets test a bit with online gaming...
Everyone who reads this, lets test the new megaglest!
What do you need to have a compatible/playable version?
The Binary:
Here is the official binary release for for this test ( currently linux32 only ):
http://www.titusgames.de/megaglest3.2.4-1-beta1_i386_linux_bin.tar.bz2
The Data:
Lets simply start with the official glest data from glest 3.2.2:
( best way to get it is installing glest 3.2.2 with this installer: http://www.liflg.org/?catid=6&gameid=87)
At 9:00 AM boardtime we meet in the irc
http://webchat.freenode.net/?channels=glest
-
The Binary:
Here is the official binary release for for this test ( currently linux32 only ):
http://www.titusgames.de/megaglest3.2.4-1-beta1_i386_linux_bin.tar.bz2
It only works in Linux ??? >:( >:(
-
I have no working windows here and I cannot build windows binaries. I think you have to wait.
I think both developers are using linux so this is the focussed platfom for the moment, but there will be windows binaries available if everything works ( or someone builds them )
-
First online result, an ingame crash :'( :
The client crashed while playing
last lines of the client log:
...
In [glest_game/network/network_message.cpp::receive] dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 904
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] START closing socket = 18...
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] END closing socket = -1...
[shared_lib/sources/platform/posix/socket.cpp::isConnected] DISCONNECTED SOCKET error while peeking isconnected socket data, err = 0, errno = 11 [Resource temporarily unavailable]
Exception: Disconnected
Game
World
Minimap
Tech tree
Tileset
Cells
the server ( I hope I got the important part ):
...
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 16, bytesSent = 904
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [shared_lib/sources/platform/posix/socket.cpp::hasDataToRead] select detected data imaxsocket = 16...
In [hasDataToRead] FD_ISSET true for socket 16...
In [shared_lib/sources/platform/posix/socket.cpp::hasDataToRead] socketTriggeredList->size() = 1
In [glest_game/network/server_interface.cpp::update] hasData == true
In [glest_game/network/server_interface.cpp::update] hasData == true
In [glest_game/network/server_interface.cpp::update] socketTriggeredList[i] = 1
In [glest_game/network/server_interface.cpp::update] calling slots[i]->update() for slots[i]->getSocket()->getSocketId() = 16
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/connection_slot.cpp::update] got nmtCommandList
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 904
In [glest_game/network/server_interface.cpp::update] calling connectionSlot->getNextMessageType() for slots[i]->getSocket()->getSocketId() = 16
In [glest_game/network/server_interface.cpp::broadcastMessage] before sendMessage
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 16, bytesSent = 904
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
...
...
In [glest_game/network/server_interface.cpp::broadcastMessage] before sendMessage
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 16, bytesSent = 904
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::broadcastMessage] before sendMessage
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 16, bytesSent = 904
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::broadcastMessage] before sendMessage
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 16, bytesSent = 904
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::broadcastMessage] before sendMessage
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 16, bytesSent = 904
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::broadcastMessage] before sendMessage
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 16, bytesSent = 904
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::broadcastMessage] #1 before removeSlot for slot# 3
In [glest_game/network/server_interface.cpp::removeSlot] START
In [glest_game/network/connection_slot.cpp::~ConnectionSlot] START
In [glest_game/network/connection_slot.cpp::close] START
In [shared_lib/sources/platform/posix/socket.cpp::~Socket] START closing socket = 16...
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] START closing socket = 16...
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] END closing socket = -1...
In [shared_lib/sources/platform/posix/socket.cpp::~Socket] END closing socket = -1...
In [glest_game/network/connection_slot.cpp::close] END
In [glest_game/network/connection_slot.cpp::~ConnectionSlot] END
In [glest_game/network/server_interface.cpp::removeSlot] END
-
Updates at:
mega glest - http://soft-haus.com/glest/code/megaglest-source-3.2.4-2-beta1.7z (http://soft-haus.com/glest/code/megaglest-source-3.2.4-2-beta1.7z)
regular glest patch - http://soft-haus.com/glest/code/glest_patch_2010_jan_27-1.diff (http://soft-haus.com/glest/code/glest_patch_2010_jan_27-1.diff)
Thanks
P.S. many of these bugs are from original glest network code but are showing up since the network code runs faster.
-
If anyone has time to test come to the irc, I'm online for the next 2 hours!
http://webchat.freenode.net/?channels=glest
the current binary:
A.) http://www.titusgames.de/megaglest3.2.4-1-beta1_i386_linux_bin.tar.bz2
B.) http://www.titusgames.de/glest_3.2.4-2-beta1_i386_linux.7z
download A) and replace glest.bin with the one from B) . ( I currently have problems with uploading thats why it is a bit complicated )
( I also learned today that i have to add more libs to a binary distribution they are included in A) now. Thanks PolitikerNeu )
-
Feedback: No problems this time! We had an online two player game without problems and a very smooth gameplay!
I hope I will find some more players to test it, please come to play ....
-
At 9:00 AM boardtime we meet in the irc [/glow]
BTW: What is 'board time'? Is it UTC?
-
I dont know...
But I'm there now for the next 2 hours.
-
I'll try to get a Windows binary compiled using my VirtualBox XP Image once we verify that the network code is working (all changes are also in the windows code so it should be easy to produce a working binary).
P.S. sorry Titi we cannot help with testing today as I am working (PST is our timezone)
-
ok :'( one day we will mange to play together ( on a weekend maybe ).
Building abinary is possible with virtual PC, but Is multiplayer also possible with virtual PC? Its not wine , so maybe it works because it works completly different ???
But I'm shure if we( or more you in this case ) come up with something worth building, silnarm will quickly build a binary too !
-
Actually it "should" be possible to build using linux and mingw. I am able to use codeblocks to compile a tool I wrote for my router that compiles to my routers linux (busybox - Tomato firmware), ubuntu and windows.
-
If you make four people online play, will result in server-side or client-side crash??
-
Currently it results in NO CRASH , thats whats it all about!
-
Find a new BUG:
In the non-networking mode, and I carried out the computer's AI Battle to the first 15 minutes, I was ready to press the ESC key to exit the game, but the game does not quit! I would like to ask you: do you also find this issue at this issue How do I fix it???
-
Hi Guys.
I briefly tried to compile the megaglest 3.2.4 package on windows earlier this evening, I introduced a few typedefs and two defines to get rid of most of the problems, but I wanted to test something, so I've left it for the moment. I'm happy to save you the trouble of setting up a windows build for Code::Blocks, but it may have to wait until the weekend.
I believe I have found the ultimate cause of the problems with online play though. Hailstone wants some sort of stable multiplayer for GAE 0.2.13, and with Daniel MIA again, he has set about reverting our multiplayer code to that of 3.2.2 for the time being. We have a problem though, clients are lagging badly, getting worse and worse as the gmae continues, while more keyframe updates arrive, until the socket's buffer is full and it rejects new data and the server disconnects it.
This is not nice news for us, I'm confident we'll find the problem, but for now it alludes us, however it is something of a blessing in disguise... In looking at this problem I've had a good look around the client/server interfaces and how they work with the game.
For online play with TCP, the client(s) are doomed to experience some lag, unavoidable. However, the game never stops... The server never waits for clients once the game has begun, if a client arrives at a keyframe and it hasn't received the update for that keyframe then it waits. On the server, the game continues, 'flat chat'. On a local network this is unlikely to be a problem, but once we send our packets out 'into the wild', there will be losses, TCP will sort it out for us, and deliver it all in the right order, but clients will start to lag.
The more problems 'along the way' the further it will lag, the worse the game experience will be for the client, and eventually the socket's buffer will fill, and disconnection will follow.
I can't absolutely confirm now, I was just trying to test a modified glest 3.2.2 (just logging the amount of data remaining to be read on the client after processing a key frame) with PolitikerNEU but we had router/firewall issues. But the code says what the code says, the server does not wait (ever), and the client occasionally does wait, it can only ever be the same or get worse, never better.
Two solutions are feasible, 'server wait' and/or 'client catch-up', ultimately I think both is ideal, but for now giving the server a maximum 'lead time' and requiring 'Acks' from clients for each keyframe, and the server pausing if it doesn't have acks from all clients for, say, 3 or 4 key frames before where the server is at (subject to a timeout and potential player ejection of course).
This would be the easiest, and while it may result in choppy play sometimes, it should prevent any clients falling so far behind that they end up will a full buffer and disconnection.
I think with what you have done so far, and a little bit of logic to make the server a little more polite, this could all turn out very well indeed ;D
Hope to get some good testing time in this weekend, IRC folks! ;)
-
What you say is totally true. However I disagree with the solution. My phase #1 approach at changing the code is just an attempt to properly understand the network code. I have already posted about the frame issue as a problem in previous posts. The goal for now was to try to get the existing code to work "better" so that multiplayer has greater potential in the short term.
With that said I believe a better approach for the long term (which many other games use) is to run the whole network engine in background threads on both client and server (and thus avoid choppy GUI) and from those threads we would be able to better synch network packets in the GUI. Each packet ALREADY carries the frame # which is essential, and we could have the threads queue up the data and pass it to the GUI at the right time in both server and clients. This is what I had previously called phase #2 which would ultimately remove the synch problem for good and open the door for perhaps > 4 player in the future.
I have already experimented with enet (a common network engine used in games written by one of the authors I know who works on Sauerbraten) but it is of no use for phase #1 do to its design.
Thanks
-
Some thoughts ( maybe not correct ):
Silnarm wrotes that the client sends messages to the server for every keyframe. I think thats not true,
its not frames, its something different, call it network frames which represent a bunch of game frames.
And you are right the server continues no matter what happens, but the clients have to wait if the server package is missing. If the clients doesn't receive the things fast enough its maybe a solution to rise the network framesize dynamically. By this the reaction for commands will be delayed a bit more, but the game doesn't get choppy . I think this is a solution for very bad connections with big ping times.
Rising and lowering these network framesizes is something that should be done by the server, but the info if rising/lowering is needed is something only the clients know. So they probably have to inform the server about their receive "times" based to the moment where the infos are needed.
A typical client info would be:
received commands 0.10 seconds before needed ( -10 )
or
received commands 0.05 seconds too late ( 5 )
Based on these infos the server can calculate the best network framesize which is send to the clients with the next command package.
====================
By the way, we played another 4 player local LAN game without any problems!
-
Regardless of the solution it will be very important to separate network communication into threads (both on server and client). Otherwise we have major problems related to FPS on each computer playing a network game, which will slow down the network transmit rates AND the network connection will also add additional problems if the connection is slower.
By creating threads we can manage the congestion in a separate manner from the UI. Things still need to be synchronized, but how we do it can be less visible to each system as we handle it in the threads.
This needs to be carefully planned and designed well to take glest to the next level for multi-player features.
Recap:
The current network code slows down the FPS AND the FPS will slow down the network communication. This connection needs to be addressed.
Thanks
-
crash again :'( :'(
client crashed in an onlinegame:
...
In [glest_game/network/network_message.cpp::receive] dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 92
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 92
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] socket->getDataToRead() returned 92
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 590
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 590
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] socket->getDataToRead() returned 590
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 1808
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 1808
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 904
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] START closing socket = 18...
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] END closing socket = -1...
[shared_lib/sources/platform/posix/socket.cpp::isConnected] DISCONNECTED SOCKET error while peeking isconnected socket data, err = 0, errno = 11 [Resource temporarily unavailable]
Exception: Disconnected
Game
World
Minimap
Tech tree
Tileset
Cells
server:
...
In [glest_game/network/server_interface.cpp::broadcastMessage] before sendMessage
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 16, bytesSent = 904
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::broadcastMessage] before sendMessage
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 16, bytesSent = 904
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [shared_lib/sources/platform/posix/socket.cpp::hasDataToRead] select detected data imaxsocket = 16...
In [hasDataToRead] FD_ISSET true for socket 16...
In [shared_lib/sources/platform/posix/socket.cpp::hasDataToRead] socketTriggeredList->size() = 1
In [glest_game/network/server_interface.cpp::update] hasData == true
In [glest_game/network/server_interface.cpp::update] hasData == true
In [glest_game/network/server_interface.cpp::update] socketTriggeredList[i] = 1
In [glest_game/network/server_interface.cpp::update] calling slots[i]->update() for slots[i]->getSocket()->getSocketId() = 16
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/connection_slot.cpp::update] got nmtCommandList
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 904
In [glest_game/network/server_interface.cpp::update] calling connectionSlot->getNextMessageType() for slots[i]->getSocket()->getSocketId() = 16
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::broadcastMessage] before sendMessage
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 16, bytesSent = 904
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::update] socketTriggeredList.size() = 1
In [glest_game/network/server_interface.cpp::broadcastMessage] before sendMessage
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 16, bytesSent = 904
....
-
Regardless of the solution it will be very important to separate network communication into threads (both on server and client). Otherwise we have major problems related to FPS on each computer playing a network game, which will slow down the network transmit rates AND the network connection will also add additional problems if the connection is slower.
While I agree that running the network code in its own thread is a very good idea, and will indeed help, perhaps to the point where > 4 players is feasible on a LAN, it in no way addresses the lag problem for online play. When playing over the internet, there will be packet loss, there will be delays. If the client doesn't try to catch up when the pipes unclog, or the server wait for client acknowledgements, the client will fall further behind. As I mentioned, this is a 'one way street' currently.
If a network thread is reading all messages as they arrive, this will solve the disconnection problem when/if the socket's buffer fills, but by this time the client will be (assuming an 8Kb buffer) 10 keyframes (100 frames, ~2.5 sec) behind + the usual network delay. The game will be 'unplayable'.
-
My mistake on the crash, one line of code used the wrong variable, a fix will be ready shortly.
-
Updates at:
mega glest - http://soft-haus.com/glest/code/megaglest-source-3.2.4-3-beta1.7z (http://soft-haus.com/glest/code/megaglest-source-3.2.4-3-beta1.7z)
regular glest patch - http://soft-haus.com/glest/code/glest_patch_2010_jan_28.diff (http://soft-haus.com/glest/code/glest_patch_2010_jan_28.diff)
Thanks
(the only change was one line of code to socket.cpp for posix and windows)
-
Hello silnarm:
In reply to your post about network congestion. In general if a client cannot AT LEAST keep up to the # packets generated each "group" of FPS then they cannot play. I think we could use something like Titi mentioned, an algorithm that the server could calculate to determine if the client will be able to play or not.
The threading would help in many cases since it would allow for clients to "catch up" without creating choppiness (at least I believe there is a way). This would only work in the case where clients have a good enough pipe on their network connection. You need:
1) good enough FPS (video card has something to do with that)
2) good enough network connection / traffic should be reasonably low
and... we should make sure the network packet sizes used in glest are absolute minimum so as to not require to much chattiness over the network.
Anyways more discussion once we get the current situation reasonably under control. We may hit a threshold that we cannot do better with the current framework, but as of yet that is not the case.
Thanks
-
root@tom:/usr/local/games/glest# ./glest.bin
#2 Error connecting socket for IP: 192.168.1.3 for Port: 61357 err = -1 errno = 115 [Operation now in progress]EINPROGRESS in connect() - selecting
Please tell me how to solve this problem?? Thanks
By the way: I use the operating system is: ubuntu8.10
-
Tom, where did you get glest.bin from, the auto-installer built into Ubuntu? If so you need to build your own version to get the fixes we have been implementing until someone is able to produce a binary for Ubuntu 8.10
Thanks
-
Hello, softcoder, I am now using the same version you have!
I first of all from this address: http://www.liflg.org/?catid=6&gameid=87 download and install glest.3.2.2.bin. And then use your offer megaglest3.2.4-1-beta1, conducting LAN Battle, when such problems!
By the way: you can test connectivity when using the client side, the problem occurs! I installed the game up like this: I am in a terminal implementation of the. / Glest.bin
My game is installed in / usr / local / glest /
My brother also used the same method to install! My brother use systems are also ubuntu8.10
I forgot to tell you, you provide the code inside an already-compiled binaries, I now use is this!
I hope you can resolve the problems, thank you!
-
There is this question: In the non-networking mode, and I carried out the computer's AI Battle to the first 15 minutes, I was ready to press the ESC key to exit the game, but the game does not quit!
Please amend this bug! Thank you!
-
My mistake, Glest does in fact already do 'client catch-up'. You won't find it in the networking code anywhere, it is built into the main loop (and the timers it uses, specifically). If it doesn't get 40 frames in per second, it will get them in sometime later. GAE was not always catching up, hence our problems.
On another note,
//delay the start a bit, so clients have nore room to get messages
sleep(GameConstants::networkExtraLatency);
Have you experimented with lowering this? 200 ms seems seems to me like it may be excessive, there is the normal network delay aswell (from the ready message from the server), this delay will 'scale' naturally with the connection type, on a LAN a delay of even 10 ms will probably suffice, and lead to a much more responsive experience for the clients, most of their commands will come back on the very next keyframe, rather than two keyframes into the future (as seems typical from my testing).
Probably a better number might be 50 ms, even over the net I think this may be sufficient, with the natural delay added in.
Cheers.
-
Thats exactly what I talked about, but this number is ideally not fixed but calculated and dynamically in the game.
For online gaming USA/Germany maybe a number of 500ms is better, but in local LAN you want 30ms.....
But that's future stuff.
Just want to mention that there is also another mechanism what glest does to catch up if something took too long. It simply speeds the game up dramatically for a second! I think this is not only used in multiplayer but in singleplayer too.
By the way, I think there is an error in the current glest with this mechanism. I often saw this on slow machines for myself where glest suddenly speeds up ( because something was too slow I think ) but then it stays in ultra speed and doesn't returns to normal speed...
I think this is the reason for posts like these for example:
https://forum.megaglest.org/index.php?topic=4896.0
https://forum.megaglest.org/index.php?topic=3934.0
https://forum.megaglest.org/index.php?topic=4404.0
-
Just want to mention that there is also another mechanism what glest does to catch up if something took too long. It simply speeds the game up dramatically for a second! I think this is not only used in multiplayer but in singleplayer too.
By the way, I think there is an error in the current glest with this mechanism. I often saw this on slow machines for myself where glest suddenly speeds up ( because something was too slow I think ) but then it stays in ultra speed and doesn't returns to normal speed...
I think this is the reason for posts like these for example:
Yeah, it's the same mechanism that keeps multiplayer clients at (or about) the same delay the game started at. It's Program::updateTimer that does this, the game runs at set speed in frames (subject to game speed of course) and it will never change that number, if it doesn't process that number in any given second, any additional frames will be 'queued and ready to go'. When/if whatever was holding the system up goes away, the game will go into super speed to catch up, single or multi player.
-
Tom: I don't see the ESC problem you are talking about in my version of Glest (does anyone else see it?)
Titi: Is the network code working well? I suppose we'll need some testing for at least a couple days?
Silnarm / Titi: Thanks for the info about the slowdown and speed up, I did not know what they were there for.
P.S. I'm making good progress in building a CodeBlocks project to cross compile mega glest in ubuntu to produce a Win32 binary.
-
1. No, I donn't know what Tom is talking about
2. Yes I think we should test a couple of days. The current state should be the next release( after testing of course ). So no new features yet, just focussing on making it stable.
( I didn't test yet, I'm still at work, but I its nearly weekend !)
-
Current linux binary with ( hopefully ) all libs. See included readme.txt too .
https://sourceforge.net/projects/megaglest/files/megaglest3.2.4-3-beta1_i386_linux_bin.tar.bz2
Please tell me if any libs are missing for you!
-
more crashs :(
( megaglest3.2.4-3-beta1 )
logs are here:
http://www.titusgames.de/crash_logs.tar.bz2
This was a 4 player game with 2 crashs....
client 3 was an online player
client 1 and 2 and server are from local LAN
What happened?
first crash:
Client 3 crashed shortly after the game starts ( but not a full crash, glest window disappears and ther was a glest.bin running in the process list )
second crash:
The other players played to the end. When the end was reached, one clients decided to quit, but the other one was still in the game ( with message "You lost" ). This crashed the client which was still in the game.
-
verified the problems( first crash ) again:
Last words of a client ( which not complelty crashes but has no more window:
....
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 1402
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 1402
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 498
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 498
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] socket->getDataToRead() returned 498
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 1808
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 1808
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 1808
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 1808
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 904
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 904
In [shared_lib/sources/platform/posix/socket.cpp::send] sock = 18, bytesSent = 904
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] START closing socket = 18...
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] END closing socket = -1...
[shared_lib/sources/platform/posix/socket.cpp::isConnected] DISCONNECTED SOCKET error while peeking isconnected socket data, err = -1, errno = 104 [Connection reset by peer]
Exception: Disconnected
Game
World
Minimap
Tech tree
Tileset
Cells
-
Ok, the logs helped and I see what the problem is, I'll look into the solution shortly.
-
Hello, softcoder! I am very sorry, making a problem with video card driver!
-
Greetings,
I've been looking at the bandwidth usage and have modified ours to only send actual commands, it is currently sending 64 commands (at 14 bytes each) with every keyframe, obviously this is rather wasteful.
I added some compiler directives to ensure correct packing, but these don't actually appear to be necessary, real world keyframe updates are 902 bytes, which is 6 bytes (for the message type, command count and frame number) + 64 * 14 == 902. So it appears to be packing them correctly anyway... still, I'd recommend adding them,
// in network_types.h
#pragma pack(push, 2)
class NetworkCommand {
// unchanged
};
#pragma pack(pop)
and,
// in network_message.h
#pragma pack(push, 1)
class NetworkMessageCommandList: public NetworkMessage{
// unchanged
};
#pragma pack(pop)
I didn't actually change the NetworkMessageCommandList struct's data at all, it can still hold 64 commands, but it only sends or receives as many as there are...
void NetworkMessageCommandList::send(Socket* socket) const {
assert(data.messageType == NetworkMessageType::COMMAND_LIST);
NetworkMessage::send(socket, &data, 6 + sizeof(NetworkCommand) * data.commandCount);
}
bool NetworkMessageCommandList::receive(Socket* socket) {
// read type, commandCount & frame num first.
if (!NetworkMessage::receive(socket, &data, 6)) {
return false;
}
// read data.commandCount commands.
if (data.commandCount) {
return NetworkMessage::receive(socket, &data.commands, sizeof(NetworkCommand) * data.commandCount);
}
return true;
}
The end result is of course a significant reduction in the typical size of a Command-list over the network (from 902 down to 6 bytes if no commands are sent, a not uncommon situation).
Ps: I ran a brief experiment with lowering the 'networkExtraLatency' ... It didn't go well ;)
-
Updates at:
mega glest - http://soft-haus.com/glest/code/megaglest-source-3.2.4-4-beta1.7z (http://soft-haus.com/glest/code/megaglest-source-3.2.4-4-beta1.7z)
regular glest patch - http://soft-haus.com/glest/code/glest_patch_2010_jan_30.diff (http://soft-haus.com/glest/code/glest_patch_2010_jan_30.diff)
This update (hopefully) fixes the disconnect issue found by Titi and also adds Silnarms contribution to cut down on network cholesterol :)
Thanks
P.S. Its time we got mega-glest in svn somewhere to make this a little easier.
-
its already in svn
http://sourceforge.net/projects/megaglest/
Do you want access?
-
Yes please I'd like to have access.
P.S. I made a new resource type (which will be included in the next update) called:
static_no_recoup_cost
It is EXACTLY like static except when a Unit dies that requires a static_no_recoup_cost resource as its cost, it WILL NOT recoup the cost of the resource as it does with static.
This allows my son to create fish and coin resources for his tech's and when the unit dies associated with the resource then it doesn't add the resource back.
Let me know if the new network changes work well now?
Thanks
-
Hello, softcoder!
I hope this version can be very stable, thank you, please continue to work!
-
@softcoder:
I didn't test the new version yet ( no time ) but I will do!
For the new resource type: I didn't really get whats it good for, please describe it a bit more.
From what I understand now, its simply a ressource that is not consumed by a unit and if the unit dies its given back to the stock. Right?
You have got a new message about SVN access!
update:
Here is the current beta binary release for linux:
https://sourceforge.net/projects/megaglest/files/megaglest3.2.4-4-beta1_i386_linux_bin.tar.bz2/download
-
Hi.titi! What is your version of this test are issued (glest3.2.4-4-beta1) whether it has been stable?
It passed the rigorous testing of your, thank you!
-
Ok the new resource type works like this:
Resource = fish (this is setup to use the new static_no_recoup_cost)
Unit = Fishing Hole
Unit = Penguin
Unit = Fish (hidden unit with height and width of 0)
A penguin costs: 75 gold and 1 fish
#1 A penguin builds a Fishing Hole which costs: 100 gold and 100 wood
#2 The Fishing Hole can produce Fish Units which costs: 100 gold and -7 fish (which adds fish resources to the fish resource count once production of the hidden fish unit is done)
With normal static resources, once the unit (penguin) dies than the resources used to produce it (if the resource is static) are placed back into your resource count. In our case we don't want the resources back but there is no way to stop that otherwise so I created a new type of static resource that will not give back the static resources used to build a Unit when the Unit dies.
Does that make sense?
-
Just my 2 cents worth...
Why not just leave the type as static, and give an option as a sub-element of type, as is done with all the other resource types,
<resource>
<image path="images/fish.bmp"/>
<type value="static">
<recoup_cost value="false"/>
</type>
</resource>
Make it optional, defaulting to 'true' and therefore giving the correct behaviour for any existing static resources.
-
Will do, I am still learning glest, thanks for the pointers.
-
titi, When are you going online?? We need your help!
-
Hi, guys! The following information is game testing information:
root@tom:/usr/local/games/glest# ./glest.bin
In [glest_game/main/program.cpp::setState] START
In [glest_game/main/program.cpp::setState] A
In [glest_game/main/program.cpp::setState] B
In [glest_game/main/program.cpp::setState] C
In [glest_game/main/program.cpp::setState] END
In [glest_game/main/program.cpp::setState] START
In [glest_game/main/program.cpp::setState] A
In [glest_game/main/program.cpp::setState] B
In [glest_game/main/program.cpp::setState] C
In [glest_game/main/program.cpp::setState] END
Restarting audio source because of buffer underrun.
In [glest_game/menu/menu_state_join_game.cpp::mouseClick] START
In [glest_game/menu/menu_state_join_game.cpp::connectToServer] START
In [glest_game/network/client_interface.cpp::connect] START
In [shared_lib/sources/platform/posix/socket.cpp::connect] #2 Error connecting socket for IP: 192.168.1.9 for Port: 61357 err = -1 errno = 115 [Operation now in progress]
In [shared_lib/sources/platform/posix/socket.cpp::connect] EINPROGRESS in connect() - selecting
In [shared_lib/sources/platform/posix/socket.cpp::connect] Error in delayed connection() 113 - [No route to host]
In [shared_lib/sources/platform/posix/socket.cpp::connect] Valid recovery for connection sock = 9, err = 1, errno = 115
In [glest_game/network/client_interface.cpp::connect] END - socket = 9
In [glest_game/menu/menu_state_join_game.cpp::connectToServer] server - [192.168.1.9]
In [glest_game/menu/menu_state_join_game.cpp::connectToServer] END
In [glest_game/menu/menu_state_join_game.cpp::mouseClick] END
[shared_lib/sources/platform/posix/socket.cpp::isWritable] TIMEOUT while selecting socket data, err = 0, errno = 11 [Resource temporarily unavailable]
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] START closing socket = 9...
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] calling shutdown and close for socket = 9...
In [shared_lib/sources/platform/posix/socket.cpp::disconnectSocket] END closing socket = -1...
[shared_lib/sources/platform/posix/socket.cpp::peek] DISCONNECTED SOCKET error while peeking socket data, err = 0, errno = 11 [Resource temporarily unavailable]
By the way: This is the latest test version (glest3.2.4-4-beta1) Test Information:
-
We got another crash, but I think this is simply a timeout due to a very bad connection
(the crashed player played glest with a Asus EEPC and a very unstable internet connection)
Client log:
...
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 24
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 24
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 6
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 18
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 18
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 6
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 12
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 12
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 6
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 6
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() dataSize = 6
In [glest_game/network/network_interface.cpp::getNextMessageType] socket->getDataToRead() iPeek = 1, messageType = 5
In [glest_game/network/network_interface.cpp::receiveMessage]
In [glest_game/network/network_message.cpp::receive] dataSize = 6
Exception: Timeout waiting for message
Game
World
Minimap
Tech tree
Tileset
Cells
server log is here:
http://www.titusgames.de/glest.log.7z
-
Yes, for that error to occur means the client got nothing on their network connection for > 10 seconds. ANY client that has a connection that awful would have no chance to play Glest in its current state. I noticed no problems on the server, which confirms that this client's connection must have been the likely cause. I think our latest changes with Silnarm's packet fix should make things a lot more stable than ever. We need people to continue testing and posting any logs if issues arise.
Thanks
-
Tom, your error:
In [shared_lib/sources/platform/posix/socket.cpp::connect] Error in delayed connection() 113 - [No route to host]
tells me that you have a network problem. Either you entered the wrong server IP Address for where the glest server is running or your network had routing problems. To test, try issuing the following command from the client computer from a command prompt:
telnet 192.168.1.9 61357
BEFORE running this command from a command prompt, setup your glest server so that it is ready to receive client connections. Does this telnet command successfully connect to the glest server?
Thanks
-
Use the command can be connected to the glest server: telnet 192.168.1.9 61357
But still this error prompt: In [shared_lib / sources / platform / posix / socket.cpp:: connect] # 2 Error connecting socket for IP: 192.168.1.9 for Port: 61357 err = -1 errno = 115 [Operation now in progress]
I was inside the firewall to open port 61357. Later, I put the system completely shut down the firewall!
Please help me, thanks!
-
Please help me!
-
Please help me!
-
By the way: server and client can be a normal connection on!
-
Stop spamming this thread! Its not our job to fix your network problem! >:(
-
@softcoder:
Errorhandling....
This 10 second timeout problem is really a reason to quit the connection but the errorhandling in this context is a bit strange.
Exit/Crash is not that funny. I didn't looked into the code yet, but isn't it possible to give an errormessage for the user and quit back to the menus on the client?
I don't know how much trouble it is to integrate something like this now, but it should be done some day ( not only for this error ) ...
Ideally the other players ( especially the server and maybe the clients one day too ) should be informed about quitting clients!
Maybe the chat system can be used for that, but I think this is a future feature.
There are other error messages which should be shown to the user too without crashing like
- inactive FogOfWar is not allowed in Multiplayer
- inkompatibel Versions ( of Client And Server )
- inkompatible Data
I know errorhandling in current glest is exit(-1) or worse ....
What do you think about this?
-
Yes, eventually I'll try to display messages for errors and keep the game running for things like socket errors, etc. I ALREADY added a chat message to ALL connected players when a player quits the game (you should notice it when a player disconnects). I also already have the code in place for FogOfWar, version and data checking... its just disabled right now until we make sure the network code is working well, then I will have time to test the other code.
Thanks
-
Now I saw the "player quits game" message :). Thats good!
A little problem:
We played 2 bigger games today in local LAN (Because I couldn't find any online players to test :( ).
Both ended without a crash, but we had a different problem in one game:
It was a two player vs Cpu+CpuMega game.
In the end of the game we had really lots of units and the CPU-Players too. Suddenly the game was choppy on the client computer and it stayed this kind of choppy to the end of the game. It looked like the ultra-speed-problem which I already described some posts earlier. I think it was only possible to finish the game properly, because the client always waits for the next command round by the server.
I'm not quite shure what happened exactly, because it was the computer of my son who had those problems and he didn't remebered what happend exactly. In addition I accidently lost both logfiles :( from server and client, because we simply started a new game before saving it.
-
more network errors:
1.
Attention, be ready to give a kill -9 from a console with this bug! It fills the harddisk with a huge logfile!
My local Lans has ip-range is 172.20.100.x .
Now if glest trys to connect to a server ip inside this LAN everything is fine. When there is a server with open slots it connects, If there is no such server, it freezes a second but it doesn't connect.
Try the same thing with an IP which is not in your local LAN ( I tried one of tom123s IPs to reproduce his errors )
I tried it with 192.168.1.12 ( there is no server running ). Glest freezes like before, but then it suddenly says "connected to server".
when you now click on anything or you try to chat with the server glest somehow freezes and start to write a huge logfile and doesn't stop until the process is killed with "kill -9" .
2.
Some setup as before, I tried to connect to a foreign IP:
it freezes, it gets choppy and said connected to server, but I did nothing after this. 2 minutes later it crashed. I couldn't reproduce it, but here is the logfile:
In [shared_lib/sources/platform/posix/socket.cpp::connect] #2 Error connecting socket for IP: 192.168.1.12 for Port: 61357 err = -1 errno = 115 [Operation now in progress]
In [shared_lib/sources/platform/posix/socket.cpp::connect] EINPROGRESS in connect() - selecting
In [shared_lib/sources/platform/posix/socket.cpp::connect] Timeout in select() - Cancelling!
In [shared_lib/sources/platform/posix/socket.cpp::connect] Valid recovery for connection sock = 15, err = 0, errno = 115
In [glest_game/main/program.cpp::setState] START
In [glest_game/main/program.cpp::setState] A
In [glest_game/main/program.cpp::setState] B
In [glest_game/main/program.cpp::setState] C
In [glest_game/main/program.cpp::setState] END
In [glest_game/main/program.cpp::setState] START
In [glest_game/main/program.cpp::setState] A
In [glest_game/main/program.cpp::setState] B
In [glest_game/main/program.cpp::setState] C
In [glest_game/main/program.cpp::setState] END
In [glest_game/menu/menu_state_join_game.cpp::mouseClick] START
In [glest_game/menu/menu_state_join_game.cpp::connectToServer] START
In [glest_game/network/client_interface.cpp::connect] START
In [glest_game/network/client_interface.cpp::connect] END - socket = 15
In [glest_game/menu/menu_state_join_game.cpp::connectToServer] server - [192.168.1.12]
In [glest_game/menu/menu_state_join_game.cpp::connectToServer] END
In [glest_game/menu/menu_state_join_game.cpp::mouseClick] END
[shared_lib/sources/platform/posix/socket.cpp::isWritable] TIMEOUT while selecting socket data, err = 0, errno = 11 [Resource temporarily unavailable]
[shared_lib/sources/platform/posix/socket.cpp::isWritable] TIMEOUT while selecting socket data, err = 0, errno = 11 [Resource temporarily unavailable]
Restarting audio source because of buffer underrun.
[shared_lib/sources/platform/posix/socket.cpp::isWritable] TIMEOUT while selecting socket data, err = 0, errno = 11 [Resource temporarily unavailable]
[shared_lib/sources/platform/posix/socket.cpp::isWritable] TIMEOUT while selecting socket data, err = 0, errno = 11 [Resource temporarily unavailable]
[shared_lib/sources/platform/posix/socket.cpp::isWritable] TIMEOUT while selecting socket data, err = 0, errno = 11 [Resource temporarily unavailable]
[shared_lib/sources/platform/posix/socket.cpp::isWritable] TIMEOUT while selecting socket data, err = 0, errno = 11 [Resource temporarily unavailable]
....
This repeats very very often!!! And was constantly written for all the 2 minutes!!
.....
[shared_lib/sources/platform/posix/socket.cpp::isWritable] TIMEOUT while selecting socket data, err = 0, errno = 11 [Resource temporarily unavailable]
[shared_lib/sources/platform/posix/socket.cpp::isWritable] TIMEOUT while selecting socket data, err = 0, errno = 11 [Resource temporarily unavailable]
[shared_lib/sources/platform/posix/socket.cpp::isWritable] TIMEOUT while selecting socket data, err = 0, errno = 11 [Resource temporarily unavailable]
[shared_lib/sources/platform/posix/socket.cpp::isWritable] TIMEOUT while selecting socket data, err = 0, errno = 11 [Resource temporarily unavailable]
[shared_lib/sources/platform/posix/socket.cpp::isWritable] TIMEOUT while selecting socket data, err = 0, errno = 11 [Resource temporarily unavailable]
[shared_lib/sources/platform/posix/socket.cpp::isWritable] TIMEOUT while selecting socket data, err = 0, errno = 11 [Resource temporarily unavailable]
[shared_lib/sources/platform/posix/socket.cpp::isWritable] TIMEOUT while selecting socket data, err = 0, errno = 11 [Resource temporarily unavailable]
(Error: Connection timed out)
-
Ok this should be fairly easy to fix. Shall I update code in SVN or should I make another 7zip archive on my website?
Thanks
-
On this issue I am very sorry, I just report the game BUG, thank you!
-
Hi, softcoder! Please help me! You please help me solve this problem, Thank you!
-
Tom I realize you don't know english too well but please stop posting multiple messages before giving people a chance to answer you. Your impatience will make people ignore you.
-
OK,I keep quiet, but please help me solve this problem!
-
FYI, for anyone wanting the latest mega-glest on windows, I was able to compile it and it is available for testing at:
http://www.soft-haus.com/glest/code/glest_3.2.4-4-beta1_win32.7z (http://www.soft-haus.com/glest/code/glest_3.2.4-4-beta1_win32.7z)
This is v3.2.4-4-beta1
Thanks
-
@softcoder:
Did you find both bugs? The "ultra speed" bug too :o :o
For the source releases: If possible, please make both of them. A sourcepackage to download on your website/or on sourceforge and a SVN checkin. ( you can checkin now )
Update:
If you want you can also upload the latest windows build on SourceForge.
-
I did not fix the ultra-speed bug, I don't fully understand it enough to know what to look for. If possible could you re-explain the problem with as much detail as possible? I tried looking over all messages in this thread and I see bits and pieces but not enough to understand exactly what is happening.
I did fix the connect bug and I have created (hangs his head low for now) a Visual Studio Express 2008 project which builds mega-glest for those Bill Gates lovers. For now I will hold off from checkin in anything to SVN until I have:
a) cleaned up junk in my project folders
b) understand and fix the speed bug.
I can checkin the code now if you want but I think it would be better to cleanup things first and checkin the Windows project files etc.. when its all ready.
Thanks
-
All I now about the speedup:
If glest is slowed down by whatever for example swapping OS, slow rendering ( due to slow gfx card or too many units ) or slow cpu ( too many units to manage ) it speeds up its game speed to catch up its frame rate. This happens in singleplayer as in multiplayer. Glest slows down again if its back on track...
There is a bug in glest where it doesn't slow down again( I don't now the reason ) and it stays in ultra speed mode. This typically happens on slow machines which often need a little speedup.
Now for multiplayer and what we saw:
In multiplayer this might happen too. Glest speeds up for some reason and fails to slow down again. By this it stays in ultra speedmode. But due to the restrictions in multiplayer mode it has to wait for messages from the server for every "network frame". This ends up in something choppy.
speed->waiting->speed->waiting and so on.
I was not playing on this computer when it happened, but when i saw it, this was what I instantly thought. So it might be something different, but don't think so.
I don't think this bug is a real blocker for a release, because it is there since I know glest, but its an annoying one ....
For SVN: Yes thats exactly what i hoped you will do :) .
I have to cleanup too, but I will do it after your checkin. I didn't touched anything yet to avoid conflicts in SVN with your modifications. So the current code state is exactly 3.2.3 ( but not the editor )
-
glest3.2.4 whether the latest version of the recently introduced???
Hi, softcoder! To invite you to this address go and I see what I put forward the question on the glest, thank you! https://forum.megaglest.org/index.php?topic=4950.25 (https://forum.megaglest.org/index.php?topic=4950.25)
-
What does this mean? ???
(http://img687.imageshack.us/img687/4427/megaglest.jpg) (http://img687.imageshack.us/i/megaglest.jpg/)
-
What happened in the end, Oh, My God!
-
For the windows EXE problem:
If you compile Glest and somebody else tries to run in on their machine and they get "Application failed to start because side-by-side configuration is incorrect" then they either need to install Microshaft Visual C++ 2008 Redistributable Package (x86) http://www.microsoft.com/downloads/details.aspx?familyid=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en (http://www.microsoft.com/downloads/details.aspx?familyid=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en) or you need to link in the C runtime libraries statically. The later basically involves setting C/C++ -> Code Generation -> Runtime Libray to "Multi-threaded (/MT)" and then adding libcmt.lib in Linker -> Input -> Additional Dependencies and will generate a slightly larger file.
I don't have time to recompile at the moment so install the VC2008 runtime from the link above.
Thanks
-
I would like to know the latest glest3.2.4-4-beta1 for ubuntu whether there are updates? Thank you!
-
Sorry to report that MegaGlest isn't working for me :(
I was getting the side-by-side error described above.
Downloading and installing the fix link made no difference. I don't have the skills to recompile it myself so I'll just have to wait for a fix :'(
-
I'll try on my Laptop....
-
Ok......it didn't work............ :(
It told me to view the log-file or use the sxstrace thing, there's no log-file, and there has to be a log-file for either of those options to work.......
D*mn Microsoft........
I'll try that fix, but I doubt it will work...
-
Ok, I'll recompile the win32 build and get this fixed. I just got the map editor compiled for Windows and will look at the G3d Viewer next.
This is all new for me so please be patient.
-
If i remember correctly g3d viewer needed patching in vanilla glest, at least for linux. Long time ago i posted this patch:
http://www1.inf.tu-dresden.de/~s1445051/glest/g3d_viewer.patch (http://www1.inf.tu-dresden.de/~s1445051/glest/g3d_viewer.patch)
Don't know if it still works.
-
Ok I am on the path to success. I have the map editor and 3d viewer compiled without requiring the VC runtime. All i need to do is re-compile xerces, then recompile the glest game itself and I'll re-post the binaries.. likely later tonight (the compile is VERY slow under VirtualBox).
RE: Yggdrasil
Thanks for the path.. it was required.
-
Hi, softcoder!
By the way: on this version of the multiplayer modes glest3.2.4-4beta1 really stable out?? This version of the whether it is really stable version of it? I am referring to is support for the version of Ubuntu! please answer me, Thank you!
-
Ok Mega-Glest 3.2.4-4 beta1 Win32 binaries are ready for testing:
http://www.soft-haus.com/glest/code/glest-3.2.4-4-beta1_win32.7z (http://www.soft-haus.com/glest/code/glest-3.2.4-4-beta1_win32.7z)
This contains the mega-glest game and map editor (with supporting dll's) for win32.
Should no longer give the silly "side by side" error and does not require VC runtime dll's
-
Hi, softcoder!
By the way: on this version of the multiplayer modes glest3.2.4-4beta1 really stable out?? This version of the whether it is really stable version of it? I am referring to is support for the version of Ubuntu! please answer me, Thank you!
-
I think the latest linux version still has this strange bug when connecting to a totally wrong ip, but thats all. Be shur it connects to an open server everytime and it will work perfectly.
-
Yes, your idea is right, titi!
However, there is a BUG, The BUG is when the game halfway through the time, press ESC key to exit the game can not only use the kill -9 command to quit the game! Here to explain: I was with the game's AI Versus, the game's AI I chose the CpuMega.
By the way: this BUG also requested softcoder resolved, thank you!
-
Ok for now here are the binaries for Windows AND linux:
Windows:
http://www.soft-haus.com/glest/code/glest-3.2.4-4-beta1_win32.7z (http://www.soft-haus.com/glest/code/glest-3.2.4-4-beta1_win32.7z)
Linux:
http://www.soft-haus.com/glest/code/glest-3.2.4-4-beta1_linux32.7z (http://www.soft-haus.com/glest/code/glest-3.2.4-4-beta1_linux32.7z)
Titi, I'll do the cleanup of the SVN folder structure as disucssed in the email you sent me then I'll check things into SVN (with windows project files etc)
Thanks
-
What about 64-bit, I need 64-bit Linux binaries, or else I cannot play this except on my laptop(not to much of a problem, because my laptop has good graphics, but it would be nice to be able to play it on Linux.
-
I love you :)
-
???
.........that's kind of creepy.................no offense...............................
-
Would you like a build for your Commodore 64 too? How about your AS/400 while were at it!
Sorry, but I don't have a 64 bit system to compile on, but obviously you do :)
Be the helper of your own destiny :)
-
Nice!
Works fine now. :)
Except it's very laggy now... ??? :(
Original Glest, GAE, and the earlier version of MegaGlest all worked fine...
-
Hi,softcoder!
I ask you a question: With regard to glest-3.2.4-4-beta1_linux32.7z what updates to fix what bug? Can put the latest release out the full source code available for download? Thank you!
By the way: I have recently also studying the problems that exist in the code!
-
Ok, now that I have everything compiling.. I'll compile in Release mode (the last build was a debug build which probably explains the lag).
Tom:
The linux and windows builds have the disconnect issue fixed.
-
Ok, now that I have everything compiling.. I'll compile in Release mode (the last build was a debug build which probably explains the lag).
I see, so that's the reason...
Cause I was trying to test it out... but for every second it lagged badly...
Thanks! :)
-
Yes, I know! But I would like to know whether the glest3.2.4-4-beta1 for ubuntu with the updates? I just like the linux version of the glest code.
Can put the latest release out the full source code available for download? Ok, softcoder, please provide what you ! Thanks!
-
Tom, if you want the code get it from SVN using the following command:
svn co https://megaglest.svn.sourceforge.net/svnroot/megaglest megaglest
Thanks
-
I would like to ask you this: This is the Linux version of the code? What is the time to update it? Is the latest glest2.3.4-4-beta1 code to do, it actually update anything at all? ? ? Please answer me, softcoder!
Thanks!
-
Yes SVN has the latest code with the disconnect fix, the code is for both linux and windows.
-
Why did not project documents? ? ?
-
I would like to compile the code to generate executable program out, thank you!
-
I think the latest linux version still has this strange bug when connecting to a totally wrong ip, but thats all. Be shur it connects to an open server everytime and it will work perfectly.
The question is raised titi, and I ask you: Are you resolved this problem out? ? ?
-
Tom... EDIT your posts... :)
What's new in the map editor that is included in MegaGlest? ???
Like what's the difference between the map editor in MegaGlest and the Map editor in the Glest tools package? ???
-
Just the fact its a static build and doesn't require the VC++ runtime. That may help with compatibility issues in windows (perhaps fix people complaints with Vista). I make no guarantee there, just a possibility.
-
Sorry, ultifd! I really do not know what you're talking about, please do not angry!
I just want to compile the code provided softcoder, but there is no project file, I do not know how to compile! softcoder, please help me, thank you!
-
Sorry, ultifd! I really do not know what you're talking about, please do not angry!
I just want to compile the code provided softcoder, but there is no project file, I do not know how to compile! softcoder, please help me, thank you!
Angry... how can I be angry...I wasn't angry... :)
Just try not to double post or triple post... :P cause that was my point...
Just have patience... then your problem will be fixed sooner...
Good luck. ;)
-
Because my question has been no immediate answers, so I am anxious, please forgive!
-
I understand...try PMing then...
-
Hi,softcoder! I ask you: How do I turn off the game tips? ? ?
-
Tom, be patient!
Stop cluttering this topic!
For the last time this is a free game and Softcoder has his own life apart from Glest, give the poor man a break.
-
Sorry, I just can't compile, already tried, I get those deadly xerces errors, and I have all the stupid xerces crap installed!
-
Ok I'll consider installing a 64 bit Ubuntu VM and get a build for 64 bit linux users, but that will take a little while.
-
Thank you!
-
Ok thanks to Silnarm, here's the 64 bit binary for Mega-Glest:
http://www.soft-haus.com/glest/code/megaglest_64bit_3.2.4-4beta.tar.gz (http://www.soft-haus.com/glest/code/megaglest_64bit_3.2.4-4beta.tar.gz)
-
Ok we played 4 player mega-glest (ubuntu linux) and it was AWESOME! No lag... even with tons of units and we played for hours. I think the networking is much more useful now... no crashes and reasonable performance.
-
same here!
Let' call this version 3.2.4 now before we start new things!
-
Wait, test the new resource too, isn't that another feature you added.
-
this is just a very small thing and eliminator tested it( it was made for him ).
But there is one thing, we didn't test a lot yet.....the windows version. does it work fine?
-
I'm fighting with VS2008 express... its the most buggy IDE yet (when it comes to C++). Either its dog slow without pre-compiled headers or its fast but buggy with precompiled headers enabled!
Thank you Microsoft.. your agenda to annoy me has succeeded.
-
Ok anyone wanting to test out mega-glest on win32, here is the release build (which hopefully isn't choppy):
http://www.soft-haus.com/glest/code/glest_3.2.4-4-beta1_win32-release.7z (http://www.soft-haus.com/glest/code/glest_3.2.4-4-beta1_win32-release.7z)
-
Cool, :)
I'll test it later when I have time...
Great, you renamed it... ;)
-
One more thing... I just re-uploaded (5 minutes ago) a slightly modified win32 binary that IGNORE's hidden files when loading xml's. This means people loading from an SVN snapshot can play without it crashing complaining about the svn xml files. Download file is the same:
http://www.soft-haus.com/glest/code/glest_3.2.4-4-beta1_win32-release.7z (http://www.soft-haus.com/glest/code/glest_3.2.4-4-beta1_win32-release.7z)
Thanks.
-
Ok, I'll download and test this version then...
-
that IGNORE's hidden files when loading xml's. This means people loading from an SVN snapshot can play without it crashing complaining about the svn xml files
While that's really nice, that's really bad, because that allows people to be lazy, and then it won't work in original Glest, picky-ness it better, it makes the mods more stable!
-
Latest version seems to work fine on windows (no more errors) :)
I only tested sinlge player so I can't comment on the stability of the multiplayer atm.
When will the 64 bit win binarys be available?
-
Hi, softcoder! Thank you for the last available glest3.2.4-4beta1 code, but some of the documents inside the folder is damaged and the inside is too confusing. I ask you: Can you provide a separate code is now updated it to me, I just to be LINUX version, thank you!
By the way: just as you are used to in your own site to provide a separate code available for download out now on SVN code, files much too messy and damaged some of the documents, resulting in not compile!
-
I think the latest linux version still has this strange bug when connecting to a totally wrong ip, but thats all. Be shur it connects to an open server everytime and it will work perfectly.
By the way: On the titi mentioned whether the problem has been solved then??? Thank you!
-
Can the windows users please test the latest release in multiplayer??
It would be so nice to know that everything works fine, so we can go on with the development and release a final megaglest 3.2.4 version?
-
I will try to get onto the IRC in the next few days for a test game ;)
-
Dear titi, I would like to ask you this: With regard to egypt is the ultimate version or beta version? ? ?