Модераторы: Death_Morozz, null, Ale
электрик писал(а):Отметился уже во всех темах . А если серьезно то, один из наших сотрудников зная что я сейчас делаю сим решил то же поучаствовать, он фанат World of tank и по совместительству начинающий программист, в танках пакеты данных зашифрованы и я думал для него это не подьемная задача но, он таки смог вытащить данные о координатах, положении танка в пространстве и ускорении, какие еще данные нужны? Так ка это все делается достаточно долго спрашиваю пока я, а для написания полноценного плагина он уже сам тут будет воевать.
Ale писал(а):электрик писал(а):Отметился уже во всех темах . А если серьезно то, один из наших сотрудников зная что я сейчас делаю сим решил то же поучаствовать, он фанат World of tank и по совместительству начинающий программист, в танках пакеты данных зашифрованы и я думал для него это не подьемная задача но, он таки смог вытащить данные о координатах, положении танка в пространстве и ускорении, какие еще данные нужны? Так ка это все делается достаточно долго спрашиваю пока я, а для написания полноценного плагина он уже сам тут будет воевать.
В чем, собственно, вопрос? Для написания плагинов SimTools есть специальный API с примерами. Но я в любом случае могу рассказать буквально на пальцах, как это делать.
Первое - сам SimTools написан в бесплатной среде разработки VisualBasic (пакет VisualStudio 10.0). Соответственно и плагины разрабатываются в этой же среде.
Второе - данные из игры могут извлекаться самыми разными способами. Хорошо, если игра сама отдает свою телеметрическую информацию. Например LFS или серия DIRT. У них достаточно в конфигурационных файлах указать на какой сетевой адрес и порт передать данные, и программа начинает слать UDP пакеты определенного формата, которые мы (плагин) ловим и расшифровываем. Есть еще несколько разных способов получения данных, наисложнейшим из которых является ПОИСК нужных данных непосредственно в памяти процесса игры (когда в игре просто не предусмотрена выдача телеметрии наружу).
Третье - существует определенный "стандартный" набор данных, которые хорошо бы извлечь из игры. Собственно это ТРИ угла (крен, тангаж, рысканье) и ТРИ ускорения (продольное, поперечное и вертикальное). Смотри систему координат тут.
http://www.xsimulator.net/co-ordinate-system/
На основе этих данных в основной программе SimTools уже производится вычисление данных для моторов.
В общем, если интерес есть - пришлю примеры плагинов и можем коллективно сделать плагин для игры...
Mezmeraiz писал(а):Отсюда вопрос - можно ли рассчитать ускорение по координатам?
Mezmeraiz писал(а): В общем, как и сказал электрик, пакеты WoT зашифрованы Blowfishем, поэтому пришлось писать win32-отладчик и вынимать пакеты из клиента, в месте где они еще не зашифрованы (или уже расшифрованы).
Ale писал(а):Mezmeraiz писал(а):Ты прямо из сетевого трафика выкусываешь данные? А клиент стоит на компе локально? В принципе можно поискать данные в памяти процесса клиента. Но это уже совсем другая история...
Ale писал(а):Можно, конечно. Зная время и координаты можно найти скорости, а затем ускорения. Путь не очень хороший, но иногда приходится так поступать. Другое дело, что по хорошему ускорения нужны в "локальной" системе координат, а не в абсолютной. То есть нужен как минимум вектор положения машины в пространстве...
Mezmeraiz писал(а):Прогу доделал и добавил расчет скорости и продольного ускорения по координатам. Проблема вот в чем - так как пакеты входящие, расчеты зависят от соединения. То есть какой лаг, от него задержка, неправильно посчитанное время и как результат искаженная скорость и ускорение. То есть, допустим, танк разгоняется, ускорение идет - 0,3,5,7,8,9.. и вдруг лаг и вместо нужного "10" приходит "2" или "-5"(отрицательное число - торможение). Если передать это неправильное значение на симулятор, то будут неприятности в виде резкого рывка не в ту сторону (наверное никогда раньше этим не занимался). Посоветуйте, как минимизировать влияние нежелательных результатов. Я вот думал, может заносить данные в очередь из например 10 элементов и считать что то усредненное.
Ale писал(а):Mezmeraiz писал(а):Как ты производишь расчеты? Откуда берешь метку времени? Надо бы ее найти в пакете данных, тогда тебе на лаги будет наплевать, потому как данные в пакете будут соответствовать времени...
Mezmeraiz писал(а):Время получаю через System.currentTimeMillis(). В пакете время не нашел, только счетчик пакетов. Еще поищу.
Mezmeraiz писал(а):И если скорость выводится довольно стабильно, то ускорение колбасит временами ну совсем непредсказуемо. Его наверно нужно по другому считать..
Ale писал(а):Mezmeraiz писал(а):Время получаю через System.currentTimeMillis(). В пакете время не нашел, только счетчик пакетов. Еще поищу.
Да, в этом проблема. Лаг при такой ситуации очень плохо сказывается. Если в пакете времени не найдешь, то можно попробовать поступить иначе - предположить, что сервер передает данные через ФИКСИРОВАННЫЙ временной интервал. Тогда нужно вычислить среднее время между пакетами и использовать его как константу. Умножай номер пакета на дельту - получишь время отправки данных. Даже если некоторые пакеты вообще потеряются - не страшно.
1229: V = 0 A = 0
1230: V = 0 A = 0
1231: V = 0 A = 0
1233: V = 0 A = 0
1234: V = 0 A = 0
1235: V = 0 A = 0
1237: V = 0 A = 0
1238: V = 0 A = 0
1239: V = 0 A = 0
1240: V = 0 A = 0
1241: V = 0 A = 0
1247: V = 0 A = 0
1249: V = 0 A = 0
1250: V = 0 A = 0
1251: V = 0 A = 0
1252: V = 0 A = 0
1253: V = 0 A = 0
1257: V = 0 A = 0
1259: V = 0 A = 0
1260: V = 0 A = 0
1261: V = 0 A = 0
1262: V = 0 A = 0
1263: V = 0 A = 0
1264: V = 0 A = 0
1265: V = 0 A = 0
1266: V = 0 A = 0
1267: V = 0 A = 0
1268: V = 0 A = 0
1269: V = 0 A = 0
1270: V = 0 A = 0
1272: V = 3 A = 3
1273: V = 14 A = 22
1275: V = 22 A = 8
1276: V = 28 A = 11
1277: V = 31 A = 6
1278: V = 33 A = 6
1280: V = 37 A = 4
1281: V = 40 A = 7
1282: V = 42 A = 4
1283: V = 44 A = 4
1284: V = 45 A = 4
1285: V = 47 A = 4
1286: V = 48 A = 4
1287: V = 50 A = 3
1288: V = 51 A = 3
1289: V = 53 A = 3
1290: V = 54 A = 3
1291: V = 55 A = 3
1292: V = 56 A = 3
1293: V = 58 A = 3
1294: V = 59 A = 3
1295: V = 60 A = 3
1297: V = 62 A = 2
1300: V = 64 A = 2
1303: V = 67 A = 3
1304: V = 69 A = 4
1305: V = 70 A = 2
1306: V = 71 A = 2
1310: V = 73 A = 2
1311: V = 75 A = 5
1315: V = 77 A = 1
1319: V = 77 A = 1
1323: V = 77 A = -1
1324: V = 77 A = -1
1326: V = 77 A = -1
1328: V = 77 A = -1
1330: V = 77 A = -1
1331: V = 77 A = -1
1332: V = 77 A = -1
1333: V = 77 A = -1
1334: V = 77 A = -1
1335: V = 77 A = -1
1336: V = 77 A = -1
1337: V = 69 A = -17
1338: V = 58 A = -22
1339: V = 48 A = -21
1340: V = 38 A = -20
1341: V = 28 A = -19
1342: V = 19 A = -19
1345: V = 4 A = -10
1346: V = 0 A = -8
1347: V = 0 A = 0
1349: V = 0 A = 0
1350: V = 0 A = 0
1351: V = 0 A = 0
1352: V = 0 A = 0
1354: V = 0 A = 0
1355: V = 0 A = 0
1356: V = 0 A = 0
1357: V = 0 A = 0
1358: V = 0 A = 0
1359: V = 0 A = 0
1361: V = 0 A = 0
1362: V = 0 A = 0
1363: V = 0 A = 0
1364: V = 0 A = 0
1365: V = 0 A = 0
1366: V = 0 A = 0
1367: V = 6 A = 12
1368: V = 14 A = 16
1369: V = 20 A = 12
1370: V = 24 A = 9
1371: V = 28 A = 7
1372: V = 31 A = 6
1373: V = 33 A = 6
1374: V = 36 A = 5
1375: V = 38 A = 5
1376: V = 40 A = 5
1377: V = 42 A = 4
1379: V = 45 A = 3
1380: V = 47 A = 6
1381: V = 49 A = 4
1382: V = 50 A = 4
1383: V = 52 A = 3
1384: V = 53 A = 3
1385: V = 54 A = 3
1386: V = 56 A = 3
1387: V = 57 A = 3
1388: V = 58 A = 3
1389: V = 59 A = 3
1390: V = 61 A = 3
1391: V = 62 A = 3
1392: V = 63 A = 3
1393: V = 64 A = 3
1394: V = 65 A = 3
1395: V = 66 A = 3
1396: V = 67 A = 2
1397: V = 68 A = 2
1398: V = 69 A = 2
1399: V = 70 A = 2
1402: V = 72 A = 2
1403: V = 73 A = 4
1404: V = 65 A = -17
1405: V = 55 A = -22
1406: V = 44 A = -21
1407: V = 35 A = -20
1408: V = 25 A = -19
1409: V = 16 A = -18
1410: V = 8 A = -18
1411: V = 1 A = -14
1412: V = 1 A = -2
1413: V = 0 A = -1
1414: V = 0 A = 0
1415: V = 0 A = 0
1416: V = 0 A = 0
1417: V = 0 A = 0
1418: V = 0 A = 0
1419: V = 0 A = 0
1420: V = 0 A = 0
1421: V = 0 A = 0
1422: V = 0 A = 0
1425: V = 0 A = 0
1426: V = 0 A = 0
1427: V = 0 A = 0
1428: V = 0 A = 0
1429: V = 0 A = 0
1430: V = 0 A = 0
1431: V = 0 A = 0
1433: V = 0 A = 0
1434: V = 0 A = 0
1435: V = 0 A = 0
1436: V = 6 A = 12
1437: V = 14 A = 16
1438: V = 20 A = 12
1439: V = 24 A = 9
1441: V = 29 A = 5
1442: V = 33 A = 9
1443: V = 36 A = 5
1444: V = 38 A = 5
1445: V = 40 A = 5
1446: V = 42 A = 4
1447: V = 44 A = 4
1448: V = 46 A = 4
1450: V = 48 A = 3
1452: V = 51 A = 4
1453: V = 53 A = 5
1455: V = 55 A = 2
1456: V = 57 A = 4
1457: V = 58 A = 3
1458: V = 59 A = 3
1459: V = 61 A = 3
1460: V = 62 A = 3
1461: V = 63 A = 3
1462: V = 64 A = 3
1463: V = 65 A = 3
1464: V = 66 A = 3
1465: V = 67 A = 2
1467: V = 68 A = 2
1468: V = 70 A = 3
1470: V = 71 A = 2
1471: V = 72 A = 3
1472: V = 73 A = 2
1473: V = 65 A = -17
1476: V = 45 A = -14
1477: V = 25 A = -39
1478: V = 16 A = -18
1479: V = 8 A = -18
1480: V = 1 A = -14
1481: V = 1 A = -2
1482: V = 0 A = -1
1483: V = 0 A = 0
1484: V = 0 A = 0
1485: V = 0 A = 0
1486: V = 0 A = 0
1488: V = 0 A = 0
1489: V = 0 A = 0
1490: V = 0 A = 0
1491: V = 0 A = 0
1492: V = 0 A = 0
1493: V = 0 A = 0
1494: V = 0 A = 0
1495: V = 0 A = 0
1496: V = 0 A = 0
1497: V = 0 A = 0
1498: V = 0 A = 0
1499: V = 0 A = 0
1500: V = 0 A = 0
1501: V = 0 A = 0
1502: V = 0 A = 0
1504: V = 0 A = 0
1505: V = 0 A = 0
1506: V = 0 A = 0
1507: V = 0 A = 0
1508: V = 0 A = 0
1509: V = 6 A = 11
1511: V = 16 A = 10
1512: V = 23 A = 15
1514: V = 28 A = 5
1516: V = 33 A = 6
1517: V = 37 A = 8
1518: V = 39 A = 5
1519: V = 41 A = 4
1520: V = 43 A = 4
1521: V = 45 A = 4
1522: V = 46 A = 4
1523: V = 48 A = 4
1524: V = 50 A = 4
1525: V = 51 A = 3
1526: V = 52 A = 3
1527: V = 54 A = 3
1528: V = 55 A = 3
1529: V = 56 A = 3
1530: V = 58 A = 3
1531: V = 59 A = 3
1532: V = 60 A = 3
1534: V = 62 A = 2
1535: V = 63 A = 4
1536: V = 64 A = 3
1537: V = 65 A = 3
1539: V = 52 A = -13
1540: V = 37 A = -31
1541: V = 28 A = -19
1542: V = 19 A = -19
1545: V = 4 A = -10
1546: V = 0 A = -8
1547: V = 0 A = 0
1548: V = 0 A = 0
1549: V = 0 A = 0
1550: V = 0 A = 0
1551: V = 0 A = 0
1552: V = 0 A = 0
1554: V = 0 A = 0
1555: V = 0 A = 0
1556: V = 0 A = 0
1557: V = 0 A = 0
1559: V = 0 A = 0
1560: V = 0 A = 0
1561: V = 0 A = 0
Вернуться в X-SIMULATOR и RU-SIMULATOR & SimTools
Сейчас этот форум просматривают: Yandex [Bot] и гости: 84