Het vorige prototype had pathfinding. Zo konden mannekes hun weg vinden om gebouwen heen. Echter het querien en route berekenen was nogal erg zwaar. Ook was het nog niet mogelijk als je een gebouwtje ging bouwen dat hij zag dat de ruimte op de kaart al bezet was. Dit zijn allemaal probleempjes die ik hoop in dit prototype uit te zoeken. Zo ging ik op een gegeven moment op zoek naar een handige DB functie om distances uit te rekenen tussen elementen. Ik dacht als dit door de db te bepalen is, en ik kan daarop meteen sorteren, mooi!
Tijdens deze zoektocht kwam ik erachter dat MySQL en Postgres allemaal mooie functies hebben om ruimtelijke berekeningen te doen, speciaal toegevoegd voor de zogenaamde GIS applicaties (Geological information systems). Zo kan je dus blijkbaar allerlei points, lines en shapes opslaan in de db en dan querien welke andere elementen ze snijden, raken, overlappen etc!
Ik heb het begin hiervoor nu al geregeld, en ik gebruik nu de geo-ruby plugin en de mysql-spatial-adapter. Ook worden de coordinaten die opgeslagen worden nu als echt POINT type opgeslagen en de paden die worden gelopen als lines. Echte route berekeningen zitten nog niet in dit prototype, omdat units voorlopig door elkaar heen kunnen blijven lopen (later in gameplay testen kijk ik wel of dat echt bevalt of niet) en alleen gebouwen dus echt als obstakel op de kaart moeten zijn. Op dit moment nemen gebouwen nog geen fysieke ruimte in op de kaart, dus daarom zit route berekenen er dus ook nog niet in.
Maar deze spatial tools bieden wel heel veel potentie voor de volgende dingen:
- Snelle controle of er ruimte is om gebouwen te plaatsen
- Hopelijk optimalisering van route berekening
- Proximity detectie voor bijv langslopende mannetjes bij stationaire turrets (sight cirkels en pathing lijnen kruisen)
- Verkenning! het verkende gebied via een polygone vlek op kunnen slaan en steeds via unions stukken verkend gebied kunnen toevoegen!
Nou heb ik de coolste dingen dus nog lang niet in praktijk uit kunnen testen, maar deze set bied wel erg veel mogelijkheden. Ook na implementatie van deze zaken waar ik nog steeds geen grafische client voor nodig heb kan ik al goed server-side performance testen via cucumber scenario's en al performance gaan tunen en kijken of ik bij MySQL blijf of evt overstap naar Postgres.
Komende weken hopelijk mooie updates hierover!
