Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411430 Posts in 69363 Topics- by 58416 Members - Latest Member: JamesAGreen

April 20, 2024, 02:29:02 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperTechnical (Moderator: ThemsAllTook)Project: free autoupdater/launcher for games
Pages: 1 ... 3 4 [5] 6 7 8
Print
Author Topic: Project: free autoupdater/launcher for games  (Read 27077 times)
Christian Knudsen
Level 10
*****



View Profile WWW
« Reply #80 on: April 05, 2011, 12:20:47 AM »

Which brings us back full circle to showing a dialog every time it runs. Cheesy

Showing a dialog every time it runs seems annoying to me. But I would like it to show a dialog when there's an update available, asking the player whether or not they want to update right now. I personally want to be asked before a program starts updating, especially if updating impacts gameplay, savegame compatibility and the like...
Logged

Laserbrain Studios
Currently working on Hidden Asset (TIGSource DevLog)
Rob Lach
Level 10
*****



View Profile WWW
« Reply #81 on: April 05, 2011, 12:27:58 AM »

Also I think have a single ".pack" file is overly complicating things and could unnecessarily roadblock development pipelines.

It'd be much easier to have a ".pack" file that has the whole package but also have the game files hosted sparsely. I gather if you're doing an update you'll only be updating one to a few files (executable, a few assets).

If you have the files hosted sparsely you could do things like just updating the placeholder art directly instead of having to rebuild a distribution pack each time.
Logged

Rob Lach
Level 10
*****



View Profile WWW
« Reply #82 on: April 05, 2011, 12:37:05 AM »

Which brings us back full circle to showing a dialog every time it runs. Cheesy

Showing a dialog every time it runs seems annoying to me.

If you put some functionality into the loader (such as a resolution dropdown or fullscreen enabled checkbox) it would take away from that annoyance.

Games would implement those selections through arguments. What options are available could be defined in the config for the loader.

That's what we did for one of my old games: http://www.acm.uiuc.edu/gamebuilders/files/EinSetup.exe

Aside but relevant:

I actually prefer it that way. I find it odd that games nowadays take all this time to load the menus and show you studio logos just so you could goto the options, change graphics settings, and then be forced to restart and do all that loading again. Rather have something lightweight up front.
Logged

Evan Balster
Level 10
*****


I live in this head.


View Profile WWW
« Reply #83 on: April 05, 2011, 12:52:06 AM »

Rob - sparse updates and game config options are nice features, but for now I think we're going for a minimal set of requirements so as to have an initial version of this operational soon.  This is especially relevant given our current approach involves rewriting the (small) program for each platform in order to achieve the best deployment schemes.  (Single files, in the case of Windows and Linux.)

And for whatever it's worth, I'd *really* rather avoid showing a dialog when the game isn't being updated.  But it may be that we can't come up with a better scheme for uninstalling.
Logged

Creativity births expression.  Curiosity births exploration.
Our work is as soil to these seeds; our art is what grows from them...


Wreath, SoundSelf, Infinite Blank, Cave Story+, <plaid/audio>
Rob Lach
Level 10
*****



View Profile WWW
« Reply #84 on: April 05, 2011, 01:00:46 AM »

Yah good move. I'm just throwin' ideas out.
Logged

Evan Balster
Level 10
*****


I live in this head.


View Profile WWW
« Reply #85 on: April 05, 2011, 01:06:00 AM »

Most def.  Part of the glory of this is that no matter what we end up deciding on, its source will be made available so folks can modify it freely.  :D

On an amusing note, the trivial way to deploy updates to an autoupdater that doesn't support them would be to add the new autoupdater to the game files, and have the old updater launch the new one, which in turn launches the game.
Logged

Creativity births expression.  Curiosity births exploration.
Our work is as soil to these seeds; our art is what grows from them...


Wreath, SoundSelf, Infinite Blank, Cave Story+, <plaid/audio>
JobLeonard
Level 10
*****



View Profile
« Reply #86 on: April 05, 2011, 04:24:17 AM »

I find it odd that games nowadays take all this time to load the menus and show you studio logos just so you could goto the options, change graphics settings, and then be forced to restart and do all that loading again. Rather have something lightweight up front.
I would just like to point out I completely agree with this. Though it doesn't apply to most indie games, since they generally boot up quite fast, and can change settings without restarting.
Logged
technogothica
Level 1
*



View Profile WWW
« Reply #87 on: April 08, 2011, 08:55:18 PM »

Hi Guys,

The windows version is almost finished. But there's one last design consideration that needs to be addressed.

I've started to re-evaluate my position on using XML for the manifest file (we're calling it that now, yes?). I was originally opposed to the idea because parsing on a line-by-line basis is a lot easier. But during testing I've come across a couple of areas where the integrity of the downloaded manifest file is an issue.

The launcher uses MD5 hashes to check the integrity of all downloaded files. However, the manifest file itself cannot have such a check due to a chicken-and-egg paradox. That is, the manifest file cannot store its own checksum or MD5 hash.

During testing I've encountered the following scenarios:

1) If the TCP connection drops out half-way through the download, some of the lines may be omitted, and the launcher may incorrectly assume that all files are accounted for.

2) The web server may respond to 404 and 500 errors with a standardized error HTML page. The downloaded file is valid and complete, but not a manifest. The manifest parser will read the lines and proceed to use the garbage data as if it were actual file descriptors.

I've addressed these problems by introducing start and end tokens:

Code:
*UPDATES-BEGIN
(filename) (size) (hash) url
(filename) (size) (hash) url
(filename) (size) (hash) url
(filename) (size) (hash) url
(filename) (size) (hash) url
*UPDATES-END

Parsing does not begin until an *UPDATES-BEGIN token is encountered. That solves the problem of identifying and rejecting garbage data. Also, if the *UPDATES-END token is not encountered before the end of the file, then the parser assumes the download was incomplete and aborts.

This works quite well in all scenarios that I have tested.

But it has occurred to me that XML is actually well suited to this scenario, because it has its own built-in integrity checks. Consider this alternative format:

Code:
<?xml version="1.0"?>

<update version="1.0">
   <file name="file1.ext" size="1234" hash="abcdef..." href="http://www.server.com/update/file1.ext"/>
   <file name="file2.ext" size="4567" hash="abcdef..." href="http://www.server.com/update/file2.ext"/>
   <file name="file3.ext" size="8901" hash="abcdef..." href="http://www.server.com/update/file3.ext"/>
</update>

Using XML may make the program a little more complex, but far more robust. Also, an XML syntax will make adding new features easier in the future.

What do you guys think?
Logged

zamp
Level 1
*



View Profile
« Reply #88 on: April 09, 2011, 04:55:51 AM »

You might want to make the files.xml file be generated with PHP based on the date. Let's say client has last updated 1th Jan 2011, it'll pass that to the http request and the PHP side would just fill the xml file list with only files that have been updated after the date given.
Logged
Jase
Level 0
**


View Profile WWW
« Reply #89 on: April 09, 2011, 05:08:45 AM »

I'm new to this discussion, and these forums in general, but I'm very interested in this concept and will be keeping an eye on the progress Smiley

As for the manifest file format, I'm in favour of the use of standardised formats over custom ones purely from the ease-of-use point of view. Standardised formats have existing tools and libraries that people can use to generate manifests quickly and easily.

Using XML as a file format means that you get inherent document validation and the ability to use existing libraries across many different languages to generate the manifest, which is a big win in my point of view.

Just my 2c.
Logged
Evan Balster
Level 10
*****


I live in this head.


View Profile WWW
« Reply #90 on: April 09, 2011, 12:22:38 PM »

XML is acceptable, given the tools to parse it are tiny and can be statically compiled.  I'm game, though on the other hand it means a little more work for devs.  However, we're going for end-user convenience more than developer convenience, so the heck with them.  Smiley

zamp - As mentioned before we're probably going to hold off on partial updates until we've got a 1.0 version running.  After all, most folks' games (around here) are under 20 MB or so.
Logged

Creativity births expression.  Curiosity births exploration.
Our work is as soil to these seeds; our art is what grows from them...


Wreath, SoundSelf, Infinite Blank, Cave Story+, <plaid/audio>
JobLeonard
Level 10
*****



View Profile
« Reply #91 on: April 09, 2011, 03:29:01 PM »

Well... if the format is standardised, it wouldn't be impossible to make an "update generator", would it? Wink
Logged
technogothica
Level 1
*



View Profile WWW
« Reply #92 on: April 09, 2011, 03:42:26 PM »

Well... if the format is standardised, it wouldn't be impossible to make an "update generator", would it? Wink

Do you mean generate the manifest file? No problem. In fact, I've already written one Grin
Logged

Jase
Level 0
**


View Profile WWW
« Reply #93 on: April 09, 2011, 03:58:00 PM »

Well... if the format is standardised, it wouldn't be impossible to make an "update generator", would it? Wink

Do you mean generate the manifest file? No problem. In fact, I've already written one Grin

Kind of the point I was trying to make. It would be ideal if updates could be created as part of a triggered build in a CI server (CruiseControl) using existing tools. At least, that's what I would do Wink
Logged
technogothica
Level 1
*



View Profile WWW
« Reply #94 on: April 09, 2011, 04:07:40 PM »

Well... if the format is standardised, it wouldn't be impossible to make an "update generator", would it? Wink

Do you mean generate the manifest file? No problem. In fact, I've already written one Grin

Kind of the point I was trying to make. It would be ideal if updates could be created as part of a triggered build in a CI server (CruiseControl) using existing tools. At least, that's what I would do Wink

I don't know anything about CI server. But the program I wrote writes output to stdout so it can be added to any scripted tool chain.

zamp's suggestion of using a PHP script is also a good one. You can either host the script on the web server or run it locally through CLI. That task is trivial to the point that it can be done easily in just about any language.
Logged

zamp
Level 1
*



View Profile
« Reply #95 on: April 10, 2011, 01:19:37 AM »

zamp's suggestion of using a PHP script is also a good one. You can either host the script on the web server or run it locally through CLI. That task is trivial to the point that it can be done easily in just about any language.

Yeah and if you ever need to update/check all files you could just pass 0 as the timestamp. Maybe add a checkbox "check all files" in the updater or something Wink
Logged
Evan Balster
Level 10
*****


I live in this head.


View Profile WWW
« Reply #96 on: April 22, 2011, 10:13:14 AM »

How's progress?  Grin
Logged

Creativity births expression.  Curiosity births exploration.
Our work is as soil to these seeds; our art is what grows from them...


Wreath, SoundSelf, Infinite Blank, Cave Story+, <plaid/audio>
technogothica
Level 1
*



View Profile WWW
« Reply #97 on: April 25, 2011, 03:13:08 PM »

How's progress?  Grin

I'm literally within hours of release of Win32 version.

But my family's Easter holiday and writing an animation editor are my current top two priorities Wink It should be available by the end of the week.

Enjoy your Easter break!
Logged

bluescrn
Level 1
*


Unemployed Coder / Full-time Indie :)


View Profile WWW
« Reply #98 on: April 26, 2011, 12:08:10 PM »


I've only skimmed this thread... but if you're implementing an auto-updater in your project, you should consider security quite seriously when hosting your update files.

It's scary that the average PC has maybe 5-10 or so different auto-updaters running for all sorts of apps - Flash, Java, Windows Update, AV software, and many more... and any one of these could deliver malware to millions of PCs if the server was compromised...

Would be much better if all software shipped complete and mostly-bug-free...

Logged

technogothica
Level 1
*



View Profile WWW
« Reply #99 on: April 26, 2011, 04:12:15 PM »

I've only skimmed this thread... but if you're implementing an auto-updater in your project, you should consider security quite seriously when hosting your update files.

Agreed. All developers, whether you use this updater or not, should learn computer security practices. Paranoia is the only option.

Indie != Lazy

Quote
Would be much better if all software shipped complete and mostly-bug-free...

Yes that would be wonderful. Ok, back to reality...  Cheesy

Seriously though, this updater is not just about bug fixing. There are marketing benefits to being able to roll out new features after release. The epic and enduring popularity of Minecraft is probably partly due to the fact that new features are being added all the time.
Logged

Pages: 1 ... 3 4 [5] 6 7 8
Print
Jump to:  

Theme orange-lt created by panic