You can fill your polygon with regularily spaced points using this expression with geometry generator. Points are spaced 20 km (20000m, change this at the end of line 4 and 10 if needed). Be sure to have the data in a projected CRS with units in meters to get correctly spaced points.
However, you can't individually set the size of each point as you still deal with just one single (multipart) feature - so you can only set the size for all dots at once. To solve this, use the same expression as above with Geometry by expression to turn these points to actual (multipart) geometries. Convert the resulting layer to single parts using Multipart to singleparts.
Now you can individually style each point separately. Set a data driven override for the size of the symbol and choose assistant:
Now you can make what @CSK proposed: calculate the length from each point to the centroid of the polygon shape and divide 1 with this value (the get shrinking size with increasing distance). For this, you can use the following expression. Be aware: you could insert it directly to the
source field, but depending on how many points you have, rendering will get very slow and you even risk QGIS crashing. So it's better to create this value as an attribute called
size using Field calculator. Whatever option you use, the expression remains the same (replace
countries with the name of the polygon layer containing the country shapes and adapt the multiplication factor
*10 at the end to get reasonable numbers):
1 / length (
Now set the calculated
size field as source in the assistant, then load values for
Values from/to (double arrow icon) and set
Size from/To. Apply a transformation curve if needed and experiment with
Scale method/Exponent to get optimal results: