Just put it above the default route.
Routes are navigated in the order they are added. So by putting this route above the default route, it will be tested against the URL first. If it fails, the next route is tested.
// Your route here
// Default route here
If you need it to be optional, then you need to specify two routes. Put them in the order you want them to be checked and make sure your default route stays at the bottom. The default route can then act as a "fallback" for anything that fails.
You can't use a constraint for this.. there is no way for an optional colon character to be resolved. What I mean is.. the routing engine cannot deduce the Controller and "name" from a string such as "HomeGoldBishop
". Whereas, it can deduce it from "Home:GoldBishop
". You will always need something to fall back on like the default route.