@redrum said in Map to Engine Compatibility Problems:
This idea would have to be flushed out a lot to see if its viable. Map makers and players still want to see versions of the same map especially when the map is newer so it would mostly have to be under the covers IMO.
There is a question of how to link such maps. We already have a database of maps, it is a yaml file. To get to the immutable suggestion, every version would be a new entry. We'd convert the version and download link to a list. In this way we have an under-cover implementation for the most part. A good chunk of the benefit is from the assumptions we can make about any given download location. If we know a map version, and they are immutable, and we know the download link for a given version, we can always download that XML. Today with updates to maps, we lose that capability with the overwrite of new data, and we lose the information for the old location. I suspect there are more simplifications once things are immutable by convention. Basically, we would be optimizing for the 'copy/paste' and update strategy for maps : )
So there is already an engine version in the map XML. Its use could be expanded so that say the downloader reads it to avoid older engines downloading new maps. But you'd also have to ensure map makers are actually specifying the min version XML field properly.
Indeed, but:
usability problem as you mention
introduces a bulk update problem, we have to bulk update engine versions
tracking engine versions in map XML, I think the two concepts should not be fundamentally related at all. I'd like to see the game engine depend on map parsing, not the other way round in a circular dependency.
we'd have to parse every map XML to show the 'download maps' window, this is likely to be too slow.
it's not known where a game XML will be, and there are multiple. We'd have to scan the entire file directory of a github repo to find the XMLs, and we'll find multiple.
It would help if games and maps were 1:1, then we would know the map XML location and maybe could parse the actual file on the fly. That would be nice as we could put other items like download description and map title all in the same file.
So if we add back in including past jar versions of TripleA then this could be useful but without those most players don't want to have multiple engine versions sitting around so any maps not upgraded are effectively dead. Also developers would most likely have to manage the max version since map makers would know what to set it to.
Good point, I've considered the same. But:
old jar was not a complete/good solution. It did not work for the 1.8 to 1.9 upgrade. We also had to do work to maintain it, it made path loading very whacky and was hard to keep working.
non-upgraded maps are already effectively dead, it's something of an existing problem
I suspect developers will need to manage min-version even. Max version likely would be easy, it'll match to be the next version that is not going to be compitible. WE'd have to discuss what kind, if any mapping there is to the game engine version. So I'd envision this being set to 'version 2' everywhere. When we have a new incompatible engine, we would add a bunch of maps with min version '2' and max version '3'.
Would need a lot more detail on how this would work to determine if its feasible and worthwhile.
Should be feasible, we can introduce some logic to upconvert objects. I'd personally lean on the open-close principle when designing it. 'Worthwhile' should be pretty obvious I would hope. My experience of a player for a decade plus, I've heard a number of endless tantrum's from players before, during and after upgrades. I would tend to agree from experience that destroying a save game is one of the worst things that can happen. If we can lessen the need for a non-compatible release, we get a pretty good win-win where save games are not trashed, and developers can do their work with less effort, which means more work done per unit effort 🙂
Fixing save-game compatibility I think is the best thing we can do for this project. At this point, with the code and maps out of SVN, individual owners converted to teams, I think that is probably the highest impact thing we can do now.