Tag Info

Hot answers tagged

25

There are multiple ways to do this, the simplest would be to XOR the two files and compress them (GZIP or so forth). The theory behind this is that hopefully you can get a large sequence of zeroes (long sequences of the same values compress well). You can take that concept further and try and find areas of the two files where the data is identical and omit ...


14

The executable code of a game doesn't always reside just in the executable, often it is divided into several dynamic libraries (for example the game, graphics and sound engines), the actual executable, and possibly many scripts for various purposes. A patch could be fixing issues in any single one of these parts without warranting change in all of them. A ...


9

One easy-ish approach is to keep old loading functions around. You need only a single save function that writes out only the latest version. The load function detects the correct versioned load function to invoke (usually by writing out a version number somewhere in the beginning of your save file format). Something like: class GameState: ...


8

Our basic rule is to never change an existing packet type. Everything is either added at the end of an existing one, or a new command. This also makes it far less likely for two people to stomp on each other's work.


6

A "community patch" could mean one of two things (or some combination thereof): A mod of the game, using the games official or unofficial modding tools, that addresses bugs and balance issues as opposed to introducing new functionality, art or content like most mods do. For example, consider the unofficial patches to the Baldur's Gate games. An official ...


5

A simple way to achieve a semblance of versioning is to make sense of the members of objects you are serializing. If your code has an understanding of the various types of data to be serialized you can get some robustness without doing too much work. Say we have a serialized object that looks like this: ObjectType { m_name = "a string" m_size = { 1.2, ...


5

You are very close to understanding how the system works. My answer won't necessarily be how Starcraft works - but most moddable games work like this; and Starcraft is either very similar or the same. Firstly the mod system would have some form of a header file for each mod. This would list any 'base' dependencies: in the instance of "Liberty Multi" it ...


5

Thanks for all of the help guys, but after some looking around, I found a really good updater. It's called Puchisoft Dispatcher. They have a freeware version, and it is really good for non-commercial projects.


3

It's not inconceiveable, especially on a PC, that they just version the gameplay code and bump the version when they make a change that affects the replay system. If replay file is tagged with the version of the gameplay code it was created with and the client still has access to that version that it should work fine.


3

May be overkill, but RakNet includes an autopatcher system: The autopatcher is a class that manages the copying of missing or changed files between two or more systems. It handles transferring files, compressing transferred files, security, and file operations. It does not handle basic connectivity or provide a user interface.


2

If you game is very data orientated, it could be easy to make your own loader to verify and download data from a server, then launch the game. It shouldn't take too long in a managed language. I made one a while back where the client downloaded a map of what the game folder shoulld look like, files, md5's, etc. And then looked through local files to see ...


2

I think the answers proposing DB solutions are jumping to a specific implementation without understanding the problem. Databases don't make merges easy, they just give you a framework in which to store your data. A conflict is still a conflict even if it's in an DB. And checking out is a poor man's solution to the problem - it will work, but at a crippling ...


2

If a change is introduced that is means you need to issue a client update as an "emergency bug fix", then you can apply to Apple for an expediated review. And in any case, Apple do seem a bit quicker at approving apps if the update is essentially a bug fix. However, I would really recommend that you make your server protocol backwards-compatible. Part of ...


2

This is a problem that exists not only on games, but also on any file exchange application. Certainly, there are no perfect solutions, and trying to make a file format that will keep with any type of change is likely to be impossible, so it's probably a good idea to prepare for the type of changes you may be expecting. Most of the times, you'll probably be ...


1

1) If you're using SpriteFont of XNA (ContentPipeline) these SpriteFonts can be loaded by XNA (in the Content directory) via ContentManager.Load<SpriteFont>("AssetName") without having it installed on the client pc. SpriteFont at MSDN 2) Install: install XNA Redistributable on the PC copy Application files to destination An alternative would be ...


1

The easiest way for the developers (who tend to make games for commercial purpose) to make community patches is to give the players an SDK/API or whatever has been created strictly for the game. Of course a normal player will not have access to the 3D Studio Max, but the developer can provide something else, like the 3d item prospector, 3d world builder etc. ...


1

Normally they use a third-party binary diff system to distribute patches to the game data. The executables are typically small enough to be trivially distributed entirely. Most modern games have hundreds of megs of game data (mostly textures, models, levels data etc). These require patching quite often. As far as I know, the publishers normally have a ...


1

I'm trying to associate this with something that I understand, so I'm thinking in terms of Minecraft right now. I'm picturing a live server with players making changes in real-time while the developers are running on a test server fixing/creating new content. Your question almost seems like 2 unique questions: How to insure that object IDs are unique ...


1

Unless you're embedding your resource files inside the executable file, patching a game can simply consist of changing some files. These can either be executable files, script files, media files, or any other type of files. My games usually have resource files packed into zip files, so when I release standalone patches for my games, I send a batch file that ...


1

Assuming that you're not going through the Mac App Store, on OS X the most common way for programs to self-update is using Sparkle. It's simple, user-friendly, in-place (ie: no separate "installation" process; the new version just replaces the old version), extremely widely used, and it's free.


1

Store everything as an attribute (or decorator) - with mount points. Let's take a house the player has designed as an example: o House: { Type = 105 } // Simple square cottage. o Mount point: South Wall: o Doodad: Chair { Displacement = 10cm } o Mount point: Seat: o Doodad: Pot Plant { Displacement = 0cm, Flower = Posies } // Work with me here :) ...


1

One way of tackling this is along the lines of a game called "Heroes of Newerth." (which changes every +/- 2 weeks) From what I can tell they: Use diff patching for the game and replays. All replays are stored on the cloud. They eventually expire. If the user wants to watch an old downloaded replay they need to use the "Compatize" button first. It looks ...



Only top voted, non community-wiki answers of a minimum length are eligible