DepthHUD Lite >> Experimental "Cloud"

Hi everyone,

I’m currently working on a rendition of DepthHUD Inline, but lately I was quite bothered by something :
I know some people don’t like to use SVN and stuff, yet I want to keep my addon updated at all times for the users since it may be getting a lot of updates rapidly.

So I come up with a little aside project that would help me doing this, which is “DepthHUD Lite :: Cloud Loader”.

I have two explanations, one for end-users and one for those who want to see the technical points.

Here is a simple explanation :

If you want this addon, please note that


installing both Cloud Loader and Locale will conflict

. You DON’T need to install both to enable Cloud updating, the Locale has an integrated Cloud Loader made to fit with the Locale.

Cloud Loader for download as an Addon on garrysmod.org :
http://www.garrysmod.org/img/?t=dll&id=106002

Locale as a SVN :
http://depthhudlite.googlecode.com/svn/trunk/

Technical explanation :

Let me remind you that the addon is exclusively clientside so we’re not talking about serverside working models.
Yet I don’t know if it’s a reliable project model so let me expose it to you :

So basically, the client gets an addon with two main files : The DHLITE Cloud Loader and the Locale Script.

The Cloud Loader attempts to catch the list of files from the web, which is a SVN,(using http.Get) and stores it into a string. It runs some little verifications to check if the data is corrupt or not what expected, then get all the files again into strings and execute them.

If it runs fine, then the the end user will be using the latest version of the script. Otherwise, it will run the version that the end user acquired locally (Locale Script) along with the addon.

The flowchart looks approximately like this :

https://docs.google.com/drawings/pub?id=1Hr8XO3azpKZiMIGDtLe9LPlBrErFAnplv7l5Z7BWj64&w=903&h=1438

It doesn’t store Lua script into text files at any moment, the end user will need to either acquire from time to time the latest version by downloading it so that he can play with the latest version offline. Which is quite sad, but which may be part of some sort of security in which I don’t even know the effectiveness :

Since the script caught from the Cloud is not stored offline into a text file, and http.Get being strictly enclosed in the addon : If the files were to be stored in text files to be used offline, servers could eventually modify the contents of the text files, breaking down the verification system, to use the Cloud Loader as a hub to autorun annoying scripts.

For the time being I’ve coded the theoretical part of the addon closely tied to DepthHUD Lite (I didn’t code the version check though…), downloadable here :

http://www.garrysmod.org/img/?t=dll&id=106002

Please note that this version of the Cloud Loader is not provided along with a Locale Script, that means if the Cloud Loader fails, no default Locale files will be loaded up.

(If you fiddle in the Lua files you will easily find the public SVN URL that of the project that is :
http://depthhudlite.googlecode.com/svn/trunk/

…but I don’t know if the project model is worth being made extensible so that other clientside addons could be run using the exact same model but this time in an arbitrary model that is :

Write an addon to fit a Cloud model, enter the URL over to the Initialitation file of your Cloud Addon into the Cloud Loader, then you can use the addon using an UNIQUE Cloud Loader Addon (that means this Loader can run several addons at the same time over different URLs)… Thing is, this way, some servers could eventually take control on the Cloud Loader (as http.Get would be based on stored strings) and append unwanted Cloud Addons URLS and stuff so I don’t know.

Could I get some advice or opinions over this ? It really serves as an experimental project for the time being.

Thanks for reading!

(PS : I know this thing doesn’t fit the “Cloud” definition but whatever)

EDIT: DERP, didn’t read.

actually, whats the difference between the DepthHud Inline and DepthHUD Lite?

What a great idea. Definitely will try this out.

It’s the recode that uses less processing power.

I like your idea with loading the script from your svn. I hope things work out right and this gets done.

I would have so many practical use’s for this. Talking about the chart.

I’m guessing you did the flowchart because you were bored, but nice touch :stuck_out_tongue:

This looks like what I did for EasyBan, except it’s client side, has no local cache, and looks much more complicated.

Plans to turn it into a system where coders can easily use this for their own addons?

Well while I’m working on DepthHUD Lite I will find out the limitations of this Cloud approach.

For the time being, the tests are working quite fine. I tried to upload a flawed code to the Cloud so that I can test the exceptions (the red dashes on the chart) to run Locale :

The addon is behaving as planned : When the SVN has chuck of code that is not behaving correctly while loading up (CompileString>>RunString) then it will smoothly escape and load the Locale version.

By the way I’ve put up a simple explanation of the addon behavior in a video form :

Is there going to be a regular SVN for this?

Oh, as we’re at it :
The SVN is the Locale version. (So the things explained in the video applies there)

I had already posted it on the OP but here it is :
http://depthhudlite.googlecode.com/svn/trunk/

Can we have DepthHUD Lite and DepthHUD installed at the same time?

Yes, and you actually should keep both if you’re an active DepthHUD Inline user. DepthHUD Lite has nothing visible apart from the Cloud stuff.

Actually there is the Health element but as there is currently no way to customize it nor disable it, I have to use some debug variables to code the elements until the customization structure is put in place. When something will be useable, everyone will be informed and ready to try thanks to the Cloud.

The Cloud currently serves as a way to distribute quick updates to all users in early development so that they don’t need to bother so much about updating their SVNs.

This is a great idea. I like it.

While I don’t understand a word you said, I’m subbed on Youtube and saw the video and I thought it was interesting.

So basically we get the file without being able to actually SEE the file. Is this so no one can edit it themselves, or because it’s easier for you/others?

Absolutely not, the files are available in the SVN and just like any addon anyone can modify the contents. If you modify the contents of the Locale addon enough you can actually disable completely the integrated Cloud Loader so that you can run your very own modified version (there are actually two methods for doing that easily). The Cloud is not an attempt at all to stop that.

Thing is, the contents of the file are like “read” directly from the Internet thanks to the Cloud Loader (it’s just like you were reading a webpage off a website), and then stored and kept in memory until the contents is run one time (that means it is not stored on the local hard drive). The files contents are no different from those on the SVN.

Not being able to see the file, is not because it’s easier for me coding or for the end users playing, it’s just the way it works, there is absolutely no need to see the file in a “physical” form as a end user when loaded from the Cloud (since the Cloud IS the online SVN repository of the addon) :: If you want to see the file contents, just browse the SVN, that’s exactly what the Cloud Loader does.

Awesome idea. I really hope this catches on with other devs.

So it’s similar to the new CloudScript, yes?

Only the fact that it is hosted on the internet, else they don’t have that much in common, cloudscript is so you can easily spawn sents, without downloading/installing/restarting. This is only so you can have the most up to date version, and a local backup when you don’t have a internet connection :smiley:

Tell me when I’m wrong.