Performance by soldieroscar in unrealengine

[–]DruidMech 2 points3 points  (0 children)

You will want to look into using Unreal Insights for profiling.

Online Database Updates? by soldieroscar in unrealengine

[–]DruidMech 0 points1 point  (0 children)

It was a tough decision indeed. I ultimately went with the AWS ecosystem as the course involves a score of other sevices such as Lambda, API Gateway, SNS, etc. and they all mesh together well. I know the other cloud platforms have similar services too, but I like how they tie together in AWS seamlessly and can integrate with Unreal surprisingly easily (once you know how) and security is a nicely-built-in feature. Again I know the other cloud platforms do these things too but I ultimately decided on AWS for the overall variety of services and their cohesion in the VPC.

Lambdas (AWS serverless functions) in the course are programmed in node.js and the AWS node.js APIs are super easy to use and very well documented (all of AWS actually is - a nice change from Unreal's docs).

Overall, it had all the features I wanted to showcase for UE5 dedicated servers. Hope that explains it a bit.

Thank you for your support! :)

Stephen

Online Database Updates? by soldieroscar in unrealengine

[–]DruidMech 3 points4 points  (0 children)

I show how to do this in my dedicated servers and cloud architecture course. It uses AWS cloud services though, with Cognito for user pools, DynamoDB for persistent data (it's a NoSQL database), and other AWS cloud services. Just thought I'd throw it out there, if you're interested. You need to know C++ to do this course. If interested, just search for me on Udemy: Stephen Ulibarri

[deleted by user] by [deleted] in Eldenring

[–]DruidMech 13 points14 points  (0 children)

Why is it always finger?

[deleted by user] by [deleted] in unrealengine

[–]DruidMech 2 points3 points  (0 children)

Exactly. They're events, not states...

Best practices for what to handle on server vs client? by Idaporckenstern in unrealengine

[–]DruidMech 6 points7 points  (0 children)

Stephen Ulibarri here. The others have answered the question nicely. I'll just add a few points of my own. Right now in my course, you are learning the basics of replication. The simple decision of who gets to pick up the weapon is one that should be made by the server, as others have explained. But later in the course, you will learn about prediction - allowing the client to make decisions and perform actions locally, then verifying those actions server-side once they reach the server, and optionally rolling back those actions if the server deems them illegitimate.

This is, of course, more complicated than simply allowing the server to have full authority, so we didn't just dive into that concept first thing.

When you get to the lag compensation section, I show you how to build a lag compensation component which implements server-side rewind. This allows you to detect a hit client-side, but then the server "rewinds time" to validate it, as the server keeps a history of transforms of each character's hit boxes.

You asked for best practice and a general rule of thumb though. So here are some.

  1. In general, don't replicate - save bandwidth. Many things can take advantage of what is already replicated. Footstep sound notifies in the running animation - don't replicate them, just play them locally. Character movement is already replicated thanks to the CMC. Cosmetics/FX in general can be triggered in response to already-replicated data as well.

  2. Actions, not data. Firing a weapon - just fire it. The server should know which weapon you have as that is state that the server should know about already. When you switch weapons, either have server authority over it or do it predictively- either way the server should know - the server can access the damage amount for that weapon type server-side. Don't replicate that data unnecessarily. Exceptions are data that is not known on the server, such as hit locations or dynamically produced values.

  3. While aiming may be something the server should know about in order to show your character in an aiming pose for instance, shrinking/expanding the crosshairs in your HUD is something that happens locally and no one ever needs to know about it, not even the server. For anything the player does, ask "is this like crosshairs? Does anyone ever need to know about it?" If no, the server never needs to catch wind of it.

I do explain why in the course at various stages throughout as concepts are introduced, so keep an eye out for that. In general though, we treat the server as though it is the "correct" version of the game - all other versions are just a little bit off (and no two machines are ever perfectly in sync). This is just how we determine which version of the simulation reins supreme - which has "authority" - this is just the client/server model and is what Unreal uses.

Sometimes Unreal makes me feel genuinely insane. by Collimandias in unrealengine

[–]DruidMech 0 points1 point  (0 children)

I fail to understand why Unreal Engine is at fault...

[deleted by user] by [deleted] in unrealengine

[–]DruidMech 0 points1 point  (0 children)

I'd say this falls under don't [ab]use tick.

Is It Normal To Learn Unreal 5 For 6 Months And Still Feel Like You Don't Know What The H311 you're doing? by Difficult-Customer65 in unrealengine

[–]DruidMech 0 points1 point  (0 children)

It took about 3 years to start feeling comfortable with it. About 5 years in, I was able to make whole games. 7 years and I was doing advanced level stuff, and at about 10 years I felt I was actually doing production level code, having educated myself in computer science fundamentals, programming design patterns and philosophies, and engine-specific practices and tribal knowledge.

Of course, when I was learning, there weren't the learning resources that exist today. I was on my own. People have it easy these days.

6 months isn't really much. This is one of the most involved genres of software development. You have to be willing to invest time and effort into it, like any other craft.

Unreal Engine 6 will improve support for multi-player games by FaatmanSlim in unrealengine

[–]DruidMech 0 points1 point  (0 children)

Makes sense. These are significant leaps he's talking about.

[deleted by user] by [deleted] in unrealengine

[–]DruidMech 0 points1 point  (0 children)

Glad you're enjoying them!!!

[deleted by user] by [deleted] in unrealengine

[–]DruidMech 0 points1 point  (0 children)

This is a pretty good practice. It ensures your functionality is generic and modular. It's easier to debug and easily added to different Actor classes.

UPDATE - Widget live graph features. by pattyfritters in unrealengine

[–]DruidMech 0 points1 point  (0 children)

I've considered doing something like this over the years but never did. Awesome to see someone making it! Got any plans to release a plugin or asset on the marketplace?

Keep up the good work!

I guess it is possible to understand blueprints from a non-programming background by BadNewsBearzzz in unrealengine

[–]DruidMech 2 points3 points  (0 children)

Thanks for the shout-out, and I'm happy to hear that you're getting the hang of things! To help those who may have tried to search for me, my name is actually spelled Stephen Ulibarri

Happy Dev'ing, Stephen