Quaternion can be transported as a Normal3f (W value is calculated on the receiving side). The Angle type seems like overkill; you could define floors and ceilings for every numeric value you send in theory but there are diminishing returns to doing it at the protocol level.
I'm interested to see the results of this work. Do you have to break the Protocol Buffers spec to add support for fixed length arrays? Sending UUIDs and hashes will be a critical part of any virtual world system.
Also... this same conversation is happening on the MMOX list (https://www.ietf.org/mailman/listinfo/mmox). It would be great if you could send a note to the list talking about your reasons for choosing Protocol Buffers, tradeoffs it has compared to systems like Apache Thrift, and how you are working around the limitations. --Jhurliman 03:07, 21 February 2009 (UTC)