Jump to content
Eternal Lands Official Forums

Recommended Posts

How severe are the OSX problems? Is the game playable or not? Because if it is, we might have to release it anyway, and have a patch for OSX later on..

As mentioned by Florian, the bugs all seem to be related to shadowing. Shadow mapping causes severe problems. Regular shadows are messed up since the switch to NEW_E3D_FORMAT, but the game can (sadly) still be played by turning them off too. These are not deal-breakers. They just suck monkey nuts, especially since shadows had just started working for PowerPC users. Sorry guys.

Share this post


Link to post
Share on other sites

Well, there will be time to look into it after the update and release a patch. Too bad not many of us have an OSX system..

Share this post


Link to post
Share on other sites

Not bad defaults. Defaults designed for a system with a faster CPU than yours.

 

You can't lower the max below the minimum. There's also, if I remember, the fact that someone had briefly hard coded a range for max and min that weren't realistic, which I reverted to the proper range. The real min/max should be from 0/1 to maxint-1/maxint.

 

Particle pecentage: if it's not on the eye candy tab, it's not part of eye candy.

Edited by KarenRei

Share this post


Link to post
Share on other sites

About the slowdown at pv sto and other places. My hardware is not what I would call uber, but neither is is particularly slouchy (AMD 1.5ghz cpu and 256M nvidia 7600GS vid card, 1gb 400 ram. )

 

The slowdown has never bothered me terribly (I cap fps at 30 and it slows down to around 18ish fps at that place) but I piped up when I found that others were having similar issues there.

 

S.

 

Edit: Learner: yep run in perspective mode, but the fps is still borked even when looking from as above as possible and zoomed right in. Dunno if that changes anything. Also happens no matter which way I am facing there (North,south,whatever)

Edited by Spleenfeeder

Share this post


Link to post
Share on other sites
How severe are the OSX problems? Is the game playable or not? Because if it is, we might have to release it anyway, and have a patch for OSX later on..

As mentioned by Florian, the bugs all seem to be related to shadowing. Shadow mapping causes severe problems. Regular shadows are messed up since the switch to NEW_E3D_FORMAT, but the game can (sadly) still be played by turning them off too. These are not deal-breakers. They just suck monkey nuts, especially since shadows had just started working for PowerPC users. Sorry guys.

That's how bad shadows are:

- shadows depend on viewpoint, not on lightsource click and click

- objects sticking out of the ground have weird shadows click

Share this post


Link to post
Share on other sites

@Florian

Those stencil shadows that we are using are, and always were obsolete. There were allways problems with them, which is the reason why we want to remove them altogether. After this update, we'll have to do some more work and see what is the problem with the shadow maps for OSX.

Maybe we should contact Apple about it, since if they crash the whole computer it is their fault, not ours.

Share this post


Link to post
Share on other sites

I'm getting a client freeze (of sorts). Latest CVS on Linux, Nvidia graphics, latest RC data files. I say sort of freeze as the client does not respond or redraw the main window but it is still running, just stuck in a loop. The freeze is 100% repeatable, my location "You are in 'The Wyrmgoth Underground' [180,33]" The client starts OK, but when I spin the camera round, it always freezes, facing nearly east.

 

I think this is a similar problem to one I reported about a year ago, that time sitting in PL storage. At the time no-one else could reproduce the problem. And it only occurred if I had my perspective set really high. This time perspective is set to its normal 0.45. I'll go check if the old problem still occurs with this client and dig out the forum thread too...

 

I've traced the problem to the loop in main.c (line 100) that handles SDL events. The code never breaks out of the loop:

		// handle SDL events
		while( SDL_PollEvent( &event ) )
			{
				done = HandleEvent(&event);
			}

I've added some crude debug:

		SDL_Event event;

		Uint8 lasttype = 0;
		int eventcounter = 0;
		printf("in SDL_PollEvent()\n");

		// handle SDL events
		while( SDL_PollEvent( &event ) )
			{
				if (event.type != lasttype)
				{
					printf("HandleEvent type=%d old counter=%d\n", event.type, eventcounter);
					lasttype = event.type;
					eventcounter = 0;
				}
				else
				{
					eventcounter++;
					if (eventcounter>100)
					{
						printf("HandleEvent 100 of type=%d\n", event.type);
						eventcounter = 0;
					}
				}
				done = HandleEvent(&event);
			}

		printf("out SDL_PollEvent() counter=%d\n",eventcounter );

He is the output:

....
in SDL_PollEvent()
HandleEvent type=24 old counter=0
HandleEvent type=4 old counter=2
HandleEvent type=24 old counter=0
HandleEvent type=4 old counter=3
out SDL_PollEvent() counter=6
in SDL_PollEvent()
HandleEvent type=24 old counter=0
HandleEvent type=4 old counter=11
HandleEvent type=24 old counter=10
HandleEvent type=4 old counter=8
HandleEvent type=24 old counter=8
HandleEvent type=4 old counter=9
HandleEvent type=24 old counter=9
HandleEvent type=4 old counter=10
HandleEvent type=24 old counter=9
HandleEvent type=4 old counter=6
HandleEvent type=24 old counter=1
HandleEvent type=6 old counter=9
HandleEvent type=24 old counter=0
HandleEvent type=4 old counter=36
HandleEvent type=24 old counter=3
HandleEvent type=4 old counter=8
HandleEvent type=24 old counter=9
HandleEvent type=4 old counter=9
HandleEvent type=24 old counter=10
HandleEvent type=4 old counter=8
HandleEvent type=24 old counter=9
HandleEvent type=4 old counter=8
HandleEvent type=24 old counter=0
HandleEvent 100 of type=24
HandleEvent type=1 old counter=64
HandleEvent type=24 old counter=0
HandleEvent type=1 old counter=18
HandleEvent type=24 old counter=0
HandleEvent 100 of type=24
HandleEvent 100 of type=24
HandleEvent 100 of type=24
HandleEvent 100 of type=24
HandleEvent 100 of type=24
HandleEvent 100 of type=24
HandleEvent 100 of type=24
HandleEvent 100 of type=24
HandleEvent 100 of type=24
HandleEvent 100 of type=24
HandleEvent 100 of type=24
HandleEvent type=4 old counter=82
HandleEvent type=24 old counter=0
HandleEvent 100 of type=24
HandleEvent 100 of type=24
[1]   Killed				  ./el.x86.linux.bin -sp 2001

If I de-focus the window, I get none type 24 events for a bit, like here when I killed the client.

 

edit: This is the old bug report. The client no longer freezes in PL storage for me. This could be because I can no longer see the particles on the distance - the detail culling code cutting in may be?

 

edit2: If I set perspective to 0.40, the client does not freeze but CPU usage jumps from near zero to ~100% at the camera angle that previously locked the client (at perspective 0.45).

Edited by bluap

Share this post


Link to post
Share on other sites

If the code doesn't break out of that loop, it's either a problem with SDL, or a problem with your particular system.

Share this post


Link to post
Share on other sites

If the code doesn't break out of that loop, it's either a problem with SDL, or a problem with your particular system.

Great :rolleyes: Anyway, if I disable the call to update_fire_sys() in particles.c then I'm fine. Also if I cap the maximum number of new particles (hacking the code rather than in config), then I'm fine. While looking at the code I also noticed a some nested calls to LOCK_PARTICLES_LIST() and UNLOCK_PARTICLES_LIST() - which appear to result in the releasing of the mutex before intended. I tried playing around with this but to no effect. May be it just means the outer calls are redundant. I'd have to study the code some more.

 

If this problem is limited only to me then I guess I'll just have to be careful. :happy:

Share this post


Link to post
Share on other sites

That was old, many things changed since then.

But I'd be interested in hearing about others having a similar problem.

Share this post


Link to post
Share on other sites

If the code doesn't break out of that loop, it's either a problem with SDL, or a problem with your particular system.

Great ;) Anyway, if I disable the call to update_fire_sys() in particles.c then I'm fine. Also if I cap the maximum number of new particles

 

It is not problem with SDL. elc design allows this situation: if we update particles too slow (for example >20ms) then timer

adds new SDL_Event to the queue, that requires new update of particles.

 

The most strange thing here is that there is no fire particle source in that map, at least I haven't found it :P

Maybe we have wrong fires in map file, as wrong lights?

 

bluap, can you figure out coords of that fire?

Share this post


Link to post
Share on other sites

Wait, is that with the new EyeCandy, or with the old particles too?

Default CVS make options with NEW_E3D_FORMAT enabled, AUTO_UPDATE and CUSTOM_UPDATE disabled.

 

"Toggle Special Effects", "Point Particles", "Enable Eye Candy" non of these change the problem. Lowering Perspective stops the freeze but I still get increasingly high CPU as I approach the freeze value. Setting "Particle percentage" to zero (particles off) fixes the problem but even a value of 1 causes the freeze.

 

bluap, can you figure out coords of that fire?

Not sure how to do that but I'll have a look later today.

Share this post


Link to post
Share on other sites

bluap, can you figure out coords of that fire?

This may be what you were asking for. Same location "You are in 'The Wyrmgoth Underground' [180,33]". I've printed out a section of the x,y,z values from the particle_sys structure passed to update_fire_sys(). The values are all about the same. These are the values when the loading peak hits and the client gets stuck on the loop. I'm using the pre-download update and the latest CVS client on Linux with the version numbers changed so I can run on the test server. I might not be able to get back with answers to any other questions for a day or so.

 

x=121.38 y=27.68 z=-0.11

x=123.13 y=27.56 z=-0.10

x=123.61 y=29.77 z=-0.10

x=125.30 y=26.70 z=-0.10

x=125.36 y=28.96 z=-0.10

x=127.23 y=29.19 z=-0.10

x=127.42 y=27.02 z=-0.10

x=125.34 y=31.51 z=-0.10

x=120.65 y=14.57 z=-0.20

x=118.68 y=17.89 z=-0.20

x=119.37 y=19.91 z=-0.20

x=120.48 y=16.23 z=-0.20

x=120.54 y=17.95 z=-0.20

x=119.15 y=22.15 z=-0.20

x=122.53 y=14.00 z=-0.10

x=124.27 y=15.97 z=-0.10

x=122.59 y=16.17 z=-0.10

x=122.55 y=18.15 z=-0.10

x=124.68 y=18.26 z=-0.10

x=126.58 y=18.46 z=-0.10

x=121.62 y=20.20 z=-0.20

x=123.39 y=20.07 z=-0.10

x=126.53 y=20.57 z=-0.10

Share this post


Link to post
Share on other sites

bluap, can you figure out coords of that fire?

This may be what you were asking for. Same location "You are in 'The Wyrmgoth Underground' [180,33]". I've printed out a section of the x,y,z values from the particle_sys structure passed to update_fire_sys(). The values are all about the same. These are the values when the loading peak hits and the client gets stuck on the loop. I'm using the pre-download update and the latest CVS client on Linux with the version numbers changed so I can run on the test server. I might not be able to get back with answers to any other questions for a day or so.

 

x=121.38 y=27.68 z=-0.11

x=123.13 y=27.56 z=-0.10

x=123.61 y=29.77 z=-0.10

x=125.30 y=26.70 z=-0.10

x=125.36 y=28.96 z=-0.10

x=127.23 y=29.19 z=-0.10

x=127.42 y=27.02 z=-0.10

x=125.34 y=31.51 z=-0.10

x=120.65 y=14.57 z=-0.20

x=118.68 y=17.89 z=-0.20

x=119.37 y=19.91 z=-0.20

x=120.48 y=16.23 z=-0.20

x=120.54 y=17.95 z=-0.20

x=119.15 y=22.15 z=-0.20

x=122.53 y=14.00 z=-0.10

x=124.27 y=15.97 z=-0.10

x=122.59 y=16.17 z=-0.10

x=122.55 y=18.15 z=-0.10

x=124.68 y=18.26 z=-0.10

x=126.58 y=18.46 z=-0.10

x=121.62 y=20.20 z=-0.20

x=123.39 y=20.07 z=-0.10

x=126.53 y=20.57 z=-0.10

 

wrong sorta coord lol :D at least it seems

Edited by cho-yun

Share this post


Link to post
Share on other sites

Just found a new bug, cvs of yesterday, verified on test server with Aislinn.

 

When you increase the quantity to something larger then 65k, then put 65k of something in the trade window (or more) then decrease the ammount with the 65k, it will instead substract some random number.

 

Tried it with various ammounts, 65k still works, so it's most likely some integer going outof bounds, only when decreasing the number.

Share this post


Link to post
Share on other sites

Looks like this bug is quite noticeable in trades with bots even on the main server.

 

RallosZek and I tried it with my bot, having the bot attempt to remove 66000 gc from it's trade resulted in the server sending back a removal of only 464gc:

 

20070602 17:57:59 [2329] - Attempting to remove 66000

20070602 17:57:59 [2329] - Inventory fully updated...

20070602 17:58:00 [2329] - Received command GET_NEW_INVENTORY_ITEM

20070602 17:58:00 [2329] - Working with slot 1 according to packet parsing.

20070602 17:58:00 [2329] - Current - Slot: 1 Qty: 64270 Item: Gold Coins

20070602 17:58:00 [2329] - Recieved - Slot: 1 Qty: 64734

 

As you can see from the above logs, the gold on the bot only increased by 464gc (64734-64270). I've double checked my code and I am sending the removal amount as an unsigned long (4 bytes). However, if the server were treating this as only an unsigned int it could explain the oddity we are seeing since 66000 stuffed into a unsigned integer is only 464.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×