Before concluding this chapter, it should be noted that collision is a very complex subject; there are many ways to script it that will work. Some approaches are better than others, and there will always be level designs and configurations that can cause issues, such as characters getting stuck, characters falling through platforms, shortcuts that break the flow of the level, and so on. Sometimes, the discovery of these issues won't even happen until the quality assurance phase of a project (if there is one).
To prevent too many surprises, it is important to know what systems will work best for the game that is being made. This can be done by designing the features as early as possible. This, of course, is easier said than done as there are many different scenarios and features that you will encounter when designing a game. Platformers, for instance, have a variety of features such as wall jumping, trampolines, ladders, iciness, and so on....