So in regards to the previous post; This post is more about the technical part.
We switched from SharpDX Toolkit to MonoGame. This by itself was initially a pain in the ass since nothing matched what MonoGame wanted. Devicestates etc. everything was off. We concluded that if we really wanted to move we need to ditch the current project and restart from scratch and thus a few month of hiatus before we restarted Nimby under MonoGame.
A few things haven’t changed – We are still using Squid UI because it’s still one of the nicest and easiest UI engines to use. We did modify it quite heavily so it’s not rendered independant. Instant application of colors instead of ints, Custom rendering options, extra features in regards to texts (outlining etc.) and percentage scaling of the UI so that it will look decent on each resolution.
Particle effects are based on the Microsoft XNA example code… and heavily modified to actually work… which it didn’t and it caused quite a few hours of work.. so it’s based but it is not even close to Microsoft code anymore for sure.
Besides those pretty much everything else is self-made (either me or silentsouls, although silentsouls did pretty much all of the rendering components).
Things that are still going to be interesting are the AI layer – which is partially boilerplated already. We had navmesh pathfinding but it really didn’t work very well where are AI entities were running off the map thinking it was solid. Even with rendering the polymeshes it looked fine.. so something is wrong in SharpNav. After fiddling with it for a few days we decided to just go for our own A* pathfinding so we can implement in into our tile chunks.
Which brings me to our tiling method; Our maps are dynamically generated based on a grid (X,Y) with a start and end point defined. We define a few paths randomized so that it’s not a fairly straight road from start to end. For each node we then take a random tile that has the eligable exit nodes available. Each tile can consist of several chunks with each chunk having the option of having multiple exits. These exits need to align with neighbouring tiles to form the map.
The server determines the map, mapsize and which tiles are selected – the client just renders the information given.