#VR Rhythm Boxing Game "Punch Back"

1 messages ยท Page 1 of 1 (latest)

sour moth
edgy apex
#

This is dope! What's needed to play this?

sour moth
#

@edgy apex Hey, thank you! Do you mean the specs? I did not profile the game much yet. I play it with a RTX 3060 / Ryzen 5 3600 and it runs at 90-120 fps most of the time. Before release I will test it with a GTX 970 and a GTX 1080. I guess the 1080 will be the minimum (Beat Saber did not work well on my 970 - too low fps). Beside the PC you only need a VR headset and Steam ๐Ÿ˜‰

sour moth
#

I had an interesting encounter with a tester of my game. He tested the bootstrapper exe file of the packaged game on VirusTotal.com. On VirusTotal there are so named "Sigma rules". Those are rules made by the community for detecting viruses/malware and the tester accused me of trying to hack him, because there were critical warnings, named after popular malware:

https://www.virustotal.com/gui/file/8c60be8f7501bf86dee54bf88afdc309214a32b40b29a7c3083487377c0e9d54/behavior

There is no malware in my game, of course. I tried a lot to find out why those "Sigma rules" have been triggered, but didn't succeed. Then I created completely new projects, named "MyProject", "MyProject2", "MyProject3" and "MyProject4". For all of them I used exactly the same settings and build, I did not change anything. I got this:

1 medium: https://www.virustotal.com/gui/file/6247d81d042c151f8e256e5f3ef9fe45d456d53bebfb192433be2f54ac957737/behavior
1 critical, 2 high, 1 medium: https://www.virustotal.com/gui/file/5f703824677adb9c54eb04fe1e25a7f7dc312f7d1058b63f38e145029c53cc21/behavior
1 high, 1 medium: https://www.virustotal.com/gui/file/38fe64f26d861e2d28fcac5a2fff7b0f796f9bb2d60a2e0680684ca059b2ed82/behavior
1 critical, 3 high, 1 medium: https://www.virustotal.com/gui/file/bc5cfd4be07b6b304b1a82bc80ea25eb92d009542e5f6bba02cd0d125f305c89/behavior

Only changing ONE character of the project's name leads to completely different results, ranging from nothing (medium) to multiple critical and high errors ๐Ÿ˜„

From the VirusTotal support I got this answer: "Those rules come from community created rules, therefore they may not be precise. Those rules are shown as additional context. You can contact the owner of the rules to ask for more details."

So those "Sigma rules" are at the most very, very weak indications for infected exectuables and it makes no sense to try to make the game not trigger them. Nice to know!

sour moth
#

I uploaded a new video - playing with two modifiers: 150% speed and no blocking. I plan to implement a lot of modifiers to make the game kind of customizable for the player. But lacking of ideas a bit for now ๐Ÿ˜„

https://www.youtube.com/watch?v=BvPrSbFtnk4

Hi! Here I played Alex Grohl's King Around Here with two modifiers: 150% speed and no blocking! I must dodge all fists that are flying towards me. Time for some squats, this really made me sweat! :D

Do you have any ideas for more fun modifiers?

โ–ถ Play video
sour moth
#

VR Rhythm Boxing Game "Punch Back"

sour moth
#

I recently made some changes to make cheating harder, because my game uploads scores to a web server and I don't want to make it too easy to manipulate one's score. Maybe it's useful for you, too.

I used the free plugin SCUE5 (https://www.unrealengine.com/marketplace/en-US/product/scue4-anti-cheat-solution/) to hide sensible variables in the memory. It's easy to use, you simply have to use the FSafeInt, FSafeFloat etc. data types instead of int, float etc. Then it will not be possible anymore to search for the variables in the memory with software like Cheat Engine and to alter them. I used this for the score and some other sensible variables.

Furthermore: what if a hacker simply changes a level so that it will be easier or he get's more score? My levels are not packaged. It would be easy to do so. To make this impossible, for saving the high scores online I use as ID a combined MD5 hash of all relevant level files. So if the hash changes, actually the level is treated as a new one and the server creates a new high scores table for it. And the nature of MD5 hashes is that a little change in the files changes completely the MD5 hash. Just changing a single character in a level file will lead to a new high scores table - so it's not possible anymore to change a level to make it easier or to get more score.

Unreal Engine

This Anti-Cheat system implements a variety of techniques to invalidate any memory injection into your most important stored values during game runtime.

#

I had also to do something with the upload. If sending a request like this https://www.myserver.com/upload_score.php?score=1234&steamid=8721937213 a hacker could simply change the score and call the URL again. For this reason I use a MD5 hash again. It's something like myhash = MD5( score + steamid + salt ). The salt is in this case a "password", saved as FSafeString in the memory. Then I call https://www.myserver.com/upload_score.php?score=1234&steamid=8721937213&verif=myhash. On the server side it's also creating the hash MD5( score + steamid + salt) and compares the hash the client has sent with it. Only if they are the same, it saves the score. Now if a hacker changes the score in the URL he must also change the hash - but he doesn't know how it's created and he doesn't know the salt. So it will be much harder for him.

It's still not impossible to hack my game (I actually think it's impossible to make it unhackable), but it should be way harder now.