Reducing Latency for User Input and Action Performed in Unreal Game !

  • Attachment : https://www.dropbox.com/
    Our product is kind of a game in the cloud, but actually game video is being streamed and played with video.js and on the web page with player you have interactive controls for the game being streamed
    We build our game in unreal engine, we can’t have a web game, because of graphics problem. HTML version of unreal engine isn’t very stable and we don’t want any Flash game too
    So making a web game, is not a solution
  • Basic idea about game now:
    There will be just a High Resolution Map, in which you can walk around walk around, with the help of AWSD , arrow keys, or mouse rest no any further functionality will be there
    Now what i mean by delay is… when a user perform any action
    Like you pressed W, it will move forward. Once you press the key, the input is read by game and it move but it is not moving instant
    It is moving after a delay of 3 seconds over desktop browsers and 12–15 seconds over mobile browsers
    For every input, like A, W,S,D or combination of those keys… some actions are coded that it will move it that direction only but whenever input is there, it move with a delay
  • Process going behind: Recording the screen using OBS, generating the URL, and passing that URL to HTML5 Player, and when input is there, it reads the CSV and based on that check the code for desired action and then perform. This whole process in going in backend
    So because of all those steps… a delay is there
    Here is the link :

Server Information: It is Amazon EC2, GPU server,16 GB ram
Things to do:

  • Calculate exact delay time at each phase, to have better idea what is the reason for delay.
    Private network between the 2 instances (Windows and Ubuntu)
    Reference tutorialhttps://aws.amazon.com/blogs/aws/classiclink-private-communication-between-classic-ec2-instances-vpc-resources/
    Remove CSV and have some way to read the user input and reading the action from the code itself. May be we can use web sockets for it.
  • To optimise any open source software like OBS, or create the software from scratch

Things to avoid: We can’t have paid softwares for some reason actually

We will allocate one user per one instance, so if 10,000 users or more will be online on our game, there will be 10,000 instances running, so it will be … single user, single instance
Now if we take paid software, we need to buy wowza license for every instance, which will add the cost too too much

Hi,
Why do you need such architecture? You want to be able to play in modern browsers or you want to change game at any time?