ender.saka wrote:SDL version of Nexuiz under Mac OS X is simply unusable. SDL has not a real Cocoa implementation (I read somewhere) just a simple wrapper, nothing more.
Well, that's what SDL is on any platform, and it works fine. So why not on OS X too? It's IMHO rather SDL's problem to solve and not ours then.
Ok, the problem is not GraphicsFPS VS NetFPS (not good names but I hope you understand what I mean) but PhisicsFPS VS NetFPS. Though, I observed that, if I enable V-Sync (that results in fixing frame rate to 60 FPS), the problem about sync of the client with the server (that I describe in the following lines) become bigger. In any case, the situation does not change. More that half of bullets simply do not hit the target.
This has nothing to do with that. The reason why bullets often fail to hit is badly made player models that have drawable parts outside the collision box.
But without a modeler, that's impossible to fix.
About OpenGL and Mac. I played several OpenGL games (open source too) that works perfectly under Mac OS X; I also tested different engines. You would probably be surprised to know that a Java based engine (that uses JNI to call native OpenGL) works really good.
So, it might be that the Mac OS X drivers are not so good, but there should be also something in Nexuiz code.
Sure. It is because Nexuiz is not mainly developed on Mac (actually, Nexuiz has not a single Mac developer), so we tend to use OpenGL features that are possibly unstable on OS X. No way to avoid that, really.
However, the driver bugs that have been found have been found by others and published too. Apple refuses to fix them anyway.
Had Nexuiz been developed specifically for OS X, it would simply not use these features at all.
About multithreading I think it is not a good approach to implement it based only on drivers support.
I agree, this is not optimal for performance, but it is portable across operating systems.
The only thing multithreading WILL improve is listen servers (that is, servers that also have a client playing in the same process). That is, the ones you make from the "Create" menu.
Performance on dedicated servers on the other hand will not be improved at all by it, and this means that for over 90% of the players, nothing AT ALL will change.
About optimizzation with vector math: you say that there would be really few gain. The point is that you answered NO to all my proposals. Now suppose that the vector math alone would gain 1%. Multithreading another 1%. And so on... if you would not be so negative there could be a 5% or more of gain. Don't you think?
Yes, but it would be a huge amount of work for still about 10% in total, maybe. Regarding vector math, no library is needed for this, but gcc provides its own methods for it. We could start using that at any time, but some people are compiling DarkPlaces with Microsoft Visual Studio, which doesn't support these gcc extensions. As an alternative, gcc has an automatic vectorizer that you can enable by specifying -ftree-vectorize on the gcc command line. The drawback is that the binaries won't work on any older CPUs, which is why this isn't done for releases.
About QuakeC. If you use it, it is normal that have hard time to find developers. Honestly, I would like to help you, but I have simply no time to learn a strictly proprietary language that is used only in Quake engine. And I think that many developers think the same (at least this is the answer I received from all the developers I know).
To that I agree, but on the other hand, QuakeC is relatively simple, and a developer isn't required to know QuakeC (he can work on the engine too, sure).
Also, QuakeC is necessary for one reason: CSQC allows the server to transfer code to the client, which is executed there (and e.g. handles the HUD). If this were native code, this would be a huge security compromise. In the end, you need SOME sort of interpreted or bytecode-interpreted language for this (sure, it COULD just as well be Java, but Java tends to be much less performant than QuakeC in this specific field of application).
Finaly, to have 64bit code with Mac, you have to move from AGL to NSGL (Cocoa). CGL is also supported, if needed, and is not about to be abbandoned. Though Window and User Input Event Handling have to be implemented using Cocoa.
We have no OS X developer to do this, so it won't happen. And yes, this may mean that eventually, native OS X support has to get dropped, unless this situation changes.
If you were a bit more cooperative, you could start working on this and submit a patch for this, instead of bashing the hard work that's being done here.
You really can't expect developers WHO DON'T EVEN OWN SUCH A MACHINE to make a perfect Mac port.
Another thing you have to take into account: you are proposing writing MUCH MORE operating system specific code. However, as no developer has a Mac, and no developer has OS X development experience, this will easily lead to OS X support breaking indefinitely after some changes (either in the engine, or by Apple), as there's nobody to fix it. The current way of making most of the code platform independent, and have only small platform dependent parts, is much better in this situation.
1. Open Notepad
2. Paste: ÿþMSMSMS
3. Save
4. Open the file in Notepad again
You can vary the number of "MS", so you can clearly see it's MS which is causing it.