August 18, 2007
I got the design narrowed down to its basic form, with only the needed feature coded for this test. I chose to write the first one to sit on an el-cheapo GoDaddy Windows Server. Then someone mentioned I shouldn’t do it because it will flood the box with hundreds of requests (i.e. webservice calls). So I changed my mind and built a test Windows Server just for that. The effort alone took several days to complete. And now I got the server side code sitting nice and pretty.
The first round of testing will be writing a client. I’ll cut a FlashMX/Flex client first and see how fast the server can dish-out Zone States via SOAP. I got a sample code already with only minor code tweaks needed to implement SOAP server interface.
The second round is another test using IrrLicht library. There is a sample code for loading Quake level maps and one low-poly actor mesh.
I’ll work on the setting-up the Linux server code next week.
August 14, 2007
OK, I’ve got to write this down before I lose this one.
It would be nice to know how fast clients pull data from a server for refreshing local client data. So I need to setup a test environment for that, a client that simply pulls data using the simplest method which is xmlprc or System.Net.*.
The server basically holding states of each client, gets updated M times a second, bombarded by asynch clients.
To get the vector at client N, we use the network data to calculate V at N.
Two variables will have to be monitored, both upstream and downstream.
The thing to watch out for are burst moments, like simultaneous logins of students/users during the start of a class session. Secondly, monitor lag when threshold is reached. The spike, just milliseconds wide, could send the server down locked-up in an infinite loop.
August 14, 2007
Recently, a lot of interesting things have been going on, in relation to my pet projects which seems to be occupying most of it. It’s like a second job except this one doesn’t pay and it doesn’t have any business/commercial value. It’s very boring, as I’ve tried describing it to several young people and all I got was a couple yawns and stares.
Most of the tools I now use are either MIT or L/GPL. I’ve finally got rid of the ones with some royalties stipulated on the license, so I’ve come to a point where most of the stuff I’m dealing can be used freely, which is what this weblog is all about.
At this point, choosing the right network lib is still up in the air, so I’ll keep working with several API libs close until I see the one that will outshine everyone.
Also, I found out setting-up the correct numerical values to fit the V=IR formula was not a walk-in-the-park, partly because I saw something that may throw the entire system off, and that one was the figuring-in vectors and all that LinAlge stuff.
Upload values can be calculated easily as given, with packet size also a given, the remaining values can the calculated to figure the parameters for setting-up a zone. The thing to watch out for are the nodes that attach to zones, so the code may have to keep track of what node is connecting and where they are connecting.
Then someone mentioned a number representing the ceiling for a given zone, it turned out to be 16 connections per zone, excluding other parameters.
I’ve found several forums dealing with these kinds of stuff, though. I’ll just have to lurk more and read the stuff their talking about.
August 8, 2007
This feature I read from my brother sounded like a time machine, implemented as a slider control. That darn thing is so powerful, it can mutate objects across time. It also has the ability of making a player/avatar appear and disappear depending on a timeslice they are allowed to exist.
Man, this is one feature that will probably never get implemented, though. But I will try, nonetheless.
August 7, 2007
Well, it turned the formula wasn’t complicated at all, I remembered the classic formula used in measuring Voltage which is expressed as V=IR. And it all fell into place, even the calculation of V at node J became familiar by simply following the established formulae.
So, yeah. I’ll use this system for the time being until I see a need to switch to a hybrid, perhaps a new way of measuring perf at node J.
Awesome. And I thought I’d lose my hair on this problem.
By the way, to arrive at this formulae, you must have faith. There is no way you will arrive at this formulae by means of science (Lat:scio). argumentum primum
August 5, 2007
I’ve been reading spatial-temporal reasoning as a way of clearing up the mist of mystery surrounding it.
A distributed network of nodes connected to N servers and M untrusted clients. Assuming servers are 100% trusted and not compromised, an estimated perf number at each node can be formulated, though.
Would it be possible for node I to be connected simultaneously to N nodes and still maintain the required flow? Assuming the rate is constant, and the size of spatial-temporal objects are at minimum, would the world rendered at node I be within usable range?
I could plot this as a node within a mesh, the height determines the rate and radius figures the connection count.
August 5, 2007
I’ve been busy with work and aside from that, here are some of the wacky things I’m looking into. Not necessarily bone-shattering nor biblical in proportion, it’s just a simple idea that may or may not happen.
BitStreams In UDP
I think packet bitstream is definitely the solution I was looking for, simply creating the object and writing to it is OK compared to casting structs to char, though. Sending it to the cloud using p2p topology. I’ve spent several hours already just fooling around with this technique and it might be good to do some benchmarks just how many users can it handle before it starts to break.
SOAP v. Roll-your-own UDP Library
Searching about perf numbers comparing SOAP and a Network Library returned zero. I’m guessing there is a big difference between the two nobody has even tried writing an article about it.
Manual Patching v. Auto Patching
Given a world wherein N servers dealing with untrusted M clients, the idea of a distributed patching system could mean a very complicated one. Though if there is a way of reducing the number of untrusted clients to zero then auto patching can be simple.
One World v. Multi Worlds
It would be nice to start off with a one-world implementation and then later on, use the experience learned from the one-world design to come up with multi-world implementation.
Writing The History
The exciting part of it is writing the history of it. The explosion of this technology and the rate of it spreading is simply amazing. It won’t be long before a new wave will come this way.