Een technisch ontwerp is uiteindelijk niet alleen voor jou, als programmeur. Het is voor je team, en ook wel eens voor een persoon of groep waar je zelf niet samen mee werkt.
Dat betekend dat je ontwerp duidelijk moet zijn.
Maar hoe weten we dat? Natuurlijk kan je het ontwerp zelf al eens gebouwd hebben om aan te tonen dat het werkt, maar is dat betrouwbaar? Een top chef in de beste keuken van de wereld kan beweren dat al het eten makkelijk te koken is omdat zijzelf dat al eens gemaakt heeft, maar zou je datzelfde kunnen doen met alleen een geschreven recept waar de termen onduidelijk zijn en je geen hulp krijgt?
Voor technisch ontwerpen kunnen we een aantal vragen stellen aan onszelf over het ontwerp. Als er aan de hand van deze vragen al onduidelijkheden komen of de antwoorden zijn niet direct aantoonbaar, dan betekend het dat het ontwerp een grote kans heeft niet duidelijk te zijn voor een ander.
De vragen zijn als volgt:
<aside> 📋
Technisch Ontwerp Onderdelen
Je wilt vooral weten, wat zijn de benodigheden zodat dit een succes word? Hoe weet je dat het werkt? Bied het nieuwe functionaliteit aan het project, of zorgt het juist voor dat een groter geheel (zoals een gameplay loop) beter werkt?
Het ontwerp wat je maakt leid ergens naartoe; er komt een feature uit, een systeem of functionaliteit. Het doel van het ontwerp, dus.
Hier wil je er heel technisch naar kijken. Wat voor data, uit je project zal dit ontwerp nodig hebben. Wellicht heb je animation states nodig, of een Quaternion for rotaties. Misschien zijn een aantal Vector3’s wel voldoende. Maar dit kan ook een ander systeem zijn die al gebouwd is, een scriptable object, class of andere structuur.
Voor deze vraag moet je, met behulp van de vorige, kunnen aangeven welke exacte data types dit dan zijn. In het vorige vraagstuk hadden we het over Quaternions voor rotaties. Hier zouden we kunnen zeggen dat het type wat je nodig hebt dus een Quaternion is. Zolang je wel hebt uitgelegd waar deze data voor nodig is!
Uit het ontwerp verwacht je een resultaat. Dit kan een nieuwe staat zijn van een gedraags patroon, een spawner systeem voor monsters of misschien komt er een procedurele wereld uit.
Net zoals dat beschreven is wat voor types in het ontwerp gaan, kunnen we ook beschrijven in welke vorm ze er weer uit komen. Dit is data wat uitgedrukt kan zijn in GameObjects of een array van Vector3’s, bijvoorbeeld. Wat zijn de structuren waarin ze hier uitkomen? Als er geen duidelijk data of structuur type uit komt, dan beschrijf je hier ook duidelijk wat het dan wel berekend heeft.