4+1 Architectural Model

CyanWorlds.com Engine Project Management
Jons
Member
Posts: 11
Joined: Sun Jan 29, 2012 1:48 pm

4+1 Architectural Model

Post by Jons »

Bonjour,

I have just finished an University Certificate in Information Technology and I whish to spend my new spare time to learn the MOUL architechture. I noticed that the Uru Documentation Project seem to have few contributions in the past months. I feel that it is a good opportunity for me to contribute while I am learning.

In this thread, I wish to share the progress of my work and collect your good advices about it. I hope the project will help other potential contributors like me, that start with a "great zero" knowledge about the MOUL architecture, to get their feet wet.

I am thinking about to begin with the Craft section of the project. http://wiki.openuru.org/index.php?title=Craftwork My intentions are to build the 4+1 model of MOUL. http://en.wikipedia.org/wiki/4%2B1_Arch ... View_Model I think it could provide a good overview of the architecture and provide views that could be useful for a variety of roles.

What do you think?
Jons
User avatar
Mac_Fife
Member
Posts: 1239
Joined: Fri Dec 19, 2008 12:38 am
Location: Scotland
Contact:

Re: 4+1 Architectural Model

Post by Mac_Fife »

Yeah, go for it! :)

The Uru Documentation Project was the original idea of rarified some time back, recognizing that lots of people out there probably knew little bits about MOUL/Uru; maybe nothing much on it's own, but when added to everyone else's little nuggets of information could amount to quite a lot.

I'm going to move this thread in to the CWE Management forum, since it's more about the information in the wiki than about the wiki itself.
Mac_Fife
OpenUru.org wiki wrangler
Jons
Member
Posts: 11
Joined: Sun Jan 29, 2012 1:48 pm

What I learned so far...

Post by Jons »

Bonjour,

It's time for me to make a report of my progress.

I try to follow the scientific method for my search http://www.experiment-resources.com/ Also, my studies only cover the MOUL-ou game system (CWE+MOSS). In this post I write about the first two steps: "Question about the big picture" and "Concepts, literature review, casual explanations"

The first step is "Questions about the big picture" To make it clear, here are the questions I'm working on:
  • What are the main actors (components) of the MOUL game system?
  • What are the main activities (concepts)?
  • How these are working together?
The second step is "Concepts, literature review, casual explanations"

I could find bits of information about the MOUL game system scattered all over the internet. However, there is two main hub where that info is hosted: OpenUru wiki http://wiki.openuru.org and Guild of Writers wiki http://www.guildofwriters.org/wiki Thats where I started my reading. here is the summary of what I learned that is related to my three questions.

The OpenUru MOUL runtime environment consist of two major game software. The first is the game client, called CyanWorld.com Engine (CWE) ref:http://wiki.openuru.org/index.php?title ... com_Engine. The second is the server, called Myst Online Server Software (MOSS) ref: http://wiki.openuru.org/index.php?title=MOSS.

There is also a bunch of other miscellaneous software, more or less related to MOUL, that I won't cover much for now:

Wireshark plugin http://wiki.openuru.org/index.php?title ... ark_Plugin
3DS Max plugin http://wiki.openuru.org/index.php?title ... _Tutorials
PyPRP http://www.guildofwriters.org/wiki/PyPRP
PyPRP2 http://www.guildofwriters.org/nathan205 ... ion-guide/
Drizzle http://guildofwriters.org/wiki/Drizzle
Offline KI http://guildofwriters.org/wiki/Offline_KI
DirtSand http://www.guildofwriters.org/wiki/Development:DirtSand
PlasmaShop http://guildofwriters.org/wiki/PlasmaShop
others?

The CyanWorld.com Engine is the Cyan Worlds' Plasma game engine used to run Myst Online: Uru Live. It's based on the concept of "Keyed Object Messaging System" I found two great references that explain a little what Plasma is and how it works: http://www.guildofwriters.org/wiki/Plasma_101 and http://www.guildofwriters.org/Brice2.html

I learned much about the Myst Online Server Software on the wiki http://wiki.openuru.org/index.php?title=MOSS. I did some reading about Endianness http://en.wikipedia.org/wiki/Endianness that is a basic concept that one must know when working with network protocol.

The game content is composed of Python script , State Definition Library (SDL), graphics (packaged in Plasma Resources Page file (prp)) and sound resources. State Definition Library are used to keep track of progress and changes. Python is used for the game's interactions (puzzle, action, events, etc..). Curiously, there is also some game logic in the Plasma code (heek, bluespiral aka "door run", marker, ...) I don't understand the reason why Cyan put some of the game logic into the Plasma engine. Maybe was it for performance reasons or because Python was too limited when building multiplayer games? I will have to find more documentation or references about that.

I assisted the OpenUru Q&A event on Monday 6th http://mystonline.com/forums/viewtopic. ... 004#382004 This was very interesting and I hope there will be other events like this in the future. I'm glad that I can rely on such a great community that is OpenUru's. It's very motivating.

I downloaded CWE-ou source and I peeked through the Doxygen CWE documentation http://foundry.openuru.org/assets/Found ... index.html. CWE C++ source code is quite a huge beast to tame for me. My C class was about 15 years ago and my own Visual C++ 6 box is collecting dust since 10 years now.

That's all I have for now. I hope you enjoyed it. Feel free to comment as it is a work in progress.

Edit: Added PlasmaShop to the other miscellaneous software list. Changed the descriptive of CyanWorld.com Engine based on comments received. Minor orthographic corrections.
Last edited by Jons on Mon Feb 13, 2012 11:37 pm, edited 1 time in total.
Jons
User avatar
rarified
Member
Posts: 1061
Joined: Tue Dec 16, 2008 10:48 pm
Location: Colorado, US

Re: 4+1 Architectural Model

Post by rarified »

Nice work Jons! I'll need a couple of times to read this through myself.

At some point you should consider moving this to the Documentation wiki in the Craft section (as you surmised). When I laid out the categories for the documentation project, Craft was for the underlying game programming, Art was for age creation, and so on.

This is really good to get started.

_R
One of the OpenUru toolsmiths... a bookbinder.
Jons
Member
Posts: 11
Joined: Sun Jan 29, 2012 1:48 pm

The plasma Python API and a little more about the server

Post by Jons »

Bonjour,

Aside from going to the dentist (no caries :)), do some shopping (I bought a new capo and some picks for my guitar), cooking bread and cookies with my children (I never buy bread and cookies) and some others things, I had a little time left to continue my research.

When screening among the GoW's wiki articles, I found this gem. A reference about the Python API for Plasma: http://www.guildofwriters.org/wiki/Plasma_Python_API It describe all the functions that can be used by the Python script to "talk" to Plasma.

Dispite the documentation in the OpenUru's MOSS wiki, I did not have enough information about the main server internal concepts to understand how it works. I downloaded the source code from repository and tried to do an inventory of the server's main components.
  • AuthServer
  • FileServer
  • GameServer
  • moss_serv
  • moss_Backend
  • GatekeeperServer
  • Postgresql (SGBD)
  • Vault
Having a list don't give me much explanation about how it works togheter, so I searched if other server's documetation is available. I suppose they must work about the same way. Considering that a'moaca' contributed in the Alcgus Server, I beleive that many concepts implemented in MOSS can be the same in Alcgus. I found documentation about Alcugs Server architecture here: http://alcugs.almlys.org/AlcugsArchitecture

That's all for the "Concepts, literature review, casual explanations" step. The next one is labeled "Hypothesis, prediction, operationalization". I will try to post something on the wiki before going on with the next step. I don't know how I will write the wiki article in the two official languages of my country ( http://en.wikipedia.org/wiki/Official_L ... 8Canada%29 ).

Thank you for your comments.
Jons
User avatar
Mac_Fife
Member
Posts: 1239
Joined: Fri Dec 19, 2008 12:38 am
Location: Scotland
Contact:

Re: 4+1 Architectural Model

Post by Mac_Fife »

Jons wrote:Plasma is the name of the engine at the core of CyanWorld.com Engine.
I'm not 100% sure on this but I think I'm right in saying that there's a specific reason behind calling the Open Source code "CyanWorlds.com Engine" (maybe JW Platt remembers something of the conversation with Chogon?):

The Plasma engine is used by Cyan in a few projects other than Uru, and which are still subject to commercial arrangements. In releasing the code as Open Source, Cyan probably had to do something to prevent the Open Source conditions carrying across into those other projects. So, rather than open source "Plasma" they split off the particular branch of Plasma that was used for MOULa and renamed it as "CyanWorlds.com Engine" to maintain a clear distinction between the Open Source code and their commercial products.

So, I believe that in referring to Open Source it's more correct to call it "CyanWorlds.com Engine" or CWE than to call it "Plasma".

It's probably all pretty academic for most people, but I think it was maybe a legal necessity for Cyan.
Mac_Fife
OpenUru.org wiki wrangler
User avatar
JWPlatt
Member
Posts: 1137
Joined: Sun Dec 07, 2008 7:32 pm
Location: Everywhere, all at once

Re: 4+1 Architectural Model

Post by JWPlatt »

The explanation was simply, "[We] wanted to call the engine something other than Plasma and have it point back at Cyan Worlds more obviously." But there's a lot of what Mac_Fife says behind that kind of discussion.
Perfect speed is being there.
Jons
Member
Posts: 11
Joined: Sun Jan 29, 2012 1:48 pm

Re: 4+1 Architectural Model

Post by Jons »

Bonjour,

Today, I did my first contribution to the Wiki. http://wiki.openuru.org/index.php?title=Game_Overview I did my best to keep it short and clear. I hope you will like it and that it will be useful.

I stumbled upon a very interesting web page that been presented a Mysterium 2009 about age creation and MOUL architecture: http://kim.demare.org/Age%20Page.html

I am very happy of the progress I made in the last week. Thanks to all the great people that took time to share a little bit of their knowledge.
Last edited by Mac_Fife on Tue Feb 14, 2012 10:21 pm, edited 1 time in total.
Reason: Fixed tags
Jons
User avatar
Hoikas
Member
Posts: 344
Joined: Fri Jun 03, 2011 8:38 pm

Re: 4+1 Architectural Model

Post by Hoikas »

It's good to see someone who wants to help document this thing we've inherited. Our public documentation has suffered since the Great Hacking Clampdown of 2006 :(. Sadly, what private documentation we have is pseudo-code, so it's essentially useless now.

Before you get too far out of the gate, you really want to be careful of using "http://kim.demare.org/Age%20Page.html" as a source. I remember laughing over how inaccurate it was when it was published--and the bad thing is that it was actually presented at a Mysterium as fact! For example the SDL cited on that page is unrelated to the SDL that's in Plasma. Like the other SDL, Plasma's SDL is a solution for declaring state definitions in a human-readable format. Plasma's SDL will also store those states in a compact binary format (there's also a lot of complicated synchronization logic in there that I don't want to talk about :shock: ).

One further note, the "fni" files are actually just console commands that the game executes when linking into the age. Using them for fog commands is an old hack from 2001 that Cyan's artists never stopped using. The correct way to make fog is actually very different, and, as far as I can tell, has never been used in any publicly released age.
Image
Jons
Member
Posts: 11
Joined: Sun Jan 29, 2012 1:48 pm

Back to work

Post by Jons »

Bonjour,

My vacancies end today. So it's time to get back to work.

Thank you Hoikas for your comment. I removed the inaccurate reference about SDL in the wiki. I will also try to do some more search on files format later.

I am actually working on a draft of a Use Case diagram (scenario view) and a sequence diagram (Logical view) for MOUL Client/Server scenario. All my drafts of the 4+1 model's diagrams will be part of the hypothesis step of my scientific inspired approach. I saw that MOSS can support an old protocol and a new one. I will work only with the new one (current).

** Warning: The next paragraph may contain language that only programmers will understand. It is not well explained too (sorry).

I saw that client/Server messages are listed in msg_typecodes.h for MOSS and in plNetGameLib for CWE. While looking into plNetGameLib code, I saw the following namespaces: Auth, Game, Csr, File, GateKeeper. Each seem to correspond to a part of server that, I guess, where originally designed to run separately. It is logical to me because it make the server architecture more scalable. MOSS seem to only use Auth, File and Game messages. GateKeeper is unused and Csr messages are unimplemented in MOSS. My guess is that Csr messages were for eventual player hosted game (P2P). Some comments in plNetTransport.h in CWE's code refer to Peer 2 Peer mode as an alternative to the client/server one.

That's all for today.
Jons
Post Reply

Return to “Management”