Re: 32bit base set development thread
Posted: 28 May 2010 19:07
GeekToo is knowledgeable (even very much so?) about NewGRFs but he's also very busy so I'd rather not bug him with this unless he explicitly offers his help.
The place to talk about Transport Tycoon
https://www.tt-forums.net/
This is a question that really needs an answer before proceeding with the next step. Wasila gave two advantages, although 1) can also be achieved through other means, and I'm not sure what he means with "make it easier to add to". Jupix wrote about some disadvantages of the current system, but nothing specific about 32bpp graphics in grfs.GeekToo wrote:-identify the gains and losses of every stakeholder when the changes get implemented
.....
Second step (why do we want the change, and what does every (group of) stakeholders gain or lose with the change. I have my ideas about this, but because I want this to be an open discussion, I will not fill it in, but let's see what others think about this, so please reply if you've got an opinion about this.
This should really be answered more detailed before continuing with step 3. If the post by GeekToo isn't reason enough, "what's the purpose of this patch? Why would it be useful?" is a question that would surely be asked (if not implied by it's description) before it's included in trunk. If a disadvantage is only found out then because you didn't think it though beforehand, it could be a lot of wasted time.why do we want the change, and what does every (group of) stakeholders gain or lose with the change
Frankly, the answers you're looking for are already posted in this, and the patch thread. The tars seem to me like a hacky content delivery medium, aren't toggleable, can't make a standalone graphics pack, and can't be distributed through BaNaNaS. As for having to expend energy on overhauling the NewGRF format and parser to make them support 32 bits, while unfortunate, it's just something that I believe should be done. There isn't much more to say that I haven't covered earlier.Yexo wrote:This is a question that really needs an answer before proceeding with the next step.
Like implementing in game management for tars, incl. support in BaNaNaS? I always assumed that is out of the question, based largely on the fact that the format, despite it's inherent problems, is a well-established format of distributing our content, and still there hasn't been a whisper on supporting it in BaNaNaS, and no GUI for managing tars either.Wasila gave two advantages, although 1) can also be achieved through other means
I don't understand what you expect me to write to cover "specifics about 32bpp graphics in grfs". If you mean technical stuff to specify how it would work, then don't hold your breath while waiting for me to write that, since I don't know the first thing about the technical side of grfs. That topic needs to be covered by programmers or GRF coders, i.e. people who know what they're doing.Jupix wrote about some disadvantages of the current system, but nothing specific about 32bpp graphics in grfs.
Fair enough. Although running the -EZ patch doesn't make you very network compatible, either.One thing too keep in mind is network compatibility. When a grf has only 32bpp and no 8bpp sprites it can't be used by ttdpatch nor by openttd when an 8bpp blitter is used. That means that as soon as such a "32bpp grf" is used in a network game, you force all players to use a 32bpp blitter to join your game. I think it'd the first "setting" (as in server configuration, including the used newgrfs) that breaks network compatibility between 2 openttd clients of the same version.
Not quite, there would be benefits over tars, mainly in ingame manageability and distribution. Dunno if the 8 bit blitter could display 32 bit graphics in 8 bits without the content actually being in 8 bits, in other words, dunno if it would actually be necessary to include 8 bit variants of the graphics for the 8 bit blitter, but like I said, even this would be better than tars.The easiest way around this only adding the 32bpp graphics to the grf when it also has the 8bpp sprites, but then you'd be right back where you are now with png files.
So long as the format would be supported by the dev team (meaning there would be no outcry about yet another content format), and BaNaNaS, and the user experience would be at least as seamless and straightforward as with NewGRFs, then I don't object.What do you think about adding a small meta-information file to each tar, giving each tar a name and description. That way 32bpp tars could be enabled/disabled the same way as newgrf files, with the exception that it'd be safe to change them in a running game (if that's technically possible).
I get what you're saying but don't really get why you're saying it. We've pretty much been through that. If you're unclear on something, take up specifics, so I can attempt to explain my POV.This should really be answered more detailed before continuing with step 3. If the post by GeekToo isn't reason enough, "what's the purpose of this patch? Why would it be useful?" is a question that would surely be asked (if not implied by it's description) before it's included in trunk. If a disadvantage is only found out then because you didn't think it though beforehand, it could be a lot of wasted time.
Just a tar with sprites doesn't really have enough information to be managed via a gui in-game, the only way to select a set would be through the filename of the tar. The fact that no work has been done on this so far may very well be that none of the devs has enough interest in it to start coding. As I said before, including a simple metafile (look at the .obg/.obs files for the graphics/sound base sets for example) could solve the "not enough information to show in gui" part, then you'd just need a gui to enable/disable sets. Adding 32bpp graphics as optional replacement to grf files (ie add 8bpp graphics but also 32bpp (extra-zoom) graphics in the grf) would be another option, then they would be used as soon as a 32bpp blitter is enabled and the grf is active. After either of these options is implement it could be included in bananas. Support for extra zoom level graphics in bananas is a complete different matter, as that would mean uploading content to bananas that isn't supported by the OpenTTD from openttd.org.Jupix wrote:Like implementing in game management for tars, incl. support in BaNaNaS? I always assumed that is out of the question, based largely on the fact that the format, despite it's inherent problems, is a well-established format of distributing our content, and still there hasn't been a whisper on supporting it in BaNaNaS, and no GUI for managing tars either.
Actually tars are ignored by the client, in the sense that when browsing directories a tar is read as just another subdirectory. So loading a png for every sprite is really one of the simplest formats the client could support. I do agree it's far from user friendly.If you mean why I think 32 bit gfx should go in GRFs, specifically, then the answer is very simple. GRF is the de facto OTTD medium for graphics, and if we were to move on from the tar format, then GRFs would be the obvious choice for a replacement medium, as there would be no more confusion on what format aspiring artists need to learn, etc. Not to mention the simplicity of having to support only one format in the game client.
This would be an excellent first step that would also be useful in trunk.GeekToo wrote:1. ingame switch between 32bpp and 8bpp.
Ad 1. This requires both 32bpp and 8bpp content to be present on the players computer. I'm not sure whether an ingame blitter switch is possible, but an ingame change in the config file and a message to restart the game sure is possible
Before this can be implemented a decision need to be made about the format. Also it should be possible to enable/disable the graphics via the gui (see point 3), otherwise there would be confusion when they're downloaded but not working (for example no 32bpp blitter) or there is no way to disable them again from in game after downloading graphics.2. ability to download 32bpp contents ingame.
IMHO this is a very important feature to increase the usage of 32bpp graphics, together with 2. of course.3. enable/disable 32bpp tars/spritegroups in the gui
As I said in my previous post, this makes grfs with only 32bpp graphics impossible.4. multiplayer safety, 32bpp players and 8bpp players should be able to join the same server
Ad 4. Personally I think there is no discussion here: 32bpp or 8bpp is a client side matter only (I have not tried it for some time but I also think the EZ patch is MP safe, though it may be hard to find a server on exactly that trunk rev).
That seems like a common problem WRT to 32 bit gfx. Making our stuff as compatible (in a philosophical sense as well as the technical sense) with the existing graphics ecosystem is an effort to remedy that problem.Yexo wrote:The fact that no work has been done on this so far may very well be that none of the devs has enough interest in it to start coding.
Like I said, if the implementation and user-experience would be neat, and would address the problems we're attempting to solve here (including but not limited to shipping a game client with just a 32 bit base set and no 8 bit equivalents), I wouldn't object.As I said before, including a simple metafile (look at the .obg/.obs files for the graphics/sound base sets for example) could solve the "not enough information to show in gui" part, then you'd just need a gui to enable/disable sets.
If that's the way it has to be, technically, by which I mean it can't be solved by a couple of nights' programming, then so be it. But from my perspective, it's stupid to have to ship 8 bit graphics only to get the game client to boot, when the player clearly wants to play with 32 bit gfx only.Adding 32bpp graphics as optional replacement to grf files (ie add 8bpp graphics but also 32bpp (extra-zoom) graphics in the grf) would be another option, then they would be used as soon as a 32bpp blitter is enabled and the grf is active.
Getting EZ graphics on there is, in my opinion, a necessary step step towards trunk support for EZ.Support for extra zoom level graphics in bananas is a complete different matter, as that would mean uploading content to bananas that isn't supported by the OpenTTD from openttd.org.
I know how tars work. My points stand.Actually tars are ignored by the client, in the sense that when browsing directories a tar is read as just another subdirectory. So loading a png for every sprite is really one of the simplest formats the client could support. I do agree it's far from user friendly.
No, I don't think so. Correct me if I'm wrong, but all it does is make them network-unfriendly. And that's if we can't be bothered to program our way around it, making it so that one player can play with a 32 bit set and another with an 8 bit set (if a player's enabled GRF implements 32 bit graphics, ignore the GRF completely in determining client-to-client compatibility.)As I said in my previous post, this makes grfs with only 32bpp graphics impossible.
I don't think that will ever be possible. The baseset contains several sprites that are not really sprites, like pseudo-random data for the original map generatorJupix wrote:(including but not limited to shipping a game client with just a 32 bit base set and no 8 bit equivalents), I wouldn't object.
I don't see at all why the EZ patch depends on EZ-graphics on bananas. In fact the EZ patch existed before bananas, would you say that it would be impossible at that time for EZ to get in trunk because there was no online content service?Getting EZ graphics on there is, in my opinion, a necessary step step towards trunk support for EZ.Support for extra zoom level graphics in bananas is a complete different matter, as that would mean uploading content to bananas that isn't supported by the OpenTTD from openttd.org.
What's actually happening here is: EZ graphics won't go on BaNaNaS before the patch is in trunk, and the patch won't be going in trunk before the content is on BaNaNaS. This goes for a lot of the other proposed changes as well. Stuff won't happen before EZ is in trunk, but getting EZ into trunk pretty much depends on those changes being implemented.
I completely agree till this point.Either of those has to happen in order for us to move forward, and I hope you'll agree that it's easier for us to implement the more transparent stuff first, like making additions to the GRF system (or making tars toggleable, if you prefer)
IMO this is the wrong way around, the patch should go to trunk before bananas support is implemented. Of course that depends on how it would be implemented, because if 32bpp graphics would go in grf files then there is no new bananas support needed.and implementing support for 32 bit content on BaNaNaS.
I wrote "impossible" there as a reaction to GeekToo statement:Jupix wrote:No, I don't think so. Correct me if I'm wrong, but all it does is make them network-unfriendly. And that's if we can't be bothered to program our way around it, making it so that one player can play with a 32 bit set and another with an 8 bit set (if a player's enabled GRF implements 32 bit graphics, ignore the GRF completely in determining client-to-client compatibility.)Yexo wrote:As I said in my previous post, this makes grfs with only 32bpp graphics impossible.
Even disregarding all that, suppose it really is impossible to make alternative graphics compatible between game clients. What exactly is the problem there? Isn't that exactly what happens when players get alternative graphics while staying in 8 bits? What about that behavior makes extending the system to 32 bits "impossible"? By which I mean making it work like I described in my post earlier.
GeekToo wrote:4. multiplayer safety, 32bpp players and 8bpp players should be able to join the same server
Ad 4. Personally I think there is no discussion here: 32bpp or 8bpp is a client side matter only (I have not tried it for some time but I also think the EZ patch is MP safe, though it may be hard to find a server on exactly that trunk rev).
Well, that pretty much breaks the idea for me. 32 bit gfx should be standalone. If that can't be done with tars, then tars are no good. (In principle, of course.)Yexo wrote:I don't think that will ever be possible. The baseset contains several sprites that are not really sprites, like pseudo-random data for the original map generator
That's not what I'm saying. I'm saying the 32 bit project needs to exist within the existing graphics ecosystem, not outside it as its own playground, for it to be as quick and painless a process as possible to get the patch into trunk. Getting the content on BaNaNaS now is part of that. Before the system existed, there were other considerations, which may or may not exist currently.I don't see at all why the EZ patch depends on EZ-graphics on bananas. In fact the EZ patch existed before bananas, would you say that it would be impossible at that time for EZ to get in trunk because there was no online content service?
Well, that's where we kinda disagree. Because by experience, I don't see you guys (dev team) giving the patch the time of day before it implements something that lives in the current graphics ecosystem. In theory, I agree that this shouldn't be the case - you devs have had ample time to review the patch and put it in trunk - but that doesn't appear to be how this really works.IMO this is the wrong way around, the patch should go to trunk before bananas support is implemented.
That's what I'm trying to say. And it'd be easy for the players to get their head around.Of course that depends on how it would be implemented, because if 32bpp graphics would go in grf files then there is no new bananas support needed.
Combine those points and it means players that uses the 8bpp blitter can't join a server where a grf with only 32bpp graphics is used.
Sorry, you're right. I was talking of NewGRFs. But I really don't see the point of changing the grf spec to allow 32bpp graphics in base set grfs but not in NewGRFs. Especially as the extra grf is a NewGRF.Jupix wrote:Combine those points and it means players that uses the 8bpp blitter can't join a server where a grf with only 32bpp graphics is used.
Please stay with me, it's probably my not understanding the underlying technology, but I just don't see the problem here. All the items in game are called from a GRF with an identifier of some sort, right? So if we don't change the identifiers, what difference does it make from a compatibility POV if the server has loaded a 32 bit base set, and the client an 8 bit one?
I see the problem in the case of NewGRFs but that's a whole another discussion.
Mostly, it would be an intermediary step between no 32 bit content in the graphics ecosystem, and all of it there. Implementing it soon would allow us to start working on the base set without having to change the delivery method halfway through the project if/when the GRF spec was revised. It may be that standalone 32 bit NewGRFs would be unsupported but I wouldn't mind, and it doesn't sound like a bad idea to me that 32 bit NewGRFs included 8 bit sprites to make them compatible. So long as the base set would be standalone.Yexo wrote: But I really don't see the point of changing the grf spec to allow 32bpp graphics in base set grfs but not in NewGRFs.
Having to include anything besides the content we specifically want to include is a problem in my book. If it was automatically generated, like Zephyris suggested, then I guess it would be sort of acceptable as a solution to a real, existing problem, but I'd prefer it if even that functionality was built into the blitter (if 32 bit blitter is selected, behave as normal, but otherwise convert stuff on the fly). If we had to include OpenGFX, it'd be even worse. Twice the likelyhood of bugs, and who's going to maintain that component of the set?I really fail to see the problem of including a 8bpp baseset in that package, you could take opengfx for examle but change the description/name so it can be selected as a separate baseset in the option while proving the graphics via the current tar-loading system. Are the 3mb really such a big problem if you hvae to download xxmb of 32bpp graphics?
Given this list of pre-conditions (which I agree with), they imply IMHO a few things:Yexo wrote:Combine those points and it means players that uses the 8bpp blitter can't join a server where a grf with only 32bpp graphics is used. In my opinion this is a big no-no. Possible solutions for this are to either make sure the 32bpp graphics in a grf are alternatives for 8bpp graphics or make 32bpp graphics a complete different thing that would be only enabled client-side, ie no grf but a similar gui for it.
- We want to keep the 8bpp blitter
- A grf will never be able to detect if the user has selected a 8bpp or 32bpp blitter, for exactly the same reason it isn't able to detect which baseset is used
- If a grf has only 32bpp graphics but no 8bpp alternatives for them, those graphics can't be shown for a client that runs with a 8bpp blitter
My experience is that "the 32bpp project" wants to push a lot of changes that would make OpenTTD not like Transport Tycoon, which basically goes directly against what OpenTTD stands for; it being a clone with improvements. Good examples of this are the odd scaled vehicles and angular corners, both which "had to be changed" for the "cause" of 32 bits graphics.Jupix wrote:Because by experience, I don't see you guys (dev team) giving the patch the time of day before it implements something that lives in the current graphics ecosystem.