I understand and I agree - the visuals should support the gameplay. Visual cues (cliff = unwalkable) and supporting the magic circle (holding up the illusion of the game / experience) are critical components of that! In that sense Mellow Shallows is a terrible example overall - there are no cliffs and those that do exist are walkable , haha. That was part of the original map however, this is just a remaster.
Everything that you mention (thank you for that) is certainly possible with the techniques I use now! It really helps with understanding where to take things to - right now the world machine file is quite basic and it can do with various more masks to communicate various pieces of information (visual cues such as cliffs, shores, elevations via color coding, etc).
So in this case - the cake can be made and eaten .
I'm experimenting next on a LOUD map (another Supreme Commander community) that resembles springtime (melting snow) - I'll try and 'encapsulate' this idea of visual cues in that map. Once that is done I start with a map for Sanctuary.
(edit) As an example with a different style:
Rainmakers with (top) and without (bottom) a map-wide normal map
The visual cues are not 100% incorporated here yet - I'm working on it all .
@nine2 Thank you for your feedback!
About the river-delta thing: this is erosion and is in nature quite common!
Depending on the material the same patterns can be seen on a different scale - especially when things are sandy it really starts to show. I think that:
The cracks (as part of the normal maps) that you see are part of one of the stratum layers - I'll fix that. Its a bit too strong / repetitive. Therefore they are indeed too easy to spot. I didn't spot them underwater yet, thanks for pointing that out!
About the realism / clear at-a-glance: I don't think such a tradeoff is required. This is the second map where I apply all of these techniques to the fullest and one could easily add in additional information (such as where the beaches are) to make them shine just a tad different. All of that can be accomplished via masks (handmade or generated). in BAR (Beyond All Reason) they have a lot more extensive world machine files allowing one to generate all kinds of patterns: from bumpy grass, (small) dunes, rock formations and various other interesting patterns! What is required here is:
Especially the latter is important here - I am now experimenting with an 'adaptive' scale to allow some parts to have a higher resolution than others. More about that later .
An example that is already working is the Adaptive Moon map from Svenni. He uses the same techniques but then via textures provided by NASA or similar organizations - and it looks stunning!
I'll fix the off-map waves. Not sure what the last screenshot is but it appears Supreme Commander itself is making a mistake there.
About the trade-off realism / clear at-a-glance: what would make a beach instantly recognizable? Or a piece of mountain / unwalkable geometry?
Edit: and as an example, this is how islands in Anno 1800 are constructed:
They look clear and convey the message properly. Of course - it is a different game - but it still conveys the message quite properly. I use the same techniques, just at a lower resolution due to the limitations of Supreme Commander.
I agree with Ftx - editing a campaign / survival already requires:
You're free to edit Rainmakers Survival to your liking - there are already lobby settings (under 'advanced') in place to make it easier (more start up time, less units, less duration). And if that is not sufficient there are a few configuration files that interpret the options - you can edit those to your liking. Just make sure that you and your son have the same edited version or a desync will happen .
As an example of what can be achieved with these techniques:
Adaptive Moon by @svenni_badbwoi
Mellow Shallows by myself
A remaster of an old map made for a friend at that time - Mellow Shallows V11 is in the vault!
I'd love to hear your feedback on the aesthetics of the map. Make sure to add in your graphics settings as they can heavily influence how the map is perceived.
Edit: After making the screenshots I'd say the map is a tee-bit on the dark side .
@SpatialDude Try the map 'Rainmakers' - turn down the difficulty to easy (in the options menu). It is quite similar to what you'd expect on a low-medium level ranked game:
Depending on the difficulty the game lasts between 25 - 35 minutes, assuming that you survive . Once the easy version is do-able you are free to switch up to higher difficulties and experience the resource curve by surviving longer, more micro by having more units versus you, more understanding of reclaim because there will be more units to reclaim, etc.
Make sure you play it with two other people - it is designed as a three player survival. Put the best player in the most north spawn - that is the hardest spawn!
Generation tools, such as:
World Machine templates for this article:
The templates are designed to assist you in creating various map-wide content. They are as they are - merely a template. What the templates can do for you:
The actual work is still up to you, including:
This template is not magic and it still requires you to understand what it can do for you. The template is practically worthless if you have the basic edition of World Machine - you could at most generate a light and ambient occlusion map for maps up to 10x10 reliably.
World machine file: workflow-3026.tmd
Supports the following features:
All normal maps are automatically converted to the green-looking normal map format that Supreme Commander expects for its decals.
Overview of the 3026 version
World machine file: workflow-4016.tmd
Overview of the 4016 version
World Machine has an interesting interpretation of raw files. Instead of dynamically determining of a raw file is 8 or 16 bits it looks at its extension. A .raw file is considered to be 8 bits where as a .r16 raw file is considered to be 16 bits.
When you export the heightmap from any editing tool you'll have a .raw file. However, its contents are encoded in 16 bits. Therefore make sure to rename it to .r16 - otherwise World Machine will not be able to understand the raw file in question.
For a light map you can use a resolution that is the same resolution of the heightmap. That will produce sufficient results. You can view a comparison for a 20x20 (1024 heightmap resolution) map at:
For a normal map you need to use a resolution that is at least eight times the resolution of the heightmap. Anything lower will produce blurred and insignificant results.
It may appear interesting to erode your heightmap too much. This can and will cause issues in the long run where the normal map is no longer in sync with the heightmap in question. Therefore use erosion at your own risk.
World Machine tends to be memory hungry when generating its content. It can help a lot to do your final build in tiles. This significantly reduces the memory consumption of World Machine without affecting the end result. You can read more about it in Chapter 10 of the World Machine User Guide starting at page 70:
This is a professional feature and is therefore not available to everyone.
Whenever you use normal maps make sure that their axis are correctly represented. In the case of map-wide normal maps we need to flip the y-coordinate. This is done in the normal conversion node itself.
A selection of the 5th Nomad Mission without (top) and with (bottom) these techniques applied
A selection of Adaptive Skadi without (top) and with (bottom) the normal map technique applied
A selection of Salt and Pepper without (top) and with (bottom) the normal map technique applied
If you have interesting sources, approaches, opinions or ideas that aren't listed yet but may be valuable to the article: feel free to leave a message down below or contact me on Discord. The idea is to create a bunch of resources to share our knowledge surrounding various fields of development in Supreme Commander.
If you've used this resource for one of your maps feel free to make a post below: I'd love to know about it!
With thanks to Beherith from the BAR community for the opportunity to have an Q&A for two hours about World Machine
With thanks to @svenni_badbwoi for creating the template for World Machine Mt. Daniel 3026.
With thanks to @Balthazar for various discussions on normal maps and their interpretation in Supreme Commander.
@techmind_ the textures currently don't have a resolution to the power of 2 - I'd recommend doing that. E.g., make them 256x256 instead of 200x200. If I have a texture that is 4097 the load time is increased by 10 seconds, but if it is 4096 (a power of 2) then it costs almost no time .
I don't think these small sizes will affect it, but it can't hurt either.
Removing all the prints / logs will make it significantly faster too.
predictTimes = math.floor(ScanTimes - 1)
destination = currentCommand.position
xDiff = destination - ux
zDiff = destination - uz
xDiff2 = xDiff * xDiff
zDiff2 = zDiff * zDiff
squareDiff = xDiff * xDiff + zDiff * zDiff
xSpeed = math.sqrt(uBp.Physics.MaxSpeed * uBp.Physics.MaxSpeed / squareDiff * xDiff2)
zSpeed = math.sqrt(uBp.Physics.MaxSpeed * uBp.Physics.MaxSpeed / squareDiff * zDiff2)
I understand you are trying to predict where the scouts are going but square roots are expensive and should be prevented if possible. You can compute the vector towards the target point - normalize it (that is 1 square root) and then multiply that with the time you expect it to move in that direction. That would be your predictedX/Y and reduce the number of square roots / unit by 1. Personally I'd even go for a version without a square root, but that is for another conversation .
I'm not entirely sure but it appears you keep creating / removing labels. Did you test to see whether it is faster to keep them around and hide them / move them out of vision? Allocation is generally expensive and I think you're doing it a lot by creating / removing them.
if (r.path) then
-- CREATING? --
if (not r.label) then
-- last parameter in monitor pixels, need to change with zoom somehow =(
r.label = reclaim.CreateScoutLabel(view.ReclaimGroup, r.path, squareSize)
r.position = position
r.labelIndex = labelIndex
LabelPool[labelIndex] = r.label
labelIndex = labelIndex + 1
r.onScreen = reclaim.OnScreen(view, position)
if r.onScreen then
onScreenSquared[onScreenSquareIndex] = r
onScreenSquareIndex = onScreenSquareIndex + 1
labelsData[sX][sZ] = r
-- REMOVING? --
if (LabelPool[r.labelIndex]) then
LabelPool[r.labelIndex] = nil
labelsData[sX][sZ].label = nil
I'm not entirely sure what you are after - searched for replays, for the map itself, etc. Can't find it
Edit: the decals do blink slightly when I am in cam_Free mode - unusual angles are poorly taken care of by the engine.
Then I'm not sure what you are talking about - do you have a replay or a video that shows the problem? Edit: then I can add in a note / disclaimer for the guides on map-wide decals .
I may update the shadow map in the future - when I'm ready for a next iteration . For now I first want to setup the repository that holds the map along with the timelapse that shows the first ~6 hours of progress.
I understand what you are saying! I agree that 80mb decals may not be the approach to take - it is viable on a 5x5 map (20mb decals), experiment-worthy on a 10x10 but not applicable to 20x20 or larger maps.
About the decal blinking - that is only applicable once you reach the decal limit. This map has about ~100 decals on it. I only experience the blinking when I have 3000+ decals (Long John Silver gets pretty close). I'm not afraid of blinking! Svenni did found some bugs when you use the cheat window that can cause the map-wide decals to disappear. But that is a very niche situation and I'm okay with that .
Some mountains do look indeed a tee-bit strange of the shadowing! At some point the experiment was over for me and therefore I did not fix that. The goal was to experiment with what you can achieve with such decals and I personally think it can be quite impressive if used wisely! I am not experimenting with local decals, e.g., generated specifically for this map but then only 2048x2048 resolution wise and only used in some area. Much like other decals are - but then specific to the map.
Thank you for your feedback!
A new map enters the arena! Welcome to Root of Beta that attempts to experiment with the latest techniques in making maps. Including but not limited to the following:
Root of Beta
There is a timelapse of the first 8 hours of the process in the make. You can expect it next year .
The mass values in the last screenshot is not as much as it seems - I've taken two times the square root of their original values. E.g., the Monkey Lord is not worth 15K but only ~300.
What is the purpose of the mod?
Having that information ready in the lobby is not trivial - the lobby is 'disconnected' from the client. If I recall the best we can do is generate a .lua file that represents the (un)ranked maps and use that information in the lobby. I think this has been done before for another feature to check if a map is out of date.
I'd like to note that besides a player-stream it may also be interesting to have a development stream of some kind. Whether this is for maps, mods, a PR for the faf-code or the client / backend - they are all an essential to faf and they are interesting to see too .
Yes - it is a new version of the same mod. Make sure to uninstall it first if it doesn't allow you to install
@Lu7ky I already had a fixed version on my local storage - uploaded it. It contains:
I hope to see a game or two - it would allow me to continue the development! As without testing things become a bit of a gamble.
Fun fact: this mod was supposed to replace the built-in version
A nice surprise to see the King of the Hill mod in here!
I'll fix the points-thresholds for tech unlocking not being correct tomorrow .
@Psions please stop - having a proper objective argument about anything is only more than fair. You can use replays to show case some situations, you can use your own mods to show others. Luckily the forum is more than just the balance section and Dragun and Biass made a guide on it for this situation:
Any community, whether that is as small as FAF or as big as a country, will largely operate on facts. I hope you too can appreciate that. Without it everything would just hop from one extreme to another.