原文:Mapping Better: Tips & Tricks to improve your work
Hello aspiring map modders!
Some of you have started mapping yourselves, and it's great to build some experience and make something you like to become a reality. But it's always a good thing to learn something new every day and improve your skills over time. This topic will show you tips and tricks from our experts that you can use in your map projects in the future.
The bulk of topic is split up in the following themed posts:
- Functionality: how you can make the map better for gameplay.
- Aesthetics: how to make your map look better.
- Performance: make your maps run better on any machine.
Posts will be updated from time to time with new information, and updates will be notified on this topic.
If you have some suggestions and comments, please let me know and post below.
Functionality
Functional design: how to plan your project ahead
== To be done ==
Curve radii
== To be done ==
Consistent curves and slopes
== To be done ==
Wobbly roads
== To be done ==
Banking
== To be done ==
Weaving lanes
== To be done ==
Trajectories
== To be done ==
Aesthetics
Road texture transitions
A road texture transition is defined as the point where the road changes from one texture to another. If you make such a transition, avoid at all costs hard, "unmarked" transitions. They look ugly and unrealistic. Try to avoid this by preventing that neighbouring road items have a different texture than the prefab they connect to. If for whatever reason you can't avoid it or you did this on purpose, "mark" the transition with i.e. "dirt_curb_01" or "road_grating_01", so it looks more natural.
Do note that the transitions on the new road templates are somewhat hard, but "marked". This is also a way to easy spot what roads are templated roads and which are not.
Road width transitions
A road width transition is defined as the point where the road changes physical width. This can involve a starting or ending lane or not. In general, a prefab should be used to deal with the width change. Also, the length of the prefab matters: the 30 meter width transitions should be avoided when you can, especially on motorways; the longer 60m transitions allows traffic to merge and exit at higher speeds, which is better for both the AI and the player. You don't want the AI to slow down to 30 km/h just to get into the exit lane.
In some cases, especially in cities, there are reasons not to use prefabs. For instance, when you want to make parking areas along side of the road. If you hide the sudden width transition with a curb, a sidewalk or something similar, this is generally accepted.
Road templates
Road templates are specialised for each country (or set of countries). Each road template comes with a number of looks and variants. Since there are only a few limitations of how you can set up the lines on the road template, you can get a much more accurate representation of the road markings compared to what you can do with the old road system. In some cases, the new markings are quite important in the case they communicate to the driver what to expect up ahead (like passing restrictions). For instance, the so-called "block markings" indicate exit lanes and tell the driver which lanes are going to split off. Or you can have special merging markings, which also let the driver anticipate on the upcoming road layout. Painted arrows (if this happens in real life too) can provide some extra guidance.
If you're using road templates, check if you applied shoulder objects! These are the parts that make the transition between the road and the terrain on either side. If you don't apply them, you might leave some physical gaps.
These roads usually come in sets per DLC. For aesthetic purposes, it's advised not to mix up these sets to keep your look consistent.
Bridge heads
The point where a bridge ends is called a bridge head. It's where the bridge meets the ground level road again. This can pose some difficulties at the connection of the two end, since it often leaves gaps. The classic way to solve this problem is to add walls to hide the gap. But it isn't the best way to solve this problem. If you have no space to solve this in a more elegant way, this is still an option. What you do have to avoid is to create unnecessary bridge spans or unnecessary long walls.
A better way to solve this problem is to use terrain items to fill up the gap. You can either slope the terrain down along side of an extended concrete bridge head or you curve it around the bridge head. This leaves a much more elegant result. An even better result can be achieved if you also add stamps with some bridge dirt, to make it look like the proximity of the bridge required some groundwork that may not be ideal for grass to grow.
Terrain textures
Terrain textures should be consistent and fluent. Hard edges should be avoided (same rule of road texture transitions applies here too). Either mark your edges (this only applies when one of the surfaces is a "hard surface" like asphalt) or use a smooth transition. Hard edges often look sloppy and messy and low-quality.
One other note is to keep an eye on your grass textures. Please keep your grass textures consistent within the same area.
Patching
Patching can have a nice effect on your roads to make them look older or more poorly maintained. However, this will create hard transitions. Therefore, use dirt curbs at the edges. Another tip is to make them based on bezier patches instead of asphalt plaza models. You have more textures to choose from with the bezier patches.
Triangle counts (TC) and Drawcalls (DC)
To keep an eye on performance, one must keep an eye on its indicators. Though the number of frames per second (fps) may be one indicator you can use, it differs greatly from system to system, and thus is unreliable to get consistent results across systems.
Instead, we look for system-independent indicators that always yield the same results. For this we us the Triangle Count (TC) and Drawcalls (DC). These numbers are shown on the top of the screen if you enable the mini-console with the console command "g_minicon 1". The TC keeps track on how many triangles are being drawn. The DC tracks how many texture shaders are being called to be drawn. The higher these numbers, the more impact this has on performance.
SCS and ProMods use different norms, since ProMods is meant for a bit more powerful computers than the minimum specs of ETS2. This is reflected in the maximum values of these performance indicators.
SCS maximum norms:
ProMods maximum norms:
You may have some peaks here and there that surpass these norms, but don't make large areas with such high values. There are ways to reduce both:
- Use LOD/low-poly objects. If an object is further away, you don't have to draw it in full detail.
- Use low-poly vegetation a lot. Don't hesitate to start low-poly vegetation at 30 or 50 meters from the road. Trees are quite "expensive" for both TC and DC, so making them low-poly helps a lot.
- Instanced objects, such as trees, detail vegetation and streetlights, use a lot less draw calls, since for these objects when the same material is used on another model, it will not make an additional draw call. You can have like 100 trees that all use 1 draw call for the same tree texture.
- Compounding objects will lower the number of drawcalls the same way instanced objects do; every time the same material is used within a compound group, it will be only called once.
- Set the drawing distance of small objects to low values. They may pop a bit, but not notably, but it does save quite some TC.
- Keep water reflections to a minimum; water reflections are expensive for you TC-budget.
- Use assets from the same asset set as much as possible (e.g. from a certain DLC). This will lower the strain on the texture buffer.
- Use terrain textures from the same set as much as possible. This will lower the strain on the texture buffer.
Underclipping
Underclipping is drawing terrain under visible terrain. This terrain cannot be seen, but it does affect performance. Avoid ludicrous amounts of underclipping whenever you can. Bezier patches and the Vertex Tool can help with reducing underclipping, especially when you have loop-shaped ramps.
Disabling instanced objects & finding gaps
== To be done ==
Cut planes
== To be done ==
Cheeky compound tricks
== To be done ==