View Single Post
Hawk552
AMX Mod X Moderator
Join Date: Aug 2005
Old 12-28-2008 , 21:54   Re: [Help] Editing deathbones plugin
Reply With Quote #19

Quote:
Originally Posted by danielkza View Post
Considering fakemeta is more advanced than engine, sometimes engine is not a proper replacement. Meaning we can't run all plugins using only engine, but we can in fakemeta. But since there are a lot of 'old' plugins using engine, not loading engine at all is not a feasible scenario.
I didn't say that. Porting stuff to Fakemeta is not a be-all end-all solution. There are many, many reasons not to use Fakemeta. Here are some of them:
  • Multiforwards as used in Engine and Fun are far more efficient once more than one plugin is using it
  • Engine and Fun are simpler to use and easier to read
  • Engine and Fun natives often require less parameters and as such the VM layer can run faster
  • More people know how to use Engine and Fun
  • Fakemeta has far less protection against bad use and can crash a server much more easily
  • Engine and Fun are better documented with more available support and example code
  • Engine and Fun themselves act as wrappers which means that if an update breaks something, plugins do not have to be recompiled - AMXX can just be updated. This is also beneficial as less code is run in the VM layer, making it faster
Tell me: can you know whether the user is already running a plugin using Engine or Fun? Would it even be worth the resources to check?

Why are we fretting over these trivial optimizations (which you're actually largely part wrong about being faster in the first place) as opposed to making code legible? Why should I write code that is 4x as long and is slower just because the API I'm using is more capable? Why don't we just use ASM, under that reasoning?

We've had this debate before. GHW_Chronic made it a requirement for plugins to only use Fakemeta. This makes absolutely no sense. There's no reason we can't use Fun and Engine for everything other than the things only Fakemeta can do.

I've written many APIs (see Apollo RP in my signature); I can guarantee you, far more than you have. From that experience, I know that capability is not the most important quality of an API. An API, especially for something like AMXX, should be simple. The way we have the APIs divided up is great. We should only encourage people to use Fakemeta when it is necessary and no other module can accomplish the task at hand.

There is absolutely no reason to make a point of using Fakemeta exclusively unless you're trying to appear intelligent or you actually know it better than Engine and Fun. Stop telling beginners to use Fakemeta, it will only confuse them and makes things more complicated than they have to be.
__________________
Hawk552 is offline
Send a message via AIM to Hawk552