i have advice for your launcher.
try with the old patcher. combine it with *.cup
so.. your patcher will downloaded *.cup files, after the cup file's at your hdd, it will running official patcher.
i have advice for your launcher.
try with the old patcher. combine it with *.cup
so.. your patcher will downloaded *.cup files, after the cup file's at your hdd, it will running official patcher.
Will work with the files compressed or uncompressed as I suggested?
I dont want to combinate it, because a lot of stuffs are already exists for it.
I wrote a lazy style patcher, just close the server then upload or copy your new files and start the server.
Unlike a lot of patcher, this one is NOT USE HTTP and webserver and it can be run under any operating system like *nix and win*.
Dont need any update files like *.cup,*.rar and *.zip so it can save a lot of space on your hard-drive and also can save user's free-time and network usage.
Why? Coz it can be an installer too, and always installs a newest files, then not need more patching
---------- Post added at 01:04 PM ---------- Previous post was at 12:54 PM ----------
Currently only transfer and syncing files between server-client.
So it sends pck files as unhandled. Dont compress or decompress it before send them. Compressing and decompressing means a lot of file descriptors on the server it can eat a lot of memory and CPU usage with up to 100-200 concurrent update proccess.
I think not a good idea.
If we want to do these we can only do with database on client side and some archived files on server which contains actual update files as you need like official patcher.
Its not possible to write same as official, but why?
Official patcher isnt easy to use, but its works and can handle file transfer errors via md5 checksuming.
Last edited by davies142; 11-04-11 at 03:06 PM.
Thats what i trying to say, there are already programs that ARE like the official patcher, in some cases even better (easy to create patches) but sadly i still don't know if i'm allowed to share it.
When I suggested the idea was to compress the pck client side.
Example Server:
/ Patcher_1
element /
models /
xxxx
yyyy
zzzz
/ Patcher_2
element /
models /
xxxx
yyyy
zzzz
You download the files, and the compressed patch. pck
It would be an improvement of the spatch Ronny
-----
The way you suggested is very complicated updates, think I will introduce a new model of clothing, the player having to download the 1gb models?
-----
The server records each folder / Patcher_x type information in MySQL database using the track name + + file size for instance.
You would record when downloading information from the downloaded files on the Internet if you fall pick up where it left off.
You save the files to a temporary folder in the same way that spatch and update the files. pck
---
I know you are with good intention to help everyone, but it is only a suggestion that it would please many.
Every client has a database: SQLITE. < - easy.
Every file update can be follow in databse < - easy
Server syncs client's database < - easy just SQL
we have ~ 200,000 files.. so the databse aprox. 2-20MB
Server also have the database but it must indexes every file changes. < - Hard.
In windows system we have a function in C++ which can watch directory changes, so we know every changes under directory but it isnt recursive and I cant watch filesystem, I didnt write ant-virus program yet, they knows it.
So I think a solution is Virtual FileSystem. < - Very Hard
If we can write a patcher with virtual filesystem, we will know every filesystem changes and we dont worry about unicode filenames and dont need rehash the database on server. So we can journalize our virtual filesystem.
Therefore we can integrate an FTP Server < - Medium
Its Hard to make, but I think beat all solution.
Fast, stable, and can update only a necassary files.
So if you change one shader in models.pck the server will only send that one.
BTW, not necessary save files in temporary folder, then it compress into .pck files with spck method, we can do that in memory, much faster :)
If I have a lot of free time, I will write this program.
I made a virtualfs but that one is read-only.
Spck dont use any magic, so only zlib and stupid XOR needed.
FTP server is bit harder but possible.
Hard...
I bugfixes my currently patcher, then it runs without problem I being share it.
It sends whole files (.pck) if size or modified time different than client's one.
Last edited by davies142; 11-04-11 at 09:24 PM.
You are over thinking it... For my own client I've written a basic SVN based patcher (Since server just stores bin-diffs it doesn't take up much space server side) that uses svn tags for patching...
You run the risk of people that have crappy computers not being able to do it, sure it may be faster but it will use a crapton of ram...BTW, not necessary save files in temporary folder, then it compress into .pck files with spck method, we can do that in memory, much faster :)
Last edited by das7002; 11-04-11 at 10:07 PM.
Not sure, because I think at stream buffering.
Dont need any filesystem operations to compress files into pcks we can do without it. Of Corse I did not mean that write all files into RAM.
Next: My patcher on server side sometimes being crashed, mysterious thing, what killed, currently under debugging mode.
If I catch the bug, I can drop here the patcher.
Later: I thinking about a virtual filesystem, so I doing brain-storming now...
Regarding the database server do not think it would be difficult:
Example:
You will make reading a file on FTP (txt) file that will contain the updates so that instead of or arquivo.7z. xup as spatch would check the folder.
If there is a new update it checks the file to the database and downloads.
In the BD will have:
Version | Folder Name | Path | File |
He reads the files in the current version and low.
-----
You have to have temporary folder, if the User has very pressing process or the internet drop or something similar bug may occur. The update should be done only after downloading all files from that version.
-
About the 20k files, I do not need, the User downloads the full client and will only have to update the files that the administrator wants (updates)
----
A difficult question is the server to the list of update files? It could be done in the PC before sending to server, after you done send the User + sql update files.
Sorry my english.
Omg so much overhead... looks like you are trying to kill birds with nuclear warheads...
just make a simple file with index for each version, a file with all versions and let the patcher iterate over it and download file index for all versions that are newer than his own. then just diff out what is redundant and download what is needed. Why the hell does everyone think you need sql for such simple tasks?
for those who are searching for a solution to sync client files with server (without pck injection) you can use svn...
install a repository on the patch server and import the client files to this server
deliver svn commandline tool with a checkout.bat file as the "patcher", i'm using svn the same way to keep pwTools up-to-date
Last edited by ronny1982; 12-04-11 at 12:47 PM.
SVN isnt a patcher solution, could not create a shortcut, could not inform user, SLOW and dont have GUI.
Iam using sqlite because its very fast, what I described above, that dont need any versioning and packages, you copy your files to bundled FTP directory like shader.pck.files, its very easy, safe and fast, but yes a bit overhead :)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
But this patcher method only idea right now.
Last edited by davies142; 12-04-11 at 02:48 PM.
Adapting all that way believe it would be better than the official patcher. I have some problems with the official patcher paths with some files that are not identified yourself as already pointed out.
---------- Post added at 01:00 PM ---------- Previous post was at 12:59 PM ----------
I believe that releasing the patcher with functions and have about an author on the due credits.
I have to agree with Anubis on this one, you are going crazy with the overhead you have and wayyyy overthinking it...
SVN is not slow, it is just as fast as the network it runs across... and about the GUI bit you said there... There are many that exist, you obviously can't Google
Could not inform user? Wait what...? Use SVN tags for version numbers, let patcher just get a list of the tags and do an int comparison if (currentVersion < svnTagVersion) update();
Tada!
And its a bad one...
I mean Is SVN have any dara corruption check?
I mean if you download a big file 1GB from somewhere it can be corrupted easily for example: winrar says Corrupted file / Invalid CRC!
I think SVN cant do that, SVN usefull for small files.
Last edited by davies142; 13-04-11 at 01:29 PM.
Unlike your mess of a patching solution you'd only be downloading what's different... So it'd be lots of small files...
Only if for some reason you decide to use UDP to transfer it... TCP is self correcting... so it is very rare for any corruption to take place...
Last edited by das7002; 13-04-11 at 02:09 PM.