servers.minetest.net statistics 10 days (25th Aug 2022 -- 04th Sep 2022) Only server list fetches were counted. General stats ------------- total: 1654401 IPv4 -> 1231241 74.42% IPv6 -> 423160 25.58% Browser -> 200122 12.10% Game -> 1454279 87.90% Game stats ---------- total: 754837 unique (by IP): 330158 Minetest (or identifies as such): 5.7 -> 3155 00.42% 5.6 -> 47508 06.29% 5.5 -> 69327 09.18% 5.4 -> 28672 03.80% 5.3 -> 7646 01.01% 5.2 -> 1534 00.20% 5.1 -> 8530 01.13% 5.0 -> 196228 26.00% 0.4.17 -> 37231 04.93% 0.4.16 -> 2013 00.27% 0.4.15 -> 1666 00.22% 0.4.14 -> 171 00.02% 0.4.13 -> 37930 05.02% 0.4.12 -> 8 00.00% 0.4.11 -> 1251 00.17% 0.4.10 -> 49 00.01% 0.4.9 -> 23 00.00% 0.4.8 -> 1 00.00% Third party (only those with >1000 total): KawaiiCraft -> 124825 16.54% KawaiiWorld -> 123437 16.35% MultiCraft -> 20588 02.73% Dragonfire -> 1998 00.26% Shpere -> 1344 00.18% other/unknown -> 39484 05.23% Note about 5.0: Close to 100% of these requests appear to be from an Android app built from a particular dev commit before the 5.0 release, making it incompatible with all servers no matter the version. Which app this is is unknown. It is suspected that the app doesn't even allow multiplayer and fetching the list is a code bug/accident. Note about 0.4.13: There seems to be a popular (new?) iOS app that is based on 0.4.13, since 96% of these are from iOS. Note about KawaiiCraft/KawaiiWorld: Version numbers suggest that these are based on old versions of the MultiCraft codebase and therefore (mostly) on Minetest 0.4.17. Note about MultiCraft: We cannot measure the actual userbase of MultiCraft, because version 1.5.0 (Sept 2019) and newer exclusively fetch its own server list. (found at ) Note about other/unknown: Technically some of these could be Minetest 0.4.7 or older, but that's unlikely. This section is mostly curl, wget and other programmatic requests plus the rest of irrelevant Android forks (about 40). Third party store links: KawaiiCraft unknown KawaiiWorld unknown MultiCraft Dragonfire Shpere ? Effective version distribution ------------------------------ based on prev. section 5.6 or dev -> 50663 06.71% 5.5 -> 69327 09.18% 5.4 -> 28672 03.80% 5.3 -> 7646 01.01% 5.2 -> 1534 00.20% 5.1 -> 8530 01.13% 5.0 -> 196228 26.00% 0.4.17 -> 285493 37.82% 0.4.16 -> 2013 00.27% 0.4.15 or older -> 41099 05.44% unknown -> 63414 08.40% series 5.x -> 362600 48.04% series 0.4.x -> 328605 43.53% Protocol versions ----------------- total: 709115 By maximum version: v40 -> 72735 10.26% v39 -> 33916 04.78% v38 -> 8554 01.21% v37 -> 1286 00.18% v36 -> 195647 27.59% v35 -> 0 00.00% v34 -> 0 00.00% v33 -> 136 00.02% v32 -> 302349 42.64% v31 -> 0 00.00% v30 -> 1099 00.15% v29 -> 0 00.00% v28 -> 2041 00.29% v27 -> 40386 05.70% v26 -> 322 00.05% v25 -> 68 00.01% v24 -> 1258 00.18% By supported range: v40 -> 122053 17.21% v39 -> 155969 21.99% v38 -> 164523 23.20% v37 -> 165809 23.38% (↥ 5.x series) v36 -> 195661 27.59% v35 -> 14 00.00% v34 -> 14 00.00% v33 -> 150 00.02% v32 -> 302499 42.66% (↧ 0.4 series) v31 -> 302499 42.66% v30 -> 303598 42.81% v29 -> 303598 42.81% v28 -> 305639 43.10% v27 -> 346025 48.80% v26 -> 346347 48.84% v25 -> 346415 48.85% v24 -> 42849 06.04% Note on the versions: The maximum of 0.4.17 is v32, the minimum of 5.0 is v37. Versions 33 until 36 were never released (dev builds only). ⚠️ Final note on versions ⚠️: Android apps of questionable quality distort these numbers a lot, e.g. the same survey under only Windows users puts the 0.4/5.x split at 2%/97%. Platform stats -------------- total: 712619 x86 -> 4338 00.61% x86_64 -> 154816 21.72% armv6/7l -> 94458 13.26% aarch64 -> 458928 64.40% ??? -> 79 00.01% Desktop -> 159754 22.42% Mobile -> 552865 77.58% Linux -> 474182 66.54% Windows -> 60610 08.51% Darwin -> 177395 24.89% *BSD -> 353 00.05% other -> 79 00.01% Note about Desktop vs. Mobile: All Linux ARM devices are counted as mobile *unless* their kernel version can be reliably identified as a desktop distribution. macOS on ARM can also be detected since it uniquely identifies as "arm64". Windows stats ------------- total: 60610 Windows 11 -> 10403 17.16% Windows 10 -> 39983 65.97% Windows 8(.1) -> 2609 04.30% Windows 7 -> 7373 12.16% Windows Vista -> 15 00.02% Windows XP -> 227 00.37% older -> 0 00.00% Mobile stats ------------ total: 552865 Android -> 378741 68.51% iOS -> 174124 31.49% iOS stats --------- total: 174124 iPad -> 86162 49.48% iPhone -> 87270 50.12% iPod -> 692 00.40% +======================+ | big pile of commands | +======================+ tail -n 4335000 /usr/local/nginx/logs/serverlist.log | grep "GET /list" > serverlist_10days.log wc -l serverlist_10days.log cat serverlist_10days.log | awk '{ if($1 !~ ":") print $0 }' | wc -l cat serverlist_10days.log | awk '{ if($1 ~ ":") print $0 }' | wc -l ## cat serverlist_10days.log | egrep -c "Mozilla|Opera" cat serverlist_10days.log | egrep -c -v "Mozilla|Opera" cat serverlist_10days.log | egrep -v "Mozilla|Opera" | ./wwwuniq.py game.log ## for v in $(seq 7 -1 0); do count=$(cat game.log | cut -d '"' -f 6-7 | egrep -c "^Minetest/5\.$v") printf '5.%d -> %-7d\n' $v $count done cat game.log | cut -d '"' -f 6-7 | egrep -c "^Minetest/0\.4\.17" cat game.log | cut -d '"' -f 6-7 | egrep -c "^Minetest/0\.4\.16" cat game.log | cut -d '"' -f 6-7 | egrep -c "^Minetest/0\.4\.15" cat game.log | cut -d '"' -f 6-7 | egrep -c "^Minetest/0\.4\.14" cat game.log | cut -d '"' -f 6-7 | egrep -c "^Minetest/0\.4\.13" cat game.log | cut -d '"' -f 6-7 | egrep -c "^Minetest/0\.4\.12" cat game.log | cut -d '"' -f 6-7 | egrep -c "^Minetest/(0\.4\.11|gUnknown)" cat game.log | cut -d '"' -f 6-7 | egrep -c "^Minetest/0\.4\.10" cat game.log | cut -d '"' -f 6-7 | egrep -c "^Minetest[/ ]0\.4\.9" cat game.log | cut -d '"' -f 6-7 | egrep -c "^Minetest 0\.4\.8" ## cat game.log | cut -d '"' -f 6-7 | egrep -v "^Minetest" | \ cut -d "/" -f 1 | sort | uniq -c | sort -n python3 -c 'import sys;print(sum(int(l.strip().split(" ")[0])for l in sys.stdin))' calc.exe ## calc.exe cat game.log | sed -rn 's|.*\?proto_version_min=([0-9]+)&proto_version_max=([0-9]+).*|\1 \2|gp' > proto.log wc -l proto.log ## for i in $(seq 40 -1 24); do printf "v$i -> %-7d\n" $(grep -c " $i\$" proto.log) done ## for i in $(seq 40 -1 24); do printf "v$i -> %-7d\n" $(awk "{ if($i >= \$1 && $i <= \$2) print $0 }" proto.log | wc -l) done cat game.log | cut -d '"' -f 6-7 | egrep "\(\S+ \S+\)\"" > newer.log cat newer.log | cut -d '(' -f 2 | cut -d ')' -f 1 | \ sed -re 's/i(Phone([6-9]|1[0-9])|Pad([4-9]|1[0-9])|Pod[79]),[0-9]+/aarch64/' | \ sed -re 's/i(Phone|Pad|Pod)[0-9],[0-9]/armv7l/' > archs.log wc -l newer.log ## cat archs.log | egrep -c "(x86|i[3-6]86)$" cat archs.log | egrep -c "(x86_64|amd64)$" cat archs.log | egrep -c "armv[67]l?$" cat archs.log | egrep -c "(aarch64|armv8l?|arm64)$" cat archs.log | egrep -c -v "(x86|i[3-6]86|x86_64|amd64|armv[678]l?|aarch64|arm64)$" ## cat archs.log | egrep "(armv[678]l?|aarch64)$" | \ egrep -v "^Linux/.*(-ARCH|-MANJARO|-raspi|-rockchip64)" | wc -l calc.exe ## cat newer.log | cut '-d(' -f2 | cut '-d/' -f1 | sort | uniq -c | sort -n calc.exe cat newer.log | cut '-d(' -f2 | grep "Windows" | cut -d '/' -f2 | cut -d ' ' -f1 > winvers.log wc -l winvers.log ## cat winvers.log | grep -c "^10\.0\.2" cat winvers.log | grep -c "^10\.0\.1" cat winvers.log | grep -c "^6\.[23]" cat winvers.log | grep -c "^6\.1" cat winvers.log | grep -c "^6\.0" cat winvers.log | grep -c "^5\.[12]" cat winvers.log | egrep -v "^(5\.[12]|6\.[0-3]|10\.0)" | wc -l cat newer.log | cut -d '(' -f 2 | cut -d ')' -f 1 | \ egrep "armv[678]l?|aarch64|i(Phone|Pad|Pod)" | \ egrep -v "^Linux/.*(-ARCH|-MANJARO|-raspi|-rockchip64)" > mobile.log wc -l mobile.log ## cat mobile.log | grep -c -v "iP" cat mobile.log | grep -c "iP" cat mobile.log | grep -c iPhone cat mobile.log | grep -c iPad cat mobile.log | grep -c iPod