ender.saka wrote:This thread is very long, so I would not read it all.
I don't know if you still need more devs, though I would like to give my suggests.
1) Network have to be corrected or rewriten. Having a network independent from frame rate would be better. Currently, apart Client Side prediction, it seems that everything is FPS dependant.
That would require using threads, and there is no way to do this in portable code.
2) Mac OpenGL backend have to be rewriten. Also GLSL and OpenGL specific parts are probably not well integrated with the Mac OS X system.
Why is that a problem? OpenGL is a portable standard.
3) And Mac UI should be ported to Cocoa. Soon or later AGL and Carbon will be not anymore available (probably with next system, Snow Leopard).
Or, AGL support should be dropped and only SDL be supported (which already uses Cocoa). Which actually is the only viable choice, given the current number of coders.
4) 64bit architectures should be supported all around the code. It is predictable that soon 32bit architectures for Personal Computer will be totally superseded by 64bit (Core Duo, Dual Core and Quad Core architectures).
This already happens in Linux and Mac OS X. Leopard is mostly 64bit and Snow Leopard will be probably totally 64bit.
64bit is supported perfectly except in the build environment (Makefile). Feel free to submit a patch that compiles it as 64bit. Currently, we simply don't KNOW how to make 64bit binaries for OS X.
5) I suggest to move QuakeC code to C. So, that you will have more opportunities to find other developers, in the future.
That's way out of scope. We'd need a whole army of coders to get all that rewritten.
6) The engine sources need to be better organized. It is too much monolitic. Modularity and to follow a MVC pattern, would make it easier for external developers to approach it.
In my experience, this would just make the code look more like "enterprise software" whose code flow nobody can even follow before having read it like 2 years long.
7) Multythreadign has to be modified and used in a better way. Currently it does not work good on Mac OS X. I noticed that disabling it gives better performances.
That's a problem of your graphics driver then. The "multithreading feature" does not create any threads explicitly. All it does is tell your driver that it may use multithreading.
From the point of view of portability I think that some parts have to be not so portable.
I don't know for other platforms, but Mac offers a wide set of utilities both in Cocoa APIs and in Core Graphics/Quartz APIs. All the texture loading and manipulation part can be moved from libpng, libjpeg and similar to Cocoa or Quartz.
Event Handling, GUI and Threads can be handled using Cocoa APIs.
Fast mathematic computation can be highly optimized usign the API that Apple offers to take advantage of the vector extensions available in all CPUs starting from Pentium 3 (Apple also support similar API for Altivec PPC coprocessor).
Similar APIs should be present in Windows and Linux, considering that the vector math API of Apple is based on Intel directives.
All this would be a heavy rewrite for almost no gain (given that the computations aren't even CPU bound). Also, current gcc versions allow using SSE for regular code.
It would require making half the game platform specific (e.g. all the UI stuff), even maintaining three different GUIs, for the only gain that it'd look "more like the OS it runs on". Really not a good idea to do.
I could help, but the engine as it is, is really hard to be interpreted.
I could help also with Modeling, but I think that is a waste of time to model objects for an engine that I cannot smoothly play on my Mac. So, first of all, I would have something working.
Well, this is mostly because the graphics drivers on Mac are very slow and buggy. There've been many examples of Apple simply breaking published and everywhere else working OpenGL APIs, like updating part of a texture (this creates colorful randomness when doing this on a compressed texture).
Basically, what you're suggesting is rewriting the entire code from scratch, and using proprietary APIs everywhere, so it'd require writing about twice as much functionality as there is now to support all theee operating systems. There simply is no manpower for that.
Instead, Apple should simply fix their graphics drivers, or allow GPU vendors like NVIDIA and AMD to make their own (which have proven quite stable on Windows, and in case of NVIIDA, on Linux too, so why can't they do that for OS X too?)
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.