菜*就不要打游戏好不好?

65 天前
 adolphlanglang

今天打瓦被虐成狗了,我把原因归到了网络波动上(就是不承认菜,不过网络质量确实不好,根本就是不能玩的程度),然后写了下面这个脚本简单测试下网络质量,大家看谁网络质量比较好测试一下。

下面是一组比较夸张的数据,但是游戏中也会出现。

21:32:18 样本数量: 60 | 平均: 111.24ms | 抖动: 55.75ms | 抖动率: 50.12%
21:32:20 样本数量: 60 | 平均: 112.78ms | 抖动: 55.60ms | 抖动率: 49.30%
21:32:22 样本数量: 60 | 平均: 115.65ms | 抖动: 55.04ms | 抖动率: 47.59%
21:32:23 样本数量: 60 | 平均: 117.59ms | 抖动: 60.08ms | 抖动率: 51.09%
21:32:25 样本数量: 60 | 平均: 115.69ms | 抖动: 56.60ms | 抖动率: 48.93%
21:32:26 样本数量: 60 | 平均: 119.04ms | 抖动: 57.91ms | 抖动率: 48.65%
21:32:27 样本数量: 60 | 平均: 118.50ms | 抖动: 58.77ms | 抖动率: 49.60%
21:32:28 样本数量: 60 | 平均: 115.43ms | 抖动: 58.23ms | 抖动率: 50.44%
21:32:29 样本数量: 60 | 平均: 111.57ms | 抖动: 54.64ms | 抖动率: 48.97%
import configparser
import subprocess
import time
import re
from collections import deque
import numpy as np
import os

CONFIG_FILE = 'config.ini'

def create_default_config(path):
    config = configparser.ConfigParser()
    config['monitor'] = {
        'host': 'baidu.com',
        'window_size': '60',
        'ping_interval': '1',
        'trim_percent': '0.05'
    }
    config['output'] = {
        'show_timestamp': 'true',
        'log_to_file': 'false',
        'log_file': 'jitter_log.txt'
    }
    with open(path, 'w') as configfile:
        config.write(configfile)
    print(f"[首次运行] 配置文件 '{path}' 已生成,使用默认配置。")

def load_config(file):
    if not os.path.exists(file):
        create_default_config(file)

    config = configparser.ConfigParser()
    config.read(file)
    return {
        'host': config.get('monitor', 'host'),
        'window_size': config.getint('monitor', 'window_size'),
        'ping_interval': config.getfloat('monitor', 'ping_interval'),
        'trim_percent': config.getfloat('monitor', 'trim_percent'),
        'show_timestamp': config.getboolean('output', 'show_timestamp'),
        'log_to_file': config.getboolean('output', 'log_to_file'),
        'log_file': config.get('output', 'log_file')
    }

def ping_once(host):
    try:
        output = subprocess.check_output(
            ["ping", host, "-n", "1"],
            stderr=subprocess.STDOUT,
            universal_newlines=True
        )
        match = re.search(r'(?:时间|time)[=<]?\s*(\d+)\s*ms', output, re.IGNORECASE)
        if match:
            return int(match.group(1))
    except subprocess.CalledProcessError:
        pass
    return None

def calculate_jitter_rate(delays, trim_percent=0.05):
    if len(delays) < 4:
        return None
    arr = np.array(delays)
    lower = np.percentile(arr, trim_percent * 100)
    upper = np.percentile(arr, (1 - trim_percent) * 100)
    trimmed = arr[(arr >= lower) & (arr <= upper)]
    if len(trimmed) < 2:
        return None
    avg_delay = np.mean(trimmed)
    diffs = np.abs(np.diff(trimmed))
    avg_jitter = np.mean(diffs)
    jitter_rate = (avg_jitter / avg_delay) * 100 if avg_delay != 0 else 0
    return avg_delay, avg_jitter, jitter_rate

def live_ping_jitter(config):
    delays = deque(maxlen=config['window_size'])
    while True:
        delay = ping_once(config['host'])
        timestamp = time.strftime('%H:%M:%S') if config['show_timestamp'] else ''
        if delay is not None:
            delays.append(delay)
            result = calculate_jitter_rate(list(delays), config['trim_percent'])
            if result:
                avg_delay, avg_jitter, jitter_rate = result
                line = f"{timestamp} 样本数量: {len(delays):2d} | 平均: {avg_delay:.2f}ms | 抖动: {avg_jitter:.2f}ms | 抖动率: {jitter_rate:.2f}%"
            else:
                line = f"{timestamp} 收集中... 样本数量: {len(delays)}"
        else:
            line = f"{timestamp} 丢包"

        print(line)
        if config['log_to_file']:
            with open(config['log_file'], 'a', encoding='utf-8') as f:
                f.write(line + '\n')

        time.sleep(config['ping_interval'])

if __name__ == "__main__":
    config = load_config('config.ini')
    live_ping_jitter(config)
3529 次点击
所在节点    随想
20 条回复
zhlxsh
65 天前
之前看到有些地区百度都🈲️ping 了
Hayashikawa
65 天前
菜*就不要打游戏好不好?
EndlessMemory
65 天前
什么运营商
Yuanlaoer
64 天前
团队游戏跟路人就是毒性很大。当年顶着 200 左右的 PING 也可以打 WAR3 战网。
Paradox4068
64 天前
我不敢玩团队游戏,就是怕有人压力我
comexb
64 天前
建议你把电脑 网络 外设 心态调整好再去打 这样就可以确定 你的确是菜🐶了😂
我 cs 玩了 2 千个小时 还是白银 一直冲锋枪 rush 游戏吗 娱乐就行了
wolfie
64 天前
@Yuanlaoer
记得当年 11 平台显示 玩家延迟,延迟高的直接踢,浩方忘记是否显示。
xzaf
64 天前
作为手残菜 X ,已经发誓不玩团队游戏。最多自己默默人机。
Yuanlaoer
64 天前
@wolfie 嗯,对战平台是有这个功能的。
我指的是对战,不是 dota 。纯粹 ping 高不会影响对手,除非是 ping 高 + 不稳定/丢包,才会也影响对手体验。
adolphlanglang
64 天前
@Hayashikawa 哈哈,我是自嘲的,网络正常点还是挺好玩的
adolphlanglang
64 天前
@Yuanlaoer 只要稳定其实还好,游戏内偶尔出现几百上千的延时会很烦躁
adolphlanglang
64 天前
@comexb 十分确定就是菜🐶 不过不耽误玩😂
adolphlanglang
64 天前
@zhlxsh 大概看一下随便找个主机就行,只是 ping 得时候会习惯的用百度
z919126592
64 天前
瓦在出新的这几个 mix 服务器之前,我这边联通移动玩固定丢包 10% 左右…当时还以为是性能或者本地网络问题,测试之后发现我这边啥问题没有换了个网就好了
Yuanlaoer
63 天前
@adolphlanglang 嗯,你这种情况,会烦躁太正常了。不过,偶尔跳 PING 不是正常现象啊,是服务器的问题还是你自己网络问题呀?
momoguo
62 天前
手残党 大概永远都无法 pvp 了
xubingok
61 天前
没关系,可以花钱找人带你啊.

dota 打了十几年了,操作已经跟不上了,现在找主播带,想躺平就躺平,想拼一把就拼一把,最后还能赢.情绪价值和游戏体验都给得满满的.
LaGeNanRen
61 天前
国内瓦刚出的时候,我发现一直有几十的丢包,说实话作为国内 top0 的游戏厂商,这个国服服务器表现我觉得不可能,但无论在家里还是网吧都是丢包。。。后来发现挂个 uu 加速器加速国服无畏契约,就 0 丢包了。不知道为啥。。。
layxy
61 天前
我就是又菜又爱玩,毕竟我电脑换了,显示器换了,键盘换了,鼠标换了,网络换了,甚至电脑桌也换了,没有其他原因了啊
Danswerme
59 天前
菜更要多玩,玩多了就能成为菜鸟中的老手了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1129440

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX