A game the size and complexity of Seeds of Magic would be very hard to make for a small indie studio like ours in a reasonable amount of time without a significant investment in tool development. So we sucked it up and spent the first six months developing some of the following tools to bring Seeds to life.
We decided on Unity as our development platform and have never regretted it. It has massive community support as well as a great company backing it. We could not have even attempted a project like this without it in the time frame we have set for ourselves. The great thing about Unity is how easy it is to add your own customized tools, like.
One of the first tools we built was a way to visually layout the world. Each map in Seeds is based on a grid. Each x,y grid position can have multiple layered objects assigned to it, for instance ground -> grass -> tree. Using the map editor we can pick various layers to work with and paint objects directly onto the map. We can also add waypoints and zones. Waypoints are simply predefined locations that can be used later on to send a character to, ie go to some waypoint in your office Mr. Mayor and hang out for awhile. Zones are painted areas on the map that are used to designate where something should happen. A forest zone might be used to limit where we dynamically create certain trees and plants or use lake zone to mark where you can go fishing.
Some objects, like houses, are bigger than a single grid space on the map. A house is composed of many grid spaces so we need to create a footprint for it which lets us define how we want the house to interact with the world. We can specify if a grid space is walkable/collidable, if it is tappable/clickable or if you can go behind the object and it should turn transparent.
This is what brings Seeds of Magic to life. All objects that exist on the map, every piece of grass or dirt, every tree or character can be assigned rules that govern its behavior. This allows us a lot of flexibility and to create some very fun and immersive action but at the same time manage that complexity. Every rule has two parts, facts and actions. A fact is some bit of information about the current state of the “world”, is it raining, what time of day is it, does Sally like Tom, do you have a love potion in your inventory. The second part of a rule is the actions ie the things that actually DO stuff to the world and objects and yes we built an editor for those as well.
All our tools work with each other. A footprint defined by the footprint editor shows up when placing a house down in the map. You can select a door on the map and then quickly add a rule to it without leaving the map, and then see that rule on the door without digging around in the rules editor. In the rules editor you can pick a map and waypoint or zone and assign it to Move To Location action for a character.
Hopefully this shed a little light on what goes into making a game like Seeds and a very small peek into some of its inner workings. We could easily spend hours going further into depth on these system, youtube video perhaps? If you are interested and would like to see more let us know...
Thanks for reading!