This is my first 2D game engine written in C# and MonoGame
- I have developed a pathfinding algorithm A* with support for clearance based pathfinding and I have optimized it by using a binary tree (min heap).
- I have developed a way point system in which an AI would follow.
- I have developed an AI with line of sight.
- I have developed a simple rectangle and circle based collision system.
- I have developed a simple physics system that can give an object Speed, Acceleration, Velocity, Gravity, Drag and deceleration.
- Playing simple MP3 and WAV file formats in-game.
- I have developed a tile based rendering system that can read the world or map information from an XML file and draw it on the screen. I have optimized this system by only rendering what the camera can see and by placing all of tiles on one big texture to save on draw calls.
- I have developed a simple particle system on the CPU side.
- I have developed a simple ambient, point, directional light system using HLSL 5.0.
- I have developed a simple 2D animation system where you can read the animation information from an XML file.
- I have developed a simple font rendering system that supports kerning.
- I have developed a fully functioning in game UI system from scratch that can be scaled without distortion or degradation of the UI quality.
- The UI system includes Button, Textbox, Checkbox, Radio box, Menus, windows, Menu bar, Panels with scroll bars, Message box and Labels.
- I have developed a simple network system using the server/client architecture using both TCP and UDP.
- I have developed a simple registration and login system using PHP and or C# and SQL.
- I have encrypted all of the packets from the server and client side using the SHA256 hash algorithms.
- Connecting, downloading and uploading files to and from an FTP server.
- Writing and reading XML files.
- Compressing and decompressing archive file formats.
- Packaging all the game assets into an archive file format and reading them when needed without the need of decompressing the archive file.