MegaMek / megamek

MegaMek is a networked Java clone of BattleTech, a turn-based sci-fi boardgame for 2+ players. Fight using giant robots, tanks, and/or infantry on a hex-based map.
http://www.megamek.org
GNU General Public License v2.0
296 stars 282 forks source link

Saxarba Tileset Feedback #1919

Open HammerGS opened 4 years ago

HammerGS commented 4 years ago

Megamek 47.6

Received the following Feedback re the tileset. From Greekfire Fiddling around with the new 47.6 it strikes me that the "base" brownish scheme for the saxarba tileset might have its different elevations be a bit too similar in colors compared to the atmospheric tileset. It makes eyeballing the map a bit tougher, even when isometric is on. additionally, the atmospheric set and the saxarba set both have different approaches with their color gradients for elevation; the atmospheric set gets darker as the elevation increases, while saxarba does the opposite. It might be a good idea to have both use the same approach. anyway, thought i'd put that out there as some feedback re: the sets, especially with saxarba becoming the new standard

Saxarba feedback and question for us. I think I know what he means. My choice has always been 2d plus the couple of options that add occlusion and terrain shadows. That makes the color difference not very important. But checking isometric now and, as you can see in the problem.jpg attached, the difference in height hides the edge occlusion when the upper hex has a lower height, so if the color is similar there's no way to tell there's a jump in height there. The thing is that problem will increase even more if/when the limit of hex heights in maps increases, as the difference in tone would be even fainter. A possible solution would be to add an inner bevel to the upper edges of the hex when it's adjacent to a lower height, as in the attached sample. Not sure how feasible that would be from a coder perspective though :) By the way, are the grey rectangles used in isometric editable in any way? It would be nice if they could match the terrain texture.

Problem problem

innerbevel

SimonLandmine commented 4 years ago

Not sure about the idea of having the vertical edges match the terrain - if it's implemented, should probably be optional - some people use iso to make the contours more visible, and removing the white edges would reduce the accessibility of that. The bevels with iso is a good idea though, if it's not going to be a complete PITA to implement. (Like Saxarba, I'm 2D with shadows and occluded edges by preference.)

SJuliez commented 4 years ago

This could be solved with a tile-based addition. For this I added a new terrain type called incline and the respective images (that I would call work-in-progress). incline:1:3 corresponds to a drop in level towards the up and right-up directions: Incline_03 Now map makers just have to add this together with the correct exit settings to every hex.

Just kidding of course, MegaMek can add this terrain by itself and it could be entirely hidden in the MapEditor and left out of saved boards. The resulting board would look like this (not fake, it's implemented):

image

This would give us the opportunity to implement not just edge highlighting but actual incline gfx. In addition this system can also be applied to sheer cliffs (TO, p.39) by creating a respective terrain type, not hiding it in the Editor etc. which I could see if I can manage to implement.

SimonLandmine commented 4 years ago

I think I've got an RFE open asking for the Sheer Cliffs from TO, so I'd be happy to see those applied!

With regard to the 'incline edge', do you foresee that as part of the ISO implementation, or would it be visible in standard (2D) view as well? Or would it be an option (like dark contour edges and occlusion shadows)?

SJuliez commented 4 years ago

Since it is part of the tileset (such as saxarba's) the system is independent of the iso setting. Meaning it works with iso on and off. Overall it could be made optional (MM adding the incline terrain type can be toggled by an option).

SimonLandmine commented 4 years ago

Ah, so it's built into the tileset itself rather than the rendering of the tileset. That makes sense. And incline edges for non-Sheer Cliff hill edges could be interesting, too. [makes appreciative applause noise for all the work you're doing]

Saxarba1 commented 4 years ago

So, if I understood correctly, I just need to make the incline sprite for each possible edge combination, and for each theme in the tileset. There could also be a default neutral incline sprite set that works for any tileset that doesn't have one.

SJuliez commented 4 years ago

If you want to do that, then yes. In the simplest form the 6 sprites for each individual edge can be combined by just overlaying them as I have done for these screenshots. But of course it would also be possible to draw more complex ones for some edge combinations. As always in the tilesets, it is also possible to use more than one image for one edge combo with MM choosing the image randomly when the board is loaded.

I havent spent any effort on light direction in my nonsense edge images but the light should come from the top right.

If the images use color, then we will probably need one for each theme, that is correct. If they are transparent/light/dark only (like mine), then one set might be enough, I dont know (see screenshots).

I think that ideally the gfx should suggest a smooth transition between levels to differentiate from cliffs and they should be oriented towards use in the 2D mode, not isometric (viewed from straight above). I don't know how this turns out but when the transitions do look smooth then things might look much better without the edge shadows of my screenshots.

Currently the incline system only works for hex edges where the bordering hex is lower. It would be equally possible to enhance the system to add images to hex edges facing a higher hex. The burden is rather on the gfx side than on the programming side.

image

image

Saxarba1 commented 4 years ago

Awesome, can I have the version of megamek with this new terrain type implemented? That way I could test how different things look and make a first version of the inclines and cliffs.

As for the isometric view, I did some quick test to see how it could look, and to see if the height changes remained obvious. I suppose right now those grey polygons are vector graphics, but in a transition to sprites they should use some kind of tiling for heights greater than one or two. iso_test

SimonLandmine commented 4 years ago

Those are good Sheer Cliff edge graphics! And I knew I should have trusted your graphics skill when it came to making the height changes obvious. Apologies!

HammerGS commented 4 years ago

really like the edge graphics. Could something like that work for buildings?

SJuliez commented 4 years ago

@Saxarba1 Lovely, indeed my first thought was also that these are perfect sheer cliffs. The iso sides are indeed currently drawn as vector gfx but could be replaced by (stacked) images. Using the tile system for this will require a little thought and programming however.

Also, I think the height of the iso levels could probably be reduced a little since a level is only 1/5 of a hex diameter. This might make things easier.

Concerning the version, can you work with a branch?

@HammerGS I think it could work for the normal flex type buildings but I don't see how to do this with the SMV buildings. Also, such a system requires that the building gfx only shows the roof and nothing else. This is at least currently not the case with the SMV buildings.

SJuliez commented 4 years ago

In any case, Ive added the branch Incline_Cliff here. The incline gfx and tileinc file are in the images/hexes/incline directory. After opening the Map Editor, press the "Validate" button to see the edges.

Saxarba1 commented 4 years ago

Hey Simon, no need to apologize. I would've probably been way less careful if it wasn't for your warning :)

The reduced height of the iso level would also help in making the view look a bit more natural.

About the branch. No experience yet in using GitHub, but I will have a look at it tomorrow and harass you devs in Slack if I have any doubts.

Saxarba1 commented 4 years ago

Here's a zip with inclines and cliffs. There are two sets of each, one for the sides of the hexes that have a lower neighbor, and another for the sides that have a higher one.

Also, I hadn't noticed until now, but the iso level height seems to already be around 1/5 of the hex width.

And a question about the vector graphics. Would it be possible/feasible to fill a vector polygon with a texture instead of a plain color? To do something like the sample below, that uses a different texture for each side of the iso cliff. InclineCliffs.zip CliffVectorFill_s CliffVectorFill_sample CliffVectorFill_se CliffVectorFill_sw

SJuliez commented 4 years ago

Thanks, @Saxarba1 (The numbering for the lower inclines was a little off btw.) And it is possible to fill vector gfx with a texture pattern. That is something for later.

Now some images: cliff1 cliff2 cliff3 cliff4

SimonLandmine commented 4 years ago

Glad that that looks so good on non-iso! And yep, looking forward to Sheer Cliffs. Not just because of my desire to build cities with Paris- and London-inspired embankment roads with a sheer wall between them and the road above, but also because I've got some plans for landscapes with cuttings and embankments that would also benefit from them.

SJuliez commented 4 years ago

I like the top inclines a lot. The bottom ones less so; I think on the dark side they just imitate the shadows (and are unnecessary) and on the light side they are a little too much. Also the transition between light and dark is strange.

I'm not sure but it might look nice if the inclines fade to transparent when reaching the hex edge (meaning the hex levels out again at the hex edge, the incline is entirely within one hex).

SJuliez commented 4 years ago

Sorry I completely forgot to comment the images - in two of them I removed the lower inclines, keeping only those on high hexes.

Saxarba1 commented 4 years ago

Oops, sorry about the numbering errors. Yes, I was expecting some problems with the lower and top inclines transition between hexes. I like the version with only the top inclines better.

That said, even the top inclines may have some unexpected interactions with some other terrain layer. I mean they are quite wide and may look weird with some building, vegetation combinations, I'm not sure. If they do, I can modify them to be thinner.

The problem with fading the inclines to transparent at the edge would be the projected terrain shadow will probably look weird, since there would be a non-shadowed gap between it and the incline. It could work in the light sides though (north, northeast and southeast). There's also the height color change between hexes there, but it probably won't be noticeable.

HammerGS commented 4 years ago

Might have missed something, the sides on the image above is that generated on all maps or added as fluff?

SJuliez commented 4 years ago

@HammerGS: It gets generated on all maps. I only added the cliffs in the editor. @Saxarba1 : The shadow gap - thats very true... Do you think you can make a version that is a little thinner and fades out on the light side while staying dark on the dark side? I think a single image with all hex sides inclined would be enough to see how it would look.

Saxarba1 commented 4 years ago

Sure, here it is. InclineGradientSample It may look funny if the adjacent hexes have a very different height. Try it with some very low hexes next to the light sides.

I was toying with the overlay effect in Photoshop and it gives a nice light shadow effect that blends with any terrain that's below. It only creates a weird effect with very light hexes, but on the plus side a single black/white sprite works, not only for any tileset and terrain, but also can affect roads if it's applied in a layer over them.

Normal blending with dark hex: NormalDark Overlay blending with dark hex: OverlayDark

Normal blending with light hex: NormalLight Overlay blending with light hex: OverlayLight

Overlay with different terrains and bloodwolf grass tileset: OverlayBloodwolfGrass OverlayGrass OverlayPavement OverlayRoad OverlaySnow

Not sure if pixel color modification would be feasible/worthy from the programming side, just mentioning it just in case.

SJuliez commented 4 years ago

Thanks for the new image - I like that a lot! I'll edit it a bit and see if I can construct a bigger hill with it. Concerning higher elevations: iirc, anything beyond a two-level difference is pratically a cliff for game purposes (and considering this means at least 18m height over a distance of a few meters thats pretty much a cliff) so I could add cliff images instead of inclines wherever theres such a level drop.

Pixel-wise stuff is possible in principle but the problem is that currently the boardview where the hexes are drawn has no idea what the images are that it gets delivered. It just draws them. So when it gets three images it can discern from the hex information that these must be incline, road and trees but it can only guess which is which. So this would require programming. Doing this would however help with drawing the terrain shadows as well because for these it would also be better to distinguish between roads and trees.

SJuliez commented 4 years ago

Looks like this: (not a screenshot). I like it. test

Saxarba1 commented 4 years ago

Ah yes, I hadn't thought a big difference in height would be a cliff anyway. Let me know if/when you want the whole incline tileset done with these gradients.

That would be great if we could have different pixel blending effects. Fire sprites would look better if we could use a screen blending for example.

SimonLandmine commented 4 years ago

Given that 'sheer cliffs' have a technical rules definition, I'd possibly suggest not adding 'cliff' graphics for hex edges that aren't defined as 'sheer cliffs' for rules purposes, just for clarity (although I like the idea from a graphics standpoint).

(I'd always thought that the elevation change happens from hex centre to hex centre, or at least the first ten metres of each edge, rather than being restricted to a couple of meters at the edge, but I might have misread.)

Saxarba1 commented 4 years ago

Perhaps there could be three types:

SimonLandmine commented 4 years ago

That definitely sounds awesome! (Even if it might encourage my already 'bumpy' maps to become even more so!)

SJuliez commented 4 years ago

@SimonLandmine I just reread the rules and they don't say anything about from where-to-where an incline goes - which is probably wise as it would raise more questions than it would answer. Infantry (of all units!) cannot go up a sheer cliff without climbing. So it must be considerably cliffy. Now, but according to TO a vehicle can go down a 2 level sheer cliff and just require a DSR. So, I can jump down a 12m drop with my car or tank or whatever and when I grab the wheel tightly all will be well? I guess one must not think about it too deeply :)

Concerning the rules definition: I'd say that lvl3+ edges also have a clear rules definition. No unit that isn't jumping/flying/climbing can pass them. They just don't have a name. But I'm perfectly willing to try three different images. This will only require adding two more terrains (CLIFF_HIGH_TOP and CLIFF_HIGH_BOTTOM... yay!)

SJuliez commented 4 years ago

@Saxarba1 I'll put anything you draw on the map ;)

SimonLandmine commented 4 years ago

@SJuliez - I was working off headcanon there, rather than re-checking the rules, so thanks for the check! I presume most of the tank crews are ardent fans of The Dukes of Hazzard, then.

Saxarba1 commented 4 years ago

Awesome, I'll upload the sets here as I finish them. The high cliffs set already worked fine, so I have to modify the incline top set so it has the fading to transparent, and another set for 3+ height inclines that could look somewhat like this: HighInclineSample

And then do the same for the rest of themes :D

Saxarba1 commented 4 years ago

High_Incline_Top.zip Incline_Top.zip These include the default and all the themes. I think that's all but let me know if I forgot something or if there are any errors.

SJuliez commented 4 years ago

Thanks! Will look at it right away.

SJuliez commented 4 years ago

No errors. Love the lvl3 ones! I think I'll try reducing the shadow length of the first level of any incline so the low hills have only a tiny soft shadow edge. Will also have to do something about the ambient occlusion shadows, maybe restrict them to 3-lvl-drops (they're turned off in the screenshot). The shadows unfortunately go under the incline gfx. I have a fix for that in mind but it will be something more substantial in a later step.

Themes1

SJuliez commented 4 years ago

The snow light side low incline is a little on the soft side.

Themes2

Saxarba1 commented 4 years ago

Ooh, I like the result. It's great to spot the different kind of slopes without checking the height text.

I'll tweak the snow brightness and contrast.

Also, they will probably won't look as good in very high or low hexes. The thing is, if I tweak the brightness and contrast so the shadow sides are darker than the -3 level and the lighter sides are brighter than the 10 level, the result is not soft at all. An overlay blend would adapt better at any shade.

HammerGS commented 4 years ago

Damn...those look good. Nice work guys.

SimonLandmine commented 4 years ago

Those are really good! [fingers twitching] Looking forward to the implementation of 'Sheer Cliffs' now, to justify (to myself) using the art for those. (Not that I already have a penchant for making maps that hamper mobility in any case. [shuffles feet])

HammerGS commented 4 years ago

Once those cliffs are in we need a Thermopylae map. BattleTech ala 300 style. Or Black Watch versus 4th Amaris at the Fall of the Star League.

sagnam commented 4 years ago

This is fantastic! I backported it to my 0.46.1 branch my group uses. Outstanding work!

SimonLandmine commented 4 years ago

The Thermopylae idea was one that I'd already been musing about. :-D [pushes it further up the list]