承办麻将世锦赛的前前后后之二十一: 技术准备之比赛结果汇总

— Max Ma

今天要介绍一下关于比赛的技术准备工作。

我指的技术准备主要包括比赛排位,比赛结果的汇总以及补充规则等。这里先谈一下我们是如何准备记录,收集,和汇总比赛结果的。排位和补充规则以后分别会讲。

我在十年前就开发了麻将比赛和选手管理的应用软件(https://mahjong.azurewebsites.net/),管理着所有参加过我们协会比赛的700多位选手,包括400多位加拿大选手,除了第一届公开赛,我们协会组织的比赛成绩都在这个系统了,包括线上和线下的,随时可以查阅核对。系统的主要功能有注册比赛,排位,结果输入,排名及各种查询,为我们组织比赛节约了大量的人力和物力,而且还确保了数据的准确性和持久性。这是一个网上应用程序,可以在世界任何地方登录,有几次比赛我就是远程管理的。

经过这么多年的使用,这个软件还是非常可靠的,对于世锦赛需要用到的所有功能,我也反复验证,很放心。但是还有以下两个问题,我没有把握:

1, 比赛结果需要人工输入,之前的比赛最多是17桌,世锦赛要处理60桌(我们最初的设想),不知道系统能否承受, 时间是否来得及,挑战很大。

2, 这个软件放在微软的云端,用的是免费的服务,分配到的资源有限,同时处理大批量数据时是否会卡, 甚至中断,心里没底。

为了消除后顾之忧,必须解决这两个问题。

对于第一个问题,我和分管技术的Jerry副会长商量了好多次,最后决定由他开发一个手机软件,用于记录每桌的比赛结果,比赛结束后,直接在手机发送到我的系统。同时,我开发一个RESTful API,接收手机发送的每桌比赛结果,并存入系统。这样就可以免去人工输入比赛结果这一步,大大加快了汇总的速度。我们协商了接口,就分头做了起来。为了配合新的手机软件,Jerry还设计了本届世锦赛专用的计分表,选手只需填写前三列表明谁和了,谁点了,多少番就可以了,其他的可以交给助理裁判和计分员来做。在手机软件里,助理裁判也只需要输入这三项内容,软件会计算各人的得分,又快又准。另外,为了防止有人故意提早或多次发送,我还规定好每局进行到1.5个小时后才允许发送,每局结束10分钟后停止,每桌只能发送一次,如果发送的结果有误,就交给汇总组进行人工改正。这样,第一个问题得到了妥善的解决。

关于第二个问题,我设计了两个办法。一是把世锦赛单独拿出来,做成一个独立的软件,数据库里也只有这一个比赛,也只有参加这一比赛的选手,这样可以减少运行所需要的资源,提高了速度和效率(https://7wmc.azurewebsites.net/)。是我做了一个Excel文件,作为汇总结果的备用方案,我把每一局的排位事前准备好,可以人工录入每桌的结果,设好公式和Macro自动产生个人和团队的排名。Excel方案与线上方案是平行的,需要同时做,这样万一线上系统出了问题,就可以平稳地过渡到Excel。所以在比赛期间大家看到有两个义工在汇总,他们在做两个不同的汇总,互相备份。

对这些应对措施, 我进行了多次反复的测试,直到满意为止。

这里我要多说一点,比赛期间团队成绩的发布出了一点问题,但不是软件的问题。新加坡的Project DSG团队有一个人无法参赛,所以他们只有3个人。义工在发布团队成绩时发现别的团队都是四人,只有他们是三人,认为按总分排名”不公“,于是自作主张,改为按平均分(软件有按总分和平均分排名两个功能)。这样Project DSG队一直排名靠前,我也没有去看过排名,一直不知道这件事情。直到第八局结束,我去验证才发现,并马上予以更正, 并立即跟新加坡团队作了解释并致歉。最后两局就一直按总分排名的。这一更正还是引起了新加坡选手的不满,赛后在网上开骂。我觉得错的在我们这里,骂就骂了, 但我很高兴能及时发现,也没有将错就错。

发表评论

邮箱地址不会被公开。 必填项已用*标注