ENET
|
  |
| Joined: 01 Jan 2010 |
| Total Posts: 4820 |
|
|
| 21 Jan 2012 04:14 PM |
I noticed all place compilers, including mine, compile the whole place, but they also don't account for parts that have their default properties. So I updated mine to check if the objects property is the default, and if its not then to compile that property. A produced script with thousands of lines was drastically reduced to a few lines using this method.
I just wanted to see what everyone thought about this. Now then, roblox why won't you do the same thing to your xml files!? It would make clients load places faster, and save data on our pc. |
|
|
| Report Abuse |
|
|
jode6543
|
  |
| Joined: 16 Jun 2009 |
| Total Posts: 5363 |
|
|
| 21 Jan 2012 04:16 PM |
Well, one problem I can foresee: what if they change the default value? What happens to the XML file? It breaks. :/
"Be nice to nerds. Chances are you'll end up working for one. -Bill Gates" |
|
|
| Report Abuse |
|
|
|
| 21 Jan 2012 04:30 PM |
The admins have already explained why they save the default value.
It's because they might want to change the default value in the future. |
|
|
| Report Abuse |
|
|
Legend26
|
  |
| Joined: 08 Sep 2008 |
| Total Posts: 10586 |
|
|
| 21 Jan 2012 04:52 PM |
I made mine to work like this:
ClassName{Name,properties,...}{Children}; MapEnd<>
Where everything would be separated by a comma. True and false properties are shortened to t and f (See example below) and Vectors and CFrames and numbers are rounded to the nearest hundredth. Vectors and CFrames are enclosed in '<' and '>'. The names of the properties are omitted and the ordering is determined by a reference class.
Because of this format (used to minimize the size of it), if I suddenly dropped a property or two it would be impossible to tell what is what.
Example:
Part{Part,2,2,f,f,t,0,0,0.5,0.3,194,1,1,1,1,1,4,5,< 4,1.2,2 >,< 0,-0.617,0,1,0,0,0,1,0,0,0,1 >};MapEnd<>
Pretty short wouldn't you think? If more properties are added it does get confused though. |
|
|
| Report Abuse |
|
|
ENET
|
  |
| Joined: 01 Jan 2010 |
| Total Posts: 4820 |
|
|
| 21 Jan 2012 08:35 PM |
Mine just goes through a list of properties and checks each one if its a property of the class. Then it checks if its default. Then it converts it... Using string.format and what not.
|
|
|
| Report Abuse |
|
|
ENET
|
  |
| Joined: 01 Jan 2010 |
| Total Posts: 4820 |
|
|
| 21 Jan 2012 08:37 PM |
| Either way, I kinda like mine. It comes with a gui telling how much of a place is compiled so far. And then exports it into a script and then when said script is ran it tells you how much of a place has been loaded. |
|
|
| Report Abuse |
|
|
ENET
|
  |
| Joined: 01 Jan 2010 |
| Total Posts: 4820 |
|
|
| 21 Jan 2012 08:39 PM |
Well they could include a version in the file or a list of the default values used. :)
Ie if there was a default value used it stores that value in the file and says if the part has no value for that property to use that default value. |
|
|
| Report Abuse |
|
|
|
| 22 Jan 2012 09:45 AM |
If i were roblox i would have a list of lets say, Appereances
Each part indexes this list to get their appereance. If all bricks have same color and so on, theres only 1 appereance in this list. It would only take more space if every brick was completely different which wont happen eva.
Also a similiar list for the surface types and another one for the surface parameters.
For cframe too, so that they dont have to round the cframe rotations ruining everything that isnt rotated in 90 degree steps.
Then, they would need to use das traveling salesman algorithm to sort the bricks, and define each bricks cframe or just position relative to the previous brick, so the values take less space since the distances will be shorter. (lolo overoptimization ftw)
Tho they probably currently sort the bricks by their parent so its in a tree so they need to give each instance an id and set the parent properties or possibly children properties (children takes more space but easier to make the file into workspace thingy)
After that theyre supposed to run 5 different compression algorithms on the file, check which one worked the best, mark the algorithm used at the start of the file and theyre done with compression. |
|
|
| Report Abuse |
|
|
|
| 22 Jan 2012 04:26 PM |
| Roblox could just use gzip to compress their files. 11.7MB to 331KB. WOW! |
|
|
| Report Abuse |
|
|
LocalChum
|
  |
| Joined: 04 Mar 2011 |
| Total Posts: 6906 |
|
|
| 22 Jan 2012 04:39 PM |
@match
Or lzma, it does even better. |
|
|
| Report Abuse |
|
|
|
| 22 Jan 2012 04:55 PM |
@localchum I once turned a 7GB ISO of Windows 7, zipped it, gzipped that, then finally used lzma.
Total size: 4.3MB
Now that's a comparison, right there.
~Techboy6601: The IDE guy~ |
|
|
| Report Abuse |
|
|
stravant
|
  |
 |
| Joined: 22 Oct 2007 |
| Total Posts: 2893 |
|
|
| 22 Jan 2012 05:05 PM |
@TechBoy I don't believe that. That's 2000x compression, when even lossy formats for music will sometimes get only around 10x. |
|
|
| Report Abuse |
|
|
1Ra
|
  |
| Joined: 02 May 2010 |
| Total Posts: 2400 |
|
|
| 22 Jan 2012 05:12 PM |
| if techboi's file was consistant of physical materials, it would be denser than a black hole. |
|
|
| Report Abuse |
|
|
Bubby4j
|
  |
| Joined: 25 Dec 2008 |
| Total Posts: 1831 |
|
|
| 22 Jan 2012 07:28 PM |
If they did a proprietary file format for places they could really cut down on the size at least 50x.
They could use 1 character for up to 8 booleans in a object.
Anything would be better then the XML they use now. |
|
|
| Report Abuse |
|
|
|
| 22 Jan 2012 07:31 PM |
@Bubby4j
Yeah. Except we couldn't edit the file in XML when we want to. |
|
|
| Report Abuse |
|
|
ENET
|
  |
| Joined: 01 Jan 2010 |
| Total Posts: 4820 |
|
|
| 22 Jan 2012 07:31 PM |
Yes I know. Something they really need to work on is the "You have lost connection to game"
I know I didn't lose connection, the waiting for character just took to long. Instead of saying you lost connection it should say would you like to try and reconnect. Also if it takes too long to retreive character it should give you a fake one until it loads the other. |
|
|
| Report Abuse |
|
|