Designing tables is fun!
If you want to store data where things are "nereby," you can do it with a graph (data structure). If you don't care about the specifics of nearby and only that a colony is nearby, you can just do this with another table. Do not do what you are trying to do (id_2, id_3, etc.) This is not a normalized DB and can lead to anomalies. A lot of people make this mistake the first time.
CREATE TABLE
Colonies (`id` int unsigned NOT NULL auto_increment, `name` varchar(255));
CREATE TABLE
Nearby_colonies (`a_id` int unsigned NOT NULL, `b_id` int unsigned NOT NULL);
So you have your colonies, in the colonies table. Then, for every nearby colony to that colony, you have an entry in Nearby_colonies that has a pair of IDs (order should not matter, but the names have to be different). This links the two colonies as Nearby colonies. Now one colony can have as many Nearby_colony entries as it likes instead of being limited to id_2, id_3, id_4, etc.
This also prevents anomalies from occurring because the relationship itself is stored for each colony, not just for one colony about another.
If you want to get even more specific and store the distance between the two colonies, no problem! Just add another field to Nearby_colonies to do that. Obviously the distance from colony a to colony b is the same in either direction ;P