Eulora's communication protocol aims to be indeed as short and simple as possible while providing at the same time the full means for sending over to the client *anything and everything* at all that might be wanted now or later on, whether known currently or not. Given this broad scope and combined with the terrible state of the original client, it's perhaps no wonder that I had a rather frustrating time with my previous attempts at pinning down a practical implementation of it: here's for instance one attempt of defining the client-side data hierarchy and there's its further refinement too, but those are only two cases that I fully documented in an attempt to clarify matters better - the effort was certainly not wasted but the results in both cases are still lacking and I found myself repeatedly getting tangled in all sorts in there, as it's indeed very easy to run into circular definitions of things or get confused by the required combination of structure, meaning and representation. Nevertheless and much to my recent relief, it seems that I finally got my head around it - it took only yet another re-read of *everything* around it, previous discussions and attempts included, as well as all the previous hand-banging and failures, of course, what else.
As it happens though in such cases, once the last bits and pieces finally fell into place, it all started to make sense and fit together (although it *also* meant that half of my initial test/exploration implementation had to be thrown away; sigh). Since the actual implementation is still in the works and it's likely to still take a while as it's not exactly a walk in the park, I am taking this time now to try and set down my current clearer understanding of how it's all going to work - so that on one hand I have a reference point for later on and on the other hand it's out in the open for any further discussion and fault-finding.
For clarity and keeping it all contained here, note that I'll focus strictly on the data transfer part of the protocol, meaning messages for File Request, File Transfer, World Bulletin, Object Request and Object Info1. Of those, the last three are not even fully defined in the current protocol precisely as further details needed clarification - in particular the "object list" in the World Bulletin and the "object properties" in the Object Info are essentially "to be defined". Skipping through all the intermediate attempts that either didn't quite fully work or turned out to be in practice so clunky that I couldn't live with them at all, the breakthrough basically came when I finally managed to set down a few basic things (that even seem very simple in retrospect, of course). To get it all in one place:
- There's only *one* primitive to this whole thing and that is "object", no exceptions. For a long time I kept tripping over "properties" and "values" and whatnots, as I didn't quite grasp the boundaries (admiteddly blurry of times) of the different perspectives involved and kept trying to sort out or pin down too fine details before having a solid higher-level structure to rely on.
- Objects may be concrete or abstract. The concrete objects are essentially those with a direct graphical representation in the game (such as your character or even the terrain as a whole). The abstract objects provide all and any sorts of other information required (such as what time it is in game perhaps or which object from all those in the world is actually your character!).
- The whole game world (and this does include *everything* that may be requested or received through the set of messages mentioned above) is a hierarchy of objects with a single "root" node that is quite special in that it's essentially the "null" object itself. So to "request" the World Bulletin, the client basically needs to request the "null" object. This hierarchy of objects that is a full representation of the game world can be arbitrarely deep and wide at any given time - the only guarantee is that it is indeed finite at all times but the number of levels or the number of siblings on any level can and will change, there's no restriction on either of them (nor any need for such restriction).
- The hierarchy of objects given as above provides basically the *structure* of the world, effectively describing where *is* each concrete object (or where it belongs, if it's an abstract object). As such, concrete objects can of course move about from one parent object to another (and take all their corresponding subtree with them). Abstract objects are, logically speaking, less likely to suddenly move to a different parent but there is no guarantee that this can't or shouldn't happen either.
- The full set of object types can be neatly split into TWO main categories: "leaf" types and "non-leaf" types. Realising this was big for me, as it suddenly got rid of a lot of mess in there: non-leaf types of objects can only ever contain other objects (of any types though and in any number) but *nothing else*; by contrast, leaf types of objects do NOT contain other objects (obviously!) but have instead a predefined and fixed structure (basically, values). A lot of my previous trouble seems to have come from mixing those two groups ie considering that an object type may legitimately contain both other objects AND values2. There's no real need for this mix that I can see and it only causes such a mess that it's not even worth fully describing. Once those 2 types of objects are neatly separated, everything falls in place and there is both the desired full extensibility of the whole thing (one can add any number of non-leaf or leaf types, as well as any number of intermediate levels in the hierarchy anywhere at any time without breaking anything) and the needed clarity for a working implementation: as long as a non-leaf type of object is encountered, the "properties" of it will simply be again an "object list" just like in the World Bulletin message; as soon as a leaf type of object is encountered, its structure is clearly known and *fully fixed upfront* so it can be actually worked with! Certainly, it may well be that one implementation or another is not aware of some newer types, be they leaves or not - in such cases, those types will be ignored since what else can the code do anyway, not like it can use what it doesn't know about. Note though that this doesn't break any of the rest - it will work for and with what it knows, while dropping what it doesn't and that's that.
- All objects have a unique ID and a type, meaning that an object is effectively a tuple (Object_ID, Type_ID). In practical implementation terms, this means that the "object list" in the World Bulletin message is *always*3 simply a set of pairs of numbers so if World Bulletin gives 5 as "count of objects", then there will be 5 pairs of IDs following, interpreted exactly like that: first ID in a pair is object's ID, second ID in a pair is type ID and there's no need for separators or any further information provided.
- For a non-leaf object type, the Object Info message will *always* contain as "object properties" simply an object list (the text field still works perfectly fine since it's known that there are 4 octets per ID), just like the World Bulletin. (Note though that the Object Info message may refer to more than one object and so some of those may be leaf types, too, so the properties for those will be different, see next item.)
- For a leaf object type, the Object Info message will *always* contain as "object properties" the exact structure known for that specific type. Obviously, a full list of those structures is in the works and will be published but the crucial thing here is that the contents of those structures are always *values*, never objects. Sure, it can very well be that a value in there stands for an id of some object but the *meaning* is very different since it is NOT about structure anymore and so that id in there will then reference an *existing* object from somewhere else in the tree instead of introducing a new object (and therefore it will NOT need to come with the type id either)!
- Values in the structures defined for leaf node types may be in principle of any known type, whether basic or not. From a practical point of view, the only truly special case is that of a value that represents a filename, since in this case there's effectively a further level to it all - the implementation will have to send a File Request message to get the actual content of the file, if it doesn't yet have it. Nevertheless, this is not any significant trouble as such.
For a practical example, here's my current must-have basic set of object types that I think are absolutely needed in order to get the client to the stage where it finds and requests graphics assets that it doesn't have:
- RootObj (the null object is the only one having this type and therefore the type itself is essentially an abstraction, no need for a type id as such)
- SelfObj containing for now4:
- PlayerIDObj - this is LEAF type with a single value, an Unsigned_32 that references the object in the world that represents the character controlled by the player.
- SectorObj (the id of this object will be given as top_id in a World Bulletin, too) containing for now:
- NameObj - this is LEAF type with a single *text* value.
- OutdoorsObj, containing:
- ZipObj - this is LEAF type with a single *text* value representing the full path and name of a zip file that contains *all* the graphics assets required for a sector. Note that the exact contents may change at later times but I don't see this as any problem - for one thing the plan is that the client will be able to select one overall schema at any given time and that schema will determine what exact file is made available here and for another thing, those schemas will be known upfront so a client will select what it knows and therefore won't have surprises regarding the content of this zip file either. For a long time I tripped over the trouble of defining the graphics in too much detail, quite possibly precisely because I lacked that knowledge myself. As meanwhile I sorted out this issue and I know all too well what exactly is needed, I finally realised that the only way to cut this knot neatly is to just specify a .zip file as a general "graphics assets for a logical object", no need for more at this level.
- HashObj - this is LEAF type with a single Unsigned64 value that represents the Keccak hash5 of the .zip file above.
- Any number of PlayerObj, containing:
- NameObj - this is LEAF type with a single *text* value.
- PosRotObj - this is LEAF type, with its value ("properties" text field in the Object Info message type) sent over the wire as 3 int16s for position followed by 3 int8s for rotation, as per the protocol specification
- Cal3DObj, containing:
- ZipObj - LEAF type, as above (see at OutdoorsObj - the big gain here is that although a Cal3D model will have an entirely DIFFERENT set of files in that zip than an OutdoorsObj, from the point of view of protocol spec and data acquisition, there is NO difference! They are simply all .zip file and that's that, no matter what they currently contain or may contain in the future or whatever else, hooray.)
- HashObj - LEAF type, as above (ie the hash of the zip file, for checking that it is indeed the intended file).
- SelfObj containing for now4:
The above is "all" for now - if still just a plan to be implemented. Sure, I have otherwise the concrete details of what those .zip files for instance will contain and all that but they don't really matter all that much from the point of view of the overall data model and data acquisition - the contents are in the end of interest strictly for the GUI/graphical part itself so they'll be handled there and only there.
Regarding the recent discussion of the potential need to be able to choose sizes for textures and so on - those I think are also best chosen separately, at a higher level, as an overall thing, so not going about specifying them for each and every texture or image file or something. At any rate, I don't think it's something that absolutely must be included in the spec at this time or here but do let me know if you see any trouble with any of the above, as usual!
The encryption and lower level packaging part of the protocol has been already cleared up, implemented and working fine, see the SMG_Comms category for detailed documentation on it and the basic docs for a high-level overview of the client's structure overall. ↩
In turn, this came from my still-not-wide-enough definition of objects, since I didn't quite grasp that there will be objects strictly for this purpose basically e.g. there's an object that would be fully described as graphical-model-of-Sue's-helmet-at-night-on-the-moon or some such. Once I got my head around this, I even find it difficult to fully point the trouble I previously had with it, go figure. Though in hindsight, I suspect at least part of the trouble was the unhelpful overlap with "object-oriented" idiocy, ffs. ↩
There's a reason for NOT ever having directly a "leaf" type of object in the root: leaf types of objects provide concrete values in predefined structures but they do NOT contain, nor can they contain at the same time the meaning and role that those values are to play at any given time. Hence, the root node will always have to contain at least one level of non-leaf objects and I kick myself for not realising this clearly any earlier! ↩
More will be added to this and to most other types described here but right now this is on purpose as small as possible, to have it first implemented and working. ↩
I chose this as it's been used elsewhere, though so far not for full files - just let me know if something else would work better, since I need to implement this part anyway so there's nothing set in stone yet. ↩
Comments feed: RSS 2.0
> so not going about specifying them for each and every texture or image file or something.
Absolutely. Once per client session sort of thing.
> this is LEAF type with a single Unsigned64 value that represents the Keccak hash
That works.
Ah, from my point of view the client may request to change the whole graphical schema as often as it wants really, though I would think it would end up poorly if it does that (as all of a sudden various things might not fit). Nevertheless, it's a client concern in the end, so if some implementation wants to break this way, no trouble at all.
Cool otherwise and thanks for the prompt reply! I'll continue with the implementation.
Version: GnuPG v1.4.10 (GNU/Linux)
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
=fP9R
-----END PGP MESSAGE-----
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
ymss18JpyTJE1PPIkmMrIZ59HYZoILyyKd3Z
=LgLW
-----END PGP MESSAGE-----
Version: GnuPG v1.4.10 (GNU/Linux)
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
BAqk3JA=
=uptQ
-----END PGP MESSAGE-----
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
vUkay0esvYRKQbd5VXLKkefqE3FTWog=
=GTLg
-----END PGP MESSAGE-----
Version: GnuPG v1.4.10 (GNU/Linux)
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
=TC8c
-----END PGP MESSAGE-----
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
=Hd/A
-----END PGP MESSAGE-----
Version: GnuPG v1.4.10 (GNU/Linux)
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
AgIlaUrT4LJ1
=I9HG
-----END PGP MESSAGE-----
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
=XMlb
-----END PGP MESSAGE-----
[...] Updated EuCache (the actual data storage structure that provides thread-safe access) to reflect the latest, streamlined data model. [...]
[...] current client's GUI interface is essentially a lame and broken attempt at implementing the world hierarchy from a... visual perspective1. There's a top "controlling"2 window that keeps track of all the [...]
[...] the Core adds to its services the packing and unpacking of all user actions known so far, the Data cache refuses to be led astray into unnecessary sync swamps and gets its responsibilities right, [...]
[...] past week I worked on a significant refinement of Eulora's data hierarchy, that core structure used to fully describe for the client the game's endless, complex and [...]
[...] EuCache package maintains and provides access to the knowledge tree of the game's world aka that boundless although finite data hierarchy. The role of EuCache is that of a librarian essentially: it accepts all new data as it becomes [...]
[...] in previous articles, including a first draft of a data hierarchy, its subsequent refinement and an initial brief discussion of how it works in [...]