XONArchive
196 subscribers
536 photos
117 videos
93 files
127 links
Спонсор: @
Download Telegram
Forwarded from 𝐇ϟ𝐩𝐩𝐞𝐫 𝐒𝐚𝐧𝐝𝐛𝐨𝐱 🍁
это абсолютно рабочее сохранение...

Loading: output.gif
Frames : 60 (MAX_FRAMES=60)
Image : 480x288 px (80x144 monitors, 6x2 px/monitor)
Building save... done
Monitors: 11520 | MCs: 691200 | Timers: 60 | Total props: 702781

это видео в разрешении 480x288 на 15 секунд...
👍1🔥1
XONArchive
Сегодня со стороны нашего товарища Егора Канопанова я узнал интересное предложение которое имеет огромное право на существование. QuickConnectTest могла быть тестовой функцией подключения к серверу по ССЫЛКЕ на сам сервер. Данную ссылку может получить игрок…
И теория оказалась абсолютно верна.

Код работает, если вести туда "инвайт ключ" комнаты, вы сможете подключиться к ней.

Интересно, что сам инвайт ключ является зашифрованным названием комнаты. Схема работает так:

"имя комнаты"
↓ UTF-8 bytes
AES-256-CBC encryption
↓ bytes (ciphertext)
Base64 encoding
↓
HPonhiqNoFUaPdAyl/9PoYMWTcpRwofID+HBxRXT+mo=

А ключ шифровки это "HypperSandbox"
script.py
1.1 KB
Этот скрипт позволит вам самим создавать и расшифровывать "инвайт код".
Нужны тесты.


python script.py -encrypt "Room1234"

python script.py -decrypt "HPonhiqNoFUaPdAyl/9PoYMWTcpRwofID+HBxRXT+mo="
❤3
Forwarded from Егор Роге
Media is too big
VIEW IN TELEGRAM
Forwarded from Егор Роге
Егор Роге
Video
Новая система позволяет круто сжимать сейвы
🔥2
Forwarded from 𝐇ϟ𝐩𝐩𝐞𝐫 𝐒𝐚𝐧𝐝𝐛𝐨𝐱 🍁
This media is not supported in your browser
VIEW IN TELEGRAM
Видео на 35 кадров в разрешении 50х50 теперь занимает 37 тысяч пропов, в то время как видео даже меньше по размерам уже занимало более 60 тысяч пропов. В данном случае ситуацию спасают чёрные части видео которые абсолютно не изменяются, в этом и заключается вся оптимизация, если пиксель в кадре не меняется, для него можно не создавать монитор контроллер.
👍2
Замечены проблемы в работе мультиплеера в Hypper Sandbox.

OperationResponse 230: ReturnCode: 32767 (ApplicationArchived). Parameters: {} Server: NameServer Address: ns.photonengine.io:5058
UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object)
Photon.Realtime.LoadBalancingClient:OnOperationResponse(OperationResponse)
ExitGames.Client.Photon.PeerBase:DeserializeMessageAndCallback(StreamBuffer)
ExitGames.Client.Photon.EnetPeer:DispatchIncomingCommands()
ExitGames.Client.Photon.PhotonPeer:DispatchIncomingCommands()
Photon.Pun.PhotonHandler:Dispatch()
Если вам не ясна ошибка, эта ошибка говорит о том что приложение для которого был создан AppId мультиплеера было "Архивировано". Достоверно не понятно что это значит на самом деле, может у влада не продлена подписка, может он случайно удалил приложение на официальном сайте PhotonEngine, а может что-то ещё.
XONArchive
Если вам не ясна ошибка, эта ошибка говорит о том что приложение для которого был создан AppId мультиплеера было "Архивировано". Достоверно не понятно что это значит на самом деле, может у влада не продлена подписка, может он случайно удалил приложение на…
Данную проблему можно встретить при попытке присоединения к AppId Photon'а указанному в АПК (0a030a43-79e5-4bef-916d-da7e7fc885c6), но недавние исследования показали что на самом деле в самой игре он не используется.
Некоторые пользователи в 17:10 по МСК заявили о том что мультиплеер HypperSandbox возобновил свою работу, а через некоторое время снова прекратил. Никаких весомых доказательств этому нет.
🤔2
Вышло обновление Hypper Sandbox на платформе GooglePlay.
0.5.0.5
Вышло обновление Hypper Sandbox на платформе GooglePlay.

Исправлена работа мультиплеера. При первом запуске игры появился новый лог в консоли.

Измененные файлы:
==============================
AndroidManifest.xml
META-INF/ANDROID.RSA
META-INF/ANDROID.SF
META-INF/MANIFEST.MF
assets/bin/Data/1c42e6262b020b8428d194b9e9bab8d9
assets/bin/Data/3ed714263eaf95648b3f5153cebabc5f
assets/bin/Data/74b166a7f708e2f47960ac028952e1d0
assets/bin/Data/Managed/Metadata/global-metadata.dat
assets/bin/Data/b4cdce3afeb0ff64abf179fcd28c1448
assets/bin/Data/bd0f9da3d257da74ba5f7d0a9c94e401
assets/bin/Data/boot.config
assets/bin/Data/c2f4b15768dcd6a43a22aa09f3adf5e7
assets/bin/Data/dfe78c71a52d37c449e070b377b2f6a7
assets/bin/Data/globalgamemanagers
assets/bin/Data/level1
assets/bin/Data/unity_app_guid
lib/arm64-v8a/libil2cpp.so
lib/arm64-v8a/libunity.so
res/raw/cas_settings10r.json
#HypperSandbox

Браузерная версия игры

19 июня вышло обновление HypperSandbox на платформе GooglePlay, но почти сразу начались странности.

Ранее после выхода обновления для мобильных устройств, уведомление об обновлении ещё долго не появлялось, причиной тому была браузерная версия, пока браузерная версия не обновилась до последней версии, Влад не указывал на сервере новую версию игры. При запуске игры, она всегда проверяет информацию об актуальной версии игры с сервера, в случае если версия не совпадает, показывает информацию о том что доступно обновление.
В этот же раз, информация о новой версии игры появилась на сервере сразу после публикации обновления в GooglePlay и уже как 3 дня у нас нет обновления браузерной версии игры.

Так же, учитывая что произошло за последние два обновления, можно предположить, что обновлять браузерную версию влад вообще не будет. Почему? В версии 0.5.0.4 Влад отключил возможность входа в мультиплеер, после чего отключил работу AppId используемого для входа в мультиплеер, а теперь же, выпустил обновление где просто изменил AppId на рабочий. В таком случае получается, что если влад действительно не желает возвращать работу мультиплеера, смысла обновлять браузерную версию игры — нет, ведь последнее обновление как раз таки ИСПРАВЛЯЕТ работу мультиплеера.
👍1😱1
#HypperSandbox

Уникальный идентификатор объекта в сохранении всегда ставил всех в тупик. Достоверно было не известно каким именно образом игра создаёт уникальный айди, а он критически необходим для механизмов, в том числе системы проводов. Во время разработки HypperMapTool и ранее и сейчас, разработчики утилиты столкнулись с важной проблемой, неясность в работе уникального идентификатора, без него создавать сохранения с корректно функционирующими механизмами было невозможно.
Дело сдвинулось с места, когда во время разработки HypperMapTool2, разработчик (я) искал решение проблемы с уникальными идентификаторами, и после некоторого диалога с разработчиком первого HypperMapTool узнал, что уже давно были произведены исследования в ходе которых стало ясно, что уникальный айди генерируется на основе позиции объекта на трёх осях XYZ, и даже более, оказалось что формула давно раскрыта — это сумма квадратов позиции объекта (X² + Y² + Z²).
Сама по себе система не идеальна, из-за этой системы в случае если два и более объекта находятся на одних и тех же координатах, логично что система будет создавать для них абсолютно одинаковый UniqueID, что вызовет огромное количество проблем в механизмах.

Сейчас, при работе с исходным кодом Hypper Sandbox, было обнаружено как именно реализована система генерации уникального айди, это на самом деле не просто формула которую злой и глупый винни придумал что-бы усложнить жизнь разработчикам, а ни что иное как встроенная функция юнити:
UniqueId = position.sqrMagnitude;

В Unity эта функция просто возвращает квадрат длины вектора Vector3/Vector2.

В Python представлении это выглядит следующим образом:

import math

class Vector3:
    def init(self, x, y, z):
        self.x = x
        self.y = y
        self.z = z

    @property
    def sqrMagnitude(self):
        return self.x2 + self.y2 + self.z**2

    @property
    def magnitude(self):
        return math.sqrt(self.sqrMagnitude)

v = Vector3(3, 4, 0)

print(v.sqrMagnitude)  # 25
print(v.magnitude)     # 5.0
Forwarded from 𝐇ϟ𝐩𝐩𝐞𝐫 𝐒𝐚𝐧𝐝𝐛𝐨𝐱 🍁
Система сохранений, раньше я не обращал на нее внимания однако, в 0.0.6 используется простой формат XML, да, просто XML и все, вот пример
<Base>
<PropContainer2 Px="0.9342567" Py="0.3611857" Pz="3.980894" Rx="359.8035" Ry="-0.004774812" Rz="359.7474" Kinematic="False" />
<PropCharger Px="2.195698" Py="0.3190902" Pz="-5.725086" Rx="-0.00167932" Ry="-3.372844E-05" Rz="0.0001436614" Kinematic="False" />
<PropConsole Px="-2.604731" Py="0.3285127" Pz="-5.011275" Rx="-5.30641E-06" Ry="1.107209E-06" Rz="1.255005E-06" Kinematic="False" />
<PropCrateShort Px="-11.13906" Py="0.3839195" Pz="-1.275215" Rx="359.6001" Ry="0.001486935" Rz="359.4912" Kinematic="False" />
<PropTV Px="-4.907988" Py="0.3387871" Pz="-1.155343" Rx="359.5996" Ry="0.0004756409" Rz="359.6004" Kinematic="False" />
<PropToilet Px="-7.804338" Py="0.3319995" Pz="-5.249995" Rx="359.5996" Ry="0.002206195" Rz="359.6005" Kinematic="False" Hp="100" />
</Base>

И так понятно что Винни такой расход не понравился и в 0.1.2 он изменил формат на .sv хотя внутри был тот же xml, формат xml все еще поддерживался чтобы игроки плавно перешли, пример
<Base>
<PropContainer2 Px="0.9341735" Py="0.3172779" Pz="3.980888" Rx="-0.0007241748" Ry="359.9942" Rz="359.6834" Kinematic="False" />
<PropCharger Px="2.195697" Py="0.3190774" Pz="-5.725086" Rx="0.000343162" Ry="-7.74123E-05" Rz="0.0002890363" Kinematic="False" />
<PropConsole Px="-2.604731" Py="0.3270612" Pz="-5.011275" Rx="4.270416E-07" Ry="6.484799E-06" Rz="3.798579E-06" Kinematic="False" />
<PropCrateShort Px="-11.13906" Py="0.38392" Pz="-1.275222" Rx="359.6001" Ry="0.001365201" Rz="359.4911" Kinematic="False" />
<PropTV Px="-4.907989" Py="0.3388004" Pz="-1.155348" Rx="359.5997" Ry="0.0003009026" Rz="359.6004" Kinematic="False" />
<PropToilet Px="-7.80434" Py="0.3315421" Pz="-5.249993" Rx="359.5996" Ry="0.002079791" Rz="359.6004" Kinematic="False" Hp="100" />
</Base>

Формат XML Винни убил в 0.1.7 однако его все еще можно просто переименовать в .sv, а также в этой версии и появился современный и последний формат .svn
{
"map": "Base",
"props": [
{
"name": "Container2",
"uniqueId": 16.820816,
"position": {
"x": 0.934173465,
"y": 0.3172779,
"z": 3.98088813
},
"rotation": {
"x": -6.18133663E-06,
"y": -5.03811643E-05,
"z": -0.002762535,
"w": 0.999996245
},
"isKinematic": false,
"instantiationData": null,
"runtimeData": null
},
{
"name": "Charger",
"uniqueId": 37.6995163,
"position": {
"x": 2.19569731,
"y": 0.319077373,
"z": -5.72508669
},
"rotation": {
"x": 3.081498E-06,
"y": -7.05539549E-07,
"z": 2.50936523E-06,
"w": 1.0
},
"isKinematic": false,
"instantiationData": null,
"runtimeData": null
},
{
"name": "TV",
"uniqueId": 25.5379677,
"position": {
"x": -4.90798855,
"y": 0.338800371,
"z": -1.15534842
},
"rotation": {
"x": -0.00349337049,
"y": -9.557271E-06,
"z": -0.003487431,
"w": 0.999987841
},
"isKinematic": false,
"instantiationData": null,
"runtimeData": null
},
{
"name": "Toilet",
"uniqueId": 88.58008,
"position": {
"x": -7.80434,
"y": 0.331541836,
"z": -5.249994
},
"rotation": {
"x": -0.00349380518,
"y": 6.31110743E-06,
"z": -0.0034869425,
"w": 0.999987841
},
"isKinematic": false,
"instantiationData": null,
"runtimeData": null
}
]
}

В 0.2.4 .sv все еще открылся однако у меня пропали все пропы

0.4.9.1 теперь .sv окончательно умерла