mauserrifle / simresults
PHP 模拟赛车结果阅读器
Requires (Dev)
- phpspec/phpspec: ^7
- phpunit/phpunit: ^9
- dev-develop
- v0.20.0
- v0.19.0
- v0.18.0
- v0.17.1
- v0.17.0
- v0.16.0
- v0.15.0
- v0.14.0
- v0.13.2
- v0.13.1
- v0.13.0
- v0.12.0
- v0.11.0
- v0.10.0
- v0.9.2
- v0.9.1
- v0.9.0
- v0.8.0
- v0.7.0
- v0.6.1
- v0.6.0
- v0.5.1
- v0.5.0
- v0.4.0
- v0.3.1
- v0.3.0
- v0.2.6
- v0.2.5
- v0.2.4
- v0.2.3
- v0.2.2
- v0.2.1
- v0.2.0
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1
- dev-master
- dev-feature/persisting
This package is auto-updated.
Last update: 2024-09-23 06:06:22 UTC
README
Simresults 是一个使用 PHP 开发的开源、面向对象的库。它允许您读取赛车游戏的日志文件,并将它们转换为简单的数据模型,以便轻松读取这些数据。
该项目是网站 simresults.net 的核心,允许您上传您的赛车日志文件,并将它们转换为可读格式。上传的结果将被保存并公开,以便访客可以与他们的赛车伙伴分享。一个示例结果可以在 http://simresults.net/130529-X2g 找到。
该网站是一种服务,同时也是使用此库可以实现的功能的演示。此库不提供任何 HTML 模板或其他任何内容。任何“实现”都取决于您在自己的项目中进行,且不受任何框架的限制。
该项目由 Maurice van der Star 创建(2013)并维护。
请考虑 捐赠 以支持未来的开发。
还可以使用 Simresults 网站的远程结果 API。这需要较少的工作和编程知识。
- 网站: simresults.net
- Twitter(不活跃):@simresults 和 @mauserrifleNL
- 电子邮件: mauserrifle@gmail.com
- 捐赠: Paypal
- 赞助商: GitHub(请发邮件询问替代方案)
支持的游戏
Simresults 支持广泛的游戏
- rFactor
- rFactor 2
- Project Cars
- Project Cars 2
- Assetto Corsa
- Assetto Corsa Competizione
- Automobilista
- Automobilista 2
- Game Stock Car 2012
- Game Stock Car 2013
- Game Stock Car Extreme
- Formula Truck 2013
- RACE
- RACE 07
- GTR
- GTR2
- GT Legends
- RaceRoom Racing Experience
- BMW M3 Challenge
- F1 challenge 99-02
以下 RACE (07) 的扩展也应该可以工作
- Race: Caterham expansion
- GTR Evolution
- Crowne Plaza
- STCC - The Game
- STCC 2 - The Game
- RACE On
- Raceroom - The Game
- Raceroom - The Game 2
- Formula Raceroom
- GT Power
- WTCC 2010
- Retro
- Race Injection
- Volvo - The Game
请注意,Formula Truck 将被报告为 rFactor 游戏。
F1 challenge 和 GTR 的结果可能会缺少圈数。
Assetto Corsa(race_out.json)和 Raceroom 的结果可能只包含 1 圈。
特性
- 可以读取包含以下信息的完整会话:游戏,服务器,设置,赛道,参与者/车手包括交换,车辆,化合物选择,聊天,圈数/区域,燃油消耗,维修站信息,处罚和事故
- 提供额外的方法来获取特定数据,例如
getBestLap()和getBestLapBySector(<int>) - 提供辅助类以按时间排序圈数并将时间格式化为人类可读格式(
h:i:s.u) - 缓存重方法如
getLapsSortedBySector(<int>)。这对于拥有200+圈数的耐力赛结果非常有用 - API未进行单元测试
rFactor读取器
lib/Data/Reader/Rfactor2.php
- 支持rFactor和rFactor 2。也适用于其他由rFactor驱动的游戏:Automobilista、Game Stock Car 2012、Game Stock Car 2013和Formula Truck 2013
- 检测并修复位置数据(有时日志文件会因延迟/错误报告完全错误的位置)
- 检测人类和AI玩家使用他们的辅助工具(有时日志文件报告错误的玩家状态)
Project Cars服务器读取器
lib/Data/Reader/ProjectCarsServer.php
Assetto Corsa读取器
lib/Data/Reader/AssettoCorsa.php
- 数据有限。如果可能,请使用服务器日志。
Assetto Corsa服务器读取器
lib/Data/Reader/AssettoCorsaServer.php
Assetto Corsa服务器读取器 JSON
lib/Data/Reader/AssettoCorsaServerJson.php
Assetto Corsa Competizione
lib/Data/Reader/AssettoCorsaCompetizione.php
RaceRoom服务器读取器
lib/Data/Reader/RaceRoomServer.php
RACE 07读取器
lib/Data/Reader/Race07.php
- 也适用于以下游戏:RACE、GTR、GTR2、GT Legends、BMW M3 Challenge、F1 challenge 99-02及其所有扩展
- 检查并修复日志变化,如非零圈数和缺失圈数数据
iRacing读取器
lib/Data/Reader/Iracing.php
- 数据有限。只包含车手的最佳圈数。
要求
- PHP >= 7.3
- Composer(用于轻松安装和自动加载)
安装和示例
Simresults可以使用 composer 进行安装和自动加载。但当然,它也可以与任何 PSR-0 自动加载器一起工作。
Linux/OSX示例
将Simresults包添加到 composer.json 文件中
composer require mauserrifle/simresults:dev-develop
创建index.php
<?php
// Load code
require(realpath('vendor/autoload.php'));
// Path to the result source file
$file = realpath(dirname(__FILE__)
.'/vendor/mauserrifle/simresults/tests/logs/rfactor2'
.DIRECTORY_SEPARATOR.'race.xml');
// Get a reader using the source file
$reader = \Simresults\Data_Reader::factory($file);
// Get the first session. Note: Use `getSessions()` to get all sessions
$session = $reader->getSession();
// Get participants sorted by their position
$participants = $session->getParticipants();
// Get the driver name of the second participant
$driver_name = $participants[1]->getDriver()->getName();
// Get the best lap of the second participant
$best_lap = $participants[1]->getBestLap();
// Get the best lap of the session
$session_best_lap = $session->getBestLap();
// Format the gap between the two laps
$helper = new \Simresults\Helper;
$best_lap_gap = $helper->formatTime($session_best_lap->getGap($best_lap));
echo $best_lap_gap;
运行服务器
php -S localhost:8000
打开 https://:8000 并应该正常工作!
有关进一步使用,请阅读 lib 文件夹中的类代码。它们经过了仔细的文档说明。
赞助商
感谢以下赞助商对Simresults的支持!请访问他们 :)
错误
有错误或功能请求? 请打开一个新问题。
已知问题
缓存
某些类如Participant执行大量的缓存。因此,在调用排序方法之后更改任何值将是徒劳的。尚无缓存无效化方法(目前)。很可能永远不需要,因为实际上没有任何用例需要读取所有数据后更改值。
当编写读取器时。永远不要在参与者(使用缓存方法)上调用如getVehicle()等方法。在读取过程中重用您自己创建的对象(如$vehicle),以防止任何早期无效缓存。为此,对所有类型的对象都这样做。
圈数缺失
所有游戏的日志往往会缺少圈数数据。检查日志。
标记为RACE会话而实际上不是
RACE 07读取器检测到所有车手都是DNF时为预赛。这些日志文件中没有会话类型。在某些情况下,这种检测可能是不正确的。
会话日期不正确
GTR、GTL、F1 challenge没有时间戳或时区信息。因此,日期使用默认时区创建。
贡献
该项目旨在通过新功能和游戏支持进行扩展。请随意在GitHub上 fork Simresults 并提交拉取请求!
该项目使用PHPUnit和phpspec进行测试。如果您提供任何更改,请确保所有新的添加都已测试。
运行simresults测试
要运行测试,请使用以下命令
./vendor/bin/phpunit
./vendor/bin/phpspec run
许可协议
Simresults库是开源软件,许可证为ISC许可证。