A few more technical questions

Discussion in 'Ember & The Unreal Engine' started by DeyjaVou, Aug 4, 2016.

  1. DeyjaVou

    DeyjaVou Emberite

    For lack of a better title.


    First, optimization. I don't necessarily mean only efficiency, I also mean cleaning up the engine as the game is developed. I don't know much about UE4, but I've heard in at least a couple places it's as notorious as Java is for memory leaks. I can't really say "Is UE4 the best option here?" because that's what we're working with, and in absence of that there really isn't a question to ask. I guess I'm just concerned about the amount of time and effort properly cleaning it up will take, and the potential ramifications of it not being done.

    Secondly, client-server trust.
    This really shouldn't even be a question to be asked, but when Long Deceased's The Division came out, a few friends and I got it to play together. And oh lord has the hacking gotten bad. Apparently at some point early this year, to my understanding, a switch was made to trust clients with position and damage/ammo values. There are people teleporting around the PvP zone blasting people with impossibly strong shotguns. It may have been cleaned up after I quit, but that was a while ago.
    Also, with Terraria, the client is trusted with a hilarious number of things. I won't take the time to explain, but if you've experimented with that game you'll know what I mean. Crafting recipes are little more than a spreadsheet, too easy to change values.
    This isn't as much of a question as it is a plea. I know almost nothing of the intricacies of client/server interaction, but what happened in The Division was pretty terrible. Everyone working on the game is pretty damn qualified, but in all likelihood so is the team at Ubisoft, and that still happened. Don't trust the client with stuff as crucial as position and damage.

    And let's find an anti-cheat that doesn't have an absolute crap reputation attached to it, if one exists.


    Come to think of it, the title is awful. These aren't even questions.
     
    Dzzel likes this.
  2. Zarkopafilis

    Zarkopafilis Member

    First off, java is not responsible for memory leaks, circular references to unsused/forgotten objects are mistakes of the programmers.

    Now, UE4 uses a different "kind" of C++. For example instead of using normal pointers (*), many time you will see programmers use a TSharedPtr , a TSharedRef or a TWeakPtr. (See https://docs.unrealengine.com/latest/INT/Programming/UnrealArchitecture/SmartPointerLibrary/ ). Memory leaks are harder to happen here because these kind of pointers/references are tracked and removed once unused. "Normal" C++ inside unreal is more prone to memory leaks when 'new' is used (the engine doesn't like it :p ). But once again , careful use can prevent that. Now let's move onto the long-term stability problems that may arise. Besides connection garbage and overhead (which may happen) - for example, a connection pipe gets dropped and gets forgotten after some hours of client uptime, the engine is in good form, cleaning up for itself. On the server side, well it depends. I don't think having a huge master server is a good idea. Better make sure there are smaller instances (ok,maybe some bigger ones for special events etc) that run for a few hours. Then, the player should seamless travel to a fresh one :).

    No need for such hardcore anticheat besides blocking hlsl code injection in order to do wallhacks. (I already answered it somewhere else :p )
     
    Sud Monkey and phoenix like this.

Share This Page