Differences between AccessorFunc and Entity:(Get/Set)NW*

For example (out of my head - not tested in game):



local EntityMeta = FindMetaTable("Entity")
if not EntityMeta then return end
AccessorFunc(EntityMeta, "blah_blah", "BlahBlah", FORCE_STRING)
-- ...
player.GetByID(1):SetBlahBlah("hello world") -- Player inherits from Entity, should work.. perhaps not? xD
print(player.GetByID(1):GetBlahBlah())




player.GetByID(1):SetNWString("BlahBlah", "hello world")
print(player.GetByID(1):GetNWString("BlahBlah"))


There is one clear difference, while others are kind of unknown (at least to me).
That is when using AccessorFunc, it attaches Get and Set accessor function to the specified metatable.
NW is networked between all clients I guess, but once changed on the clientside it goes out of sync…

Funny thing just popped on my mind:



AccessorFunc(EntityMeta, "nw_string", "NWString", FORCE_STRING)
player.GetByID(1):GetNWString() -- LOL'ed


What are the differences (benefits and disadvantages/limitations) between the two (behind the scenes)?
Can somebody post recommendations which one to use and when, combination of both?

The whole purpose of AccessorFunc is to create the Set/Get accessor functions. They never network anything.

The whole purpose of NWVars ( Set/GetNWString, etc ) is to network values from server to clients.

That’s all?
Thanks for quick reply.