• std::function, Lambda and Testing

    While I begin to wrap up porting reliable.io from C to C++ for my PMO library, I wanted to touch on a quick testing technique I’ve used in Go for quite some time, which I realized I can also use in C++. Go interface{}, Mock Functions and Tests In Go we usually define our ‘Abstract Read more

  • UDP Reliability Part 3 (Reliable Endpoints to PMO)

    While translating reliable.io’s endpoints to C++ I quickly came to the realization that I will need to properly implement the messaging system. Right now it’s kind of spread out all over the place (in the socket thread, the main loop, and inside of flecs systems). To make the system cleaner and easier to understand it Read more

  • UDP Reliability Part 2 (Porting reliable.io)

    Welcome to the second part of getting UDP reliability into my engine. Now with connections complete, I need a way of tracking sequence ids between packets and store histories and all that jazz, but it turns out someone already did the hard work for me!. Of course I am talking about Gaffer on Games‘ reliability.io Read more

  • UDP Reliability Part 1 (Connections)

    I’ve started working on the reliability layer of PMO. Good place to start is with the concept of “connections”. Since we are dealing with UDP, this isn’t really a thing, as each packet is independent. I plan on building the entire reliability layer inside of flecs’ systems, queries and observers. All of this is done Read more

  • How (Third Person) Movement Works in UE5

    How (Third Person) Movement Works in UE5

    Before I rip out the movement code for the UE5 Pawn, I want to make sure I understand how everything works. Movement has a lot of implications for collision and general physics systems so knowing what happens after you send an input is critical. I need to make sure my custom collision system doesn’t fight Read more

  • Floating points, Movement, and Quantization

    Now that my library works in UE5, and I can communicate over the UDP socket to my server, it’s time to take a look at getting objects moving. As a refresher, clients send only their inputs and some additional metadata to the server. It’s usually a Really Bad Idea to send positional information because it Read more