I changed the design of the engine in the next version. In the new design, I have a separate main library of the engine. It includes memory allocators, containers, random systems, basic math functions, simple memory leak and memory corruption detectors, call stack systems, and crash reporters. All of these stuff are now simpler, more optimized, and more easy to use.
Developing a memory leak detector and the call-stack system is straight forward and you can find many samples on the net easily. But I was thinking of finding a solution to detect memory corruption. I found that it’s really complicated and it doesn’t suit me. My problem was not much trouble and there was no need to use complex solutions. All I needed was a simple system to check the array bounds. So my memory corruption detector does that for me fast and securely. Although it may not report all memory corruptions it still can do for many of them.
The new system can report memory status, and call stack with every value in every call when the system is running or crashed. When a crash happens on the application side, a message will be received and I check the flags and memory status to verify that the application closed unexpectedly and report memory statuses.
My next news title is about the network system. The new version has a basic network system based on the UDP protocol. The system has been guaranteed to create a connection that supports reliable data order, request for loosed critical data, merge and compress data packets, and connection speed controller to prevent data accumulation. The network system contains Client, Server, Connection, and socket objects which allows the developer to design any network paradigm based on the genre of the game.
In the Client/Server architecture, the Server object has been featured by broadcast capabilities to create a game session with a specified number of clients to join. The Client object can list the game sessions and let the player choose a game to join. Also, there are Connection objects and Socket objects to design the other network architectures as like as peer-to-peer connections, stars, mesh, etc. I wrote the network system recently and still need more optimization and debugging and probably we will test it on “Rush for Glory”.